100 Commits
Author SHA1 Message Date
Seth Morabito 995b372f55 Update README with Codeberg links 2026-03-25 13:16:52 -07:00
Seth Morabito 47c87aac56 Update README for high-dpi 2025-04-13 11:38:33 -07:00
Seth Morabito 3a59dedc29 Update README and pom.xml for release 1.5.0 2025-03-30 15:28:32 -07:00
Seth Morabito 7268766cd6 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.
2025-03-30 15:18:00 -07:00
Seth Morabito 2284535b7f Fix #17: Correct disassembly 2025-03-15 15:46:50 -07:00
Seth Morabito 963526621d Maven build update
- Bump to version 1.5.0-dev
- Update dependencies
- Fix broken Symon homepage URL
- Fix maven xsd URL
2025-02-13 16:36:50 -08:00
Seth Morabito c317544e7b Address IntelliJ warnings
This commit addresses a large number of IntelliJ warnings
that have been left hanging around for far too long.
2025-02-13 16:05:42 -08:00
Seth Morabito ecd4bbbd9a README formatting fix 2023-11-18 10:50:07 -08:00
Seth Morabito a537328852 Minor README update 2023-11-18 10:46:55 -08:00
Seth Morabito 4975fca506 Missed a README update for v1.4.0 2023-11-11 08:20:49 -08:00
Seth Morabito 199d96c025 Prepare release 1.4.0 2023-11-11 08:15:35 -08:00
Seth Morabito 0c026e38dd By default, do not halt on BRK (#14)
This change introduces a new command line flag, '-b', that cause the
simulator to halt on the `BRK` instruction. By default, however, the
simulator will no longer halt on `BRK`.

As before, this behavior can be toggled in the preferences at run-time.
2023-11-10 09:11:24 -08:00
Seth Morabito 5e56627f32 #13: Move cursor backward on ASCII Backspace 2023-10-31 08:28:26 -07:00
Seth Morabito 5a25750f46 Clarify how to load ROMs in README files 2023-07-23 10:16:36 -07:00
Seth Morabito cda9a218af Merge pull request #6 from Screwtapello/irq-disabled-at-reset
Make the Processor Status register match a real 6502 at power-on.
2023-02-03 16:38:06 -08:00
Seth Morabito e210a40639 Use correct Mockito package 2023-01-12 16:56:28 -08:00
Seth Morabito 0bad9912ce Repaint Video window at 30fps
A bug caused the video window to repaint only when the cursor was
blinking. This meant that if the cursor was disabled, the window would
never update!

This change removes the repaint logic from the cursor blinking timer,
and instead puts it into its own periodic timer callback that runs
independently of cursor blink.
2023-01-11 13:31:22 -08:00
Seth Morabito b36b442b14 Cleanup some IntelliJ IDEA warnings
Cleaning up some warnings for the first time in many eons.
2022-12-15 09:44:53 -08:00
Seth Morabito 5f8f743f7d Update for 1.3.2 2022-03-08 14:36:59 -08:00
Seth Morabito 4ce8bc86de Update pom.xml
- Switched from maven-assembly-plugin to maven-shade-plugin
  for final packaging
- Updated maven-jar-plugin to 3.2.0
2021-09-25 10:46:36 -07:00
Seth Morabito 4644fe9b55 Update junit and mockito
- JUnit has been bumped to 4.13.2.
- Mockito has gone from 1.10.19 to 3.12.4, and now compiles correctly
  on OpenJDK 16 using Maven 3.8.
2021-09-24 09:39:00 -07:00
Seth Morabito 655bbb3ab0 Merge pull request #26 from sethm/dependabot/maven/junit-junit-4.13.1
Bump junit from 4.12 to 4.13.1
2020-10-13 14:45:47 -07:00
Seth Morabito 087ba28b82 Force metal look-and-feel
* On Linux GTK+, the small text fields in the Status Panel displayed a
  large inner margin, cutting off text. This change forces Java to use the
  Metal look-and-feel for these fields, which forces no default inner
  margin.
2020-09-01 10:48:17 -07:00
Seth Morabito 8edca5d595 Update link in README 2020-05-21 15:01:34 -07:00
Seth Morabito 105a09067f Fix README for 1.3.1 2019-10-12 14:58:16 -07:00
Seth Morabito 08efd81be3 Merge branch 'master' into 1.3.branch 2019-10-12 14:55:43 -07:00
Seth Morabito 0aeb97bb56 Add new options -cpu and -rom 2019-10-12 14:54:05 -07:00
Seth Morabito d466a21b3e Fix README screenshots (again) 2018-07-09 14:00:32 -07:00
Seth Morabito 31d1f7c5e1 Update screenshots 2018-03-01 19:21:56 -08:00
Seth Morabito 247f2ba2fc Update screenshots 2018-03-01 19:21:21 -08:00
Seth Morabito 922810b34b Update POM for 1.3.0 2018-02-25 11:46:02 -08:00
Seth Morabito 9d6791330d Update README 2018-02-25 11:45:16 -08:00
Seth Morabito 73c474d606 POM cleanup 2018-02-04 11:49:26 -08:00
Seth Morabito 8ffb130300 Merge pull request #21 from LIV2/master
Fix PHY/PLY Addressing mode
2017-08-23 10:47:12 -07:00
Seth Morabito 4f27e78940 Merge pull request #20 from LIV2/master
Add cycle counts for illegal NMOS opcodes
2017-06-06 19:47:24 -07:00
Seth Morabito 59f8ff1bc4 Merge pull request #19 from LIV2/master
Adds support for all 65C02 Opcodes
2017-06-06 07:10:02 -07:00
Seth Morabito 3c3aee30a7 Merge pull request #18 from izuannazrin/master
Interrupt bit support for ACIA
2017-06-04 18:53:44 -07:00
Seth Morabito 2e33756d49 Merge pull request #17 from LIV2/master
Memory window should not reset device registers
2017-05-26 09:38:28 -07:00
Seth Morabito 9cdd718e8d Fix Screenshots part two 2017-03-20 07:49:32 -07:00
Seth Morabito 5554acd29c Fix screenshots 2017-03-20 07:39:49 -07:00
Seth Morabito 5a2e057e69 Minor whitespace cleanup 2016-06-11 11:46:31 -07:00
Seth Morabito da88aadda2 Merge pull request #15 from LIV2/master
Correct BRK/IRQ behavior
2016-03-20 11:43:42 -07:00
Seth Morabito 88eba2cdcb Merge branch '1.2.branch' 2016-01-08 20:53:54 -08:00
Seth Morabito 0e49b197b3 Update README for 1.2.1 2016-01-08 20:52:02 -08:00
Seth Morabito b59fa63b63 Merge branch '1.2.branch' 2016-01-08 20:41:25 -08:00
Seth Morabito eff98118d5 Fix a few straggling Java 8-isms. 2016-01-08 20:40:23 -08:00
Seth Morabito ae5c5d48b2 Merge pull request #12 from maikmerten/master
mask all bits beyond bits 0 to 7 on bus reads to ensure no surplus bits ...
2014-08-23 16:59:56 -07:00
Seth Morabito 4796b65390 New ROMs. Better backspace handling. 2014-08-16 14:28:54 -07:00
Seth Morabito af12039686 Merge pull request #10 from maikmerten/master
Multicomp: SD card controller emulation
2014-08-15 13:51:26 -07:00
Seth Morabito ed1d5f999b Preparing for real implementation 2014-08-15 12:48:54 -07:00
Seth Morabito 742e3a1027 Split PIA into PIA/VIA6522 2014-08-12 15:06:08 -07:00
Seth Morabito 45f596e0d4 Rename VIA to PIA
Preparing to create a PIA interface and one or more parallel
IO device implementations.
2014-08-12 14:19:55 -07:00
Seth Morabito 4402a28e2b Update README 2014-08-12 14:05:19 -07:00
Seth Morabito 1a1d503abe Make PC editable 2014-08-10 14:24:43 -07:00
Seth Morabito eac387e472 Make StatusPanel aware of the Machine 2014-08-10 14:08:15 -07:00
Seth Morabito bb82db6672 Version 1.0.0-SNAPSHOT 2014-08-10 14:00:18 -07:00
Seth Morabito f675a6e462 Merge branch 'master' of github.com:sethm/symon 2014-08-10 13:54:50 -07:00
Seth Morabito ccae8905b3 Implement SimpleMachine 2014-08-10 13:53:04 -07:00
Seth Morabito 6b9295e72d Merge pull request #7 from maikmerten/master
invoke setBus() on devices added to the bus
2014-07-28 10:13:09 -07:00
Seth Morabito b1e1e75555 Reset WIP 2014-07-27 11:33:08 -07:00
Seth Morabito da3015defd Merge pull request #6 from maikmerten/master
minor typo fixes in README.md
2014-07-26 14:15:06 -07:00
Seth Morabito 2dc0078deb Release 0.9.9.0 2014-07-26 13:23:42 -07:00
Seth Morabito ac21b2c126 Updates for 0.9.9 2014-07-26 13:18:07 -07:00
Seth Morabito 4bb6d55fa2 Merge pull request #5 from maikmerten/master
Infrastructure for several machine types, Bus reworkings, 6850 ACIA and more
2014-07-26 12:46:45 -07:00
Seth Morabito 40c5397ed8 Faster refresh of memory window 2014-07-06 12:17:39 -07:00
Seth Morabito a7ea60d250 Bump version to 0.9.1.0 2014-01-26 01:29:09 -08:00
Seth Morabito 1bc8eda38d ACIA interrupt handling 2014-01-26 01:25:12 -08:00
Seth Morabito 76dcbd712a IRQ and NMI handling at CPU level. 2014-01-25 20:45:39 -08:00
Seth Morabito b6cc480919 Add NMI flag to CPU 2014-01-25 20:02:17 -08:00
Seth Morabito 0c5035fc56 Add interrupt flag to CPU 2014-01-25 19:53:53 -08:00
Seth Morabito 3d36cd5460 Improved screenshots 2013-12-29 18:43:29 -08:00
Seth Morabito 4a510b635e README updates, CRTC tests.
- Added more CRTC information to the README file.
- Added unit tests for the CRTC.
- Implemented register read for cursor position in the CRTC.
- Bundling a new version of jterminal that has correct backspace
  behavior.
2013-12-29 18:18:48 -08:00
Seth Morabito 070e7380fc Additional README updates 2013-12-28 23:55:55 -08:00
Seth Morabito 1493567410 README clarification 2013-12-28 23:54:33 -08:00
Seth Morabito ea4e05c905 Video screenshot and README update 2013-12-28 23:50:26 -08:00
Seth Morabito 070e9db813 Merge branch 'master' into crtc
Conflicts:
	src/main/java/com/loomcom/symon/Simulator.java
	src/main/java/com/loomcom/symon/devices/Device.java
	src/main/java/com/loomcom/symon/devices/Memory.java
2013-12-28 23:35:22 -08:00
Seth Morabito e9a9786135 Merge pull request #4 from Max840/master
New way of defining devices and a bit of optimization
2013-12-28 23:20:23 -08:00
Seth Morabito 3c68c63995 Additional refactoring 2013-12-28 23:14:21 -08:00
Seth Morabito 6dde766f5a Refactor of CRTC 2013-12-28 19:55:26 -08:00
Seth Morabito e7e3c77e3f First pass at Video window 2013-12-27 21:40:28 -08:00
Seth Morabito a5af522c5c Force no grid on memory window 2013-03-30 22:27:33 -07:00
Seth Morabito 6a50476bfe Step Count and Memory Window enhancements
Introduces several changes requested by Mario Keller. The simulator now has a variable step count that can be selected by a drop-down box on the main window. This change also displays ASCII characters in the Memory window.
2013-03-30 21:28:52 -07:00
Seth Morabito 2835deb00f Updating to version 0.8.4 2013-03-04 20:38:50 -08:00
Seth Morabito 4ccb7bec97 Tooltip Text and Minor Enhancements
- Added tooltip text to status panel.
- Memory is no longer cleared on reset.
- Console can now receive key-strokes even while the simulator is
  stopped (for single-stepping programs that require interaction)
- Updated screenshots with bug-fixed version.
2013-01-12 11:41:32 -08:00
Seth Morabito 34fb8940ae Fix swapped labels on status pane
The labels for the X and Y registers were swapped on the status pane.
How embarrassing!
2013-01-05 14:26:16 -08:00
Seth Morabito 4b240d9dfd Copyright update, acknowledgements 2013-01-03 17:36:27 -08:00
Seth Morabito da8250778e Bug Fixes and Copyright Date Change
The simulator now passes Klaus Dormann's 6502 Functional Test suite for
the first time.

Bug Fixes:

- PHP was not correctly setting the Break bit on the stack copy of the
  processor status, so subsequent PLA's would not set the Break status
  flag.

- The CPU had swapped NMI and IRQ reset vectors, so RTI was failing.

- BRK was pushing PC + 2 onto the stack, instead of PC + 1

- (Zero Page,X) addressing mode did not correctly wrap on zero page
  boundaries.

- The instruction table used for disassembly had addressing modes
  of LDA $B9 and $BD reversed. This did not affect behavior, only
  disassembly of these instructions.

Other:

- Updated copyright date for 2013.

- Started migrating old JUnit 3 style tests to JUnit 4 annotations.
2013-01-01 17:03:16 -08:00
Seth Morabito 92b61e4839 Memory Map in Readme 2012-12-31 12:46:38 -08:00
Seth Morabito e63fe9572e Screenshot updates 2012-12-30 23:28:56 -08:00
Seth Morabito 61b342ff01 Readme Update and Memory Window Look-and-Feel 2012-12-30 23:01:33 -08:00
Seth Morabito 9a00e21338 Adding Screenshots 2012-12-30 22:26:10 -08:00
Seth Morabito 3636e78435 Cleanup and Bug Fixes
- Fixed a bug that left View menu items checked after the associated
  windows closed.

- Cleaned up UI init code for several components.
2012-12-30 12:14:30 -08:00
Seth Morabito 933b09827a Cleanup and Javadoc 2012-12-30 11:27:10 -08:00
Seth Morabito 3d620711a9 Fixing imports. 2012-12-29 22:53:01 -08:00
Seth Morabito f7c5c3b763 Memory Window, Minor Bugfixes
Adds a new view that displays a single page of memory (user selectable)
and allows direct editing of memory contents.

Also fixes several minor bugs, including one that prevented the status
pane from updating after each manual step.
2012-12-29 22:47:23 -08:00
Seth Morabito 0215e2e3d8 Cleaner simulator startup and run-loop exiting
- If a default ROM image ("rom.bin") isn't available at startup, the
  simulator will now create and load a 16KB R/W memory at the ROM
  location, so resets will work even without a ROM loaded.

- Cleaned up the way simulator UI state is updated when the run loop
  exits.
2012-12-10 21:53:01 -08:00
Seth Morabito 504f7291b3 Added revision history 2012-12-09 21:26:47 -08:00
Seth Morabito b74198dfb2 Bumping version to 0.7.0 2012-12-09 21:18:36 -08:00
Seth Morabito f70ce22259 Trace Log View menu item
Makes the "Trace Log" menu item in the "View Menu" a radio button menu
item, so it is checked / unchecked appropriately.
2012-12-09 21:15:19 -08:00
Seth Morabito 807a43ce6f Faster byte and word to hex string
I was alarmed to discover just how slow `String.format()` is for doing
integer to hex conversions. Now that a trace window has been added to
Symon, it became especially clear that I needed a more efficient way to
handle it.

I looked into using `Integer.toHexString()`, but I would have had to
wrap it to do zero-padding, so I decided to just bite the bullet and do
my own with a lookup table. The implementation in `HexUtil` is just as
fast as `Integer.toHexString()`, but also zero-pads appropriately.
Combined with Java's `+` String concatenation, it seems perfectly
adequate.

For yet better performance with the trace window, it would make a lot of
sense to special-case stepping so that it just pops the top line off the
log, and appends to the bottom, rather than re-stringifying the entire
trace log each time. This will be a future enhancement.
2012-12-09 21:02:11 -08:00