Commit Graph
45 Commits
Author SHA1 Message Date
Seth Morabito 6e8fd40014 Refactor for Java 1.8
- Clean up and refactor code

- Add 1.8 features

- Clean up IntelliJ inspector warnings
2015-12-29 17:55:41 -08:00
Seth Morabito a4a110dcef Bugfixes, change logger, update copyright
- IR field in status panel now correctly displays the next instruction
  to be executed, instead of the instruction that was just executed.

- Switched from built-in Java util logger to Logback

- Updated all copyright strings to 2016
2015-12-29 14:40:42 -08:00
Seth Morabito e0d6017d95 Unifying and cleaning up copyrights 2014-08-16 13:50:47 -07:00
Maik Merten e9f662cc17 Merge remote-tracking branch 'upstream/master'
Conflicts:
	src/main/java/com/loomcom/symon/machines/MulticompMachine.java
2014-08-15 20:11:33 +02:00
Seth Morabito eeb246ebc2 CRTC refactoring 2014-08-14 10:53:48 -07:00
Maik Merten cc12e8f70a proper status value when SD controller is in write mode 2014-08-13 19:56:40 +02:00
Maik Merten a9a1c1aa52 get writing to a certain position in a file somewhat more correct 2014-08-13 19:38:54 +02: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
Maik Merten 792366fddb some cleanup in the SD card controller 2014-08-12 21:34:00 +02:00
Maik Merten b2670aedf1 email address update 2014-08-12 19:25:37 +02:00
Maik Merten 5d488bbcd2 Merge remote-tracking branch 'upstream/master' 2014-08-12 11:48:47 +02:00
Seth Morabito e2a1144c7c Update copyright, prep for 1.1.0 2014-08-11 14:16:41 -07:00
Maik Merten 7a215736fe rework SD controller emulation to work with Input- and OutputStreams (no longer load the image into a byte array) 2014-08-09 17:55:18 +02:00
Maik Merten c61a63d5bb more accurate emulation of the SD controller 2014-08-09 16:47:49 +02:00
Maik Merten 7cb4e1c945 NPE fix and reset position on every command 2014-08-09 15:13:59 +02:00
Maik Merten d658cd0ae5 completely untested and incomplete implementation of the SD card interface of the MULTICOMP 2014-08-09 14:57:18 +02:00
Maik Merten 252ebe0569 implement overrun status flag for the 6551 ACIA 2014-07-19 17:30:23 +02:00
Maik Merten 4a37dd7463 move overrun detection and reset into the abstract superclass for ACIAs 2014-07-19 17:10:57 +02:00
Maik Merten 8f52e1da1e implement overrun flag for 6850 ACIA 2014-07-16 22:26:06 +02:00
Maik Merten 0d0fddc365 tests for the 6850 ACIA and fixes in ACIA behavior 2014-07-16 21:51:34 +02:00
Maik Merten 31fdd87b41 turn Acia into an abstract class so that the 6551 and 6850 ACIAs can reuse code and an unified interface. 2014-07-15 21:35:19 +02:00
Maik Merten 9726907317 initial (and untested) implementation of a Motorola 6850 ACIA 2014-07-15 18:45:13 +02:00
Seth Morabito 1bc8eda38d ACIA interrupt handling 2014-01-26 01:25:12 -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 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 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
Max840 d8deca227f Create Device.size() 2013-12-24 15:35:56 -05:00
Max840 d1a05aeb2b Devices use start/end address 2013-12-23 23:31:51 -05: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 933b09827a Cleanup and Javadoc 2012-12-30 11:27:10 -08:00
Seth Morabito 38a4458aff New UI layout, ROM loading, Font selection
- The UI layout has changed, and will likely change again in the future.

- Symon can now re-load ROM images from the File menu, under "Load ROM..."

- Font size can be changed under the "View" menu
2012-12-05 23:19:34 -08:00
Seth Morabito 2ebdd254b3 Work In Progress: CPU behavior, UI changes
This is something of a "Work in Progress" checkpoint of several features
that are all half baked:

1. Allow loading of 16KB ROM files at address $C000 at run-time, not
   just at startup. See the "Load ROM..." File menu item.

2. Introduces the notion of "CPU Behaviors", so the core 6502 CPU
   implementation can match the behavior of either an early NMOS 6502, late
   NMOS 6502, or CMOS 65C02. Very little of this is actually implemented so
   far.

3. Adds a completely bogus implementation of the 6522 VIA (it
   does absolutely nothing right now).

4. Changes the address of the ACIA in the simulated system to match a
   real hardware implementation I put together.
2012-11-25 22:49:21 -08:00
Seth Morabito 795ccfde5d CPU bug fixes and Simulator enhancements.
Bug Fixes:

- Fixed several bugs in the CPU that caused processor status flags to
  be set incorrectly.  Instructions affected were: STA, STX, STY, CMP,
  CPX, CPY, BIT.

- Made some internal-use-only methods on the CPU class private.

- Fixed incorrect disassembly of (Indirect,X) and (Indirect),Y
  instructions. Although this didn't affect behavior, it certainly
  caused me some confusion in debugging.

- Added missing "BCS" instruction to instruction table.

Enhancements:

- Now includes a full version of Lee Davison's Enhanced 6502 BASIC
  bundled as source code and a ROM image. Get that REAL COMPUTER
  EXPERIENCE!(tm)

- If a file named "rom.bin" exists in the same directory where the
  simulator is executed, it will be loaded at addresses $d000-$ffff.

- Gave the CPU an idle loop to make simulated timing a little more
  realistic (but this is still an area needing major improvement)

- Changed the CPU's toString() method to give better debugging output.

- Added a small typeahead buffer to the Console.

- Better exception messaging.

Misc:

- Bumped version to 0.5, updated README.
2012-10-21 20:05:05 -07:00
Seth Morabito c1caf8c6b4 Timing and UI enhancements.
This change introduces simulated baud rates in the ACIA. Baud rate is controlled just as in the real 6551, by writing to the ACIA's control register. Baud rates between 50 and 19,200 baud are selectable. A baud rate of 0 has special meaning, and turns off all simulated baud rate delays (on a real 6551, this means to use an external clock instead of the internal baud rate generator)

A busy-wait loop between steps in the simulator control program has also been added. This uses the high-resolution 'System.nanoTime()' call to wait a specific number of nanoseconds before continuing. Symon now waits at least 1uS between clock cycles, trying to approach a real 1MHz 6502 in performance. It is far from perfect, but it's better than it was.

 Also refactored the status panel to use a BoxLayout, and DRY-up some of the code.
2012-10-14 17:56:19 -07:00
Seth Morabito 365809459c Finally handling key presses in the console! (Took long enough, huh?) Added a dead simple console echo example program in 6502 assembly, as well. 2012-10-11 16:08:04 -07:00
Seth Morabito ed36690e9e Checkpoint of my Swing UI refactoring. Usable for output-only programs, but only barely. 2012-05-28 22:18:35 -07:00
Seth Morabito a1d07bf223 First work toward moving to a Swing UI for the simulator. 2012-04-22 20:49:18 -07:00
Seth J. Morabito 00ab8cd9ff Simulator is just about ready for real-world testing now. Added a simulated
MOS6551 ACIA at address $C000 which does buffered input and output via the
console. Updated the README with a bit more documentation, and bumped the
version number to 0.1 because I'm impatient.
2010-01-20 18:19:39 -08:00
sethm a3e57274a2 - Major overhaul of the Simulator control class (where 'main' lives).
- Removed the CommandParser class entirely, as the weird dependency between
  Simulator and CommandParser never made me comfortable.
- Added a Command inner class to Simulator that handles some of the
  command line tokenizing.
2010-01-16 19:22:22 -08:00
Seth J. Morabito ac88786df7 - Continued refactoring of address decoding.
- Device read and write may now throw MemoryAccessException, and appropriate
  throws clauses have been added throughout the code.
2010-01-09 16:53:04 -08:00
Seth J. Morabito 8bcd8a4a75 Whitespace and indentation canonicalization. That's what I get for using two editors. 2008-12-27 21:09:47 -08:00
Seth Morabito 3f74489757 Renamed project to "Symon". 2008-12-13 14:59:22 -08:00