Updates for 0.9.9
This commit is contained in:
1 parent
4bb6d55fa2
commit
ac21b2c126
1 file changed
+55
-31
@@ -3,15 +3,16 @@ SYMON - A 6502 System Simulator
|
|||||||
|
|
||||||
**NOTE: THIS SOFTWARE IS UNDER ACTIVE DEVELOPMENT. Feedback is welcome!**
|
**NOTE: THIS SOFTWARE IS UNDER ACTIVE DEVELOPMENT. Feedback is welcome!**
|
||||||
|
|
||||||
**Version:** 0.9.1.0
|
**Version:** 0.9.9.0
|
||||||
|
|
||||||
**Last Updated:** 29 December, 2013
|
**Last Updated:** 26 July, 2014
|
||||||
|
|
||||||
Copyright (c) 2013 Seth J. Morabito <web@loomcom.com>
|
Copyright (c) 2014 Seth J. Morabito <web@loomcom.com>
|
||||||
|
|
||||||
|
Portions Copyright (c) 2014 Maik Marten <maikmarten@googlemail.com>
|
||||||
|
|
||||||
See the file COPYING for license.
|
See the file COPYING for license.
|
||||||
|
|
||||||
|
|
||||||
![Symon Simulator in Action] (https://github.com/sethm/symon/raw/master/screenshots/full.jpg)
|
![Symon Simulator in Action] (https://github.com/sethm/symon/raw/master/screenshots/full.jpg)
|
||||||
|
|
||||||
## 1.0 About
|
## 1.0 About
|
||||||
@@ -22,7 +23,8 @@ in Java. Its core goals are accuracy, ease of development, clear
|
|||||||
documentation, and extensive test suites for validating correctness.
|
documentation, and extensive test suites for validating correctness.
|
||||||
|
|
||||||
Symon simulates a complete system with a 1 MHz NMOS 6502, 32KB of RAM,
|
Symon simulates a complete system with a 1 MHz NMOS 6502, 32KB of RAM,
|
||||||
16KB of ROM, a 6551 ACIA, a 6522 VIA, and a 6545 CRTC.
|
16KB of ROM, a MOS 6551 or Motorola 6850 ACIA, a MOS 6522 VIA, and an
|
||||||
|
experimental 6545 CRTC.
|
||||||
|
|
||||||
Symon has extensive unit tests to verify correctness, and fully passes
|
Symon has extensive unit tests to verify correctness, and fully passes
|
||||||
Klaus Dormann's 6502 Functional Test Suite as of version 0.8.2
|
Klaus Dormann's 6502 Functional Test Suite as of version 0.8.2
|
||||||
@@ -31,21 +33,33 @@ for more information about this functional test suite).
|
|||||||
|
|
||||||
## 2.0 Requirements
|
## 2.0 Requirements
|
||||||
|
|
||||||
- Java 1.5 or higher
|
- Java 1.7 or higher
|
||||||
- Maven 2.0.x or higher (for building from source)
|
- Maven 2.0.x or higher (for building from source)
|
||||||
- JUnit 4 or higher (for testing)
|
- JUnit 4 or higher (for testing)
|
||||||
|
|
||||||
## 3.0 Features
|
## 3.0 Features
|
||||||
|
|
||||||
### 3.1 Memory Map
|
Symon can simiulate multiple 6502 based architectures. At present, two
|
||||||
|
machines are implemented: Symon (the default), and MULTICOMP.
|
||||||
|
|
||||||
|
### 3.1 Memory Maps
|
||||||
|
|
||||||
|
#### 3.1.1 Symon Memory Map
|
||||||
|
|
||||||
- `$0000`--`$7FFF`: 32KB RAM
|
- `$0000`--`$7FFF`: 32KB RAM
|
||||||
- `$8000`--`$800F`: 6522 VIA
|
- `$8000`--`$800F`: 6522 VIA
|
||||||
- `$8800`--`$8803`: 6551 ACIA (Serial Console)
|
- `$8800`--`$8803`: MOS 6551 ACIA (Serial Console)
|
||||||
- `$9000`--`$9001`: 6545 CRTC
|
- `$9000`--`$9001`: MOS 6545 CRTC
|
||||||
- `$C000`--`$FFFF`: 16KB ROM
|
- `$C000`--`$FFFF`: 16KB ROM
|
||||||
|
|
||||||
The CRT Controller uses memory address `$7000` as the start of Video memory.
|
The CRT Controller uses memory address `$7000` as the start of Video
|
||||||
|
memory.
|
||||||
|
|
||||||
|
#### 3.1.2 MULTICOMP Memory Map
|
||||||
|
|
||||||
|
- `$0000`--`$DFFF`: 56KB RAM
|
||||||
|
- `$E000`--`$FFFF`: 8KB ROM
|
||||||
|
- `$FFD0`--`$FFD1`: Motorola 6850 ACIA
|
||||||
|
|
||||||
### 3.2 Serial Console and CPU Status
|
### 3.2 Serial Console and CPU Status
|
||||||
|
|
||||||
@@ -53,10 +67,9 @@ The CRT Controller uses memory address `$7000` as the start of Video memory.
|
|||||||
|
|
||||||
The main window of the simulator acts as the primary Input/Output
|
The main window of the simulator acts as the primary Input/Output
|
||||||
system through a virtual serial terminal. The terminal is attached to
|
system through a virtual serial terminal. The terminal is attached to
|
||||||
a simulated MOS 6551 ACIA, including a programmable baud rate
|
a simulated ACIA, including a programmable baud rate generator that
|
||||||
generator that tries to approximate the correct "feel" of the
|
tries to approximate the correct "feel" of the programmed baud rate.
|
||||||
programmed baud rate. (The sample Enhanced BASIC ROM image is
|
(The sample Enhanced BASIC ROM image is programmed for 9600 baud)
|
||||||
programmed for 9600 baud)
|
|
||||||
|
|
||||||
It also provides CPU status. Contents of the accumulator, index
|
It also provides CPU status. Contents of the accumulator, index
|
||||||
registers, processor status flags, disassembly of the instruction
|
registers, processor status flags, disassembly of the instruction
|
||||||
@@ -66,13 +79,16 @@ register, and stack pointer are all displayed.
|
|||||||
|
|
||||||
The console supports font sizes from 10 to 20 points.
|
The console supports font sizes from 10 to 20 points.
|
||||||
|
|
||||||
### 3.3 16 KB ROM Loading
|
### 3.3 ROM Loading
|
||||||
|
|
||||||
![ROM Loading] (https://github.com/sethm/symon/raw/master/screenshots/load_rom.png)
|
![ROM Loading] (https://github.com/sethm/symon/raw/master/screenshots/load_rom.png)
|
||||||
|
|
||||||
Symon can load any 16 KB (16384 bytes) ROM image from the "File"
|
Symon can load any appropriately sized ROM image. The Symon
|
||||||
menu. The selected ROM will be placed in memory from locations `$C000`
|
architecture expects as 16KB (16384 byte) ROM image, while the
|
||||||
to `$FFFF`
|
MULTICOMP architecture expects an 8KB (8192 byte) ROM image. Images
|
||||||
|
are loaded via the "Load ROM..." action in the "File" menu. The
|
||||||
|
selected ROM file will be loaded into memory at the correct ROM base
|
||||||
|
address.
|
||||||
|
|
||||||
### 3.4 Memory Window
|
### 3.4 Memory Window
|
||||||
|
|
||||||
@@ -161,17 +177,22 @@ interface.
|
|||||||
|
|
||||||
### 4.2 ROM images
|
### 4.2 ROM images
|
||||||
|
|
||||||
The simulator requires a 16KB ROM image loaded at address `$C000` to `$FFFF` to
|
The simulator requires a ROM image loaded into memory to work
|
||||||
work properly. Without a ROM in memory, the simulator will not be able to
|
properly. Without a ROM in memory, the simulator will not be able to
|
||||||
reset, since the reset vector for the 6502 is located in this address space.
|
reset, since the reset vector for the 6502 is located in the ROM
|
||||||
|
address space.
|
||||||
|
|
||||||
By default, any 16KB file named `rom.bin` that exists in the same directory
|
By default, any file named `rom.bin` that exists in the same directory
|
||||||
where Symon is launched will be loaded as a ROM image. ROM images can also
|
where Symon is launched will be loaded as a ROM image. ROM images can
|
||||||
be swapped out at run-time with the "Load ROM Image..." in the File menu.
|
also be swapped out at run-time with the "Load ROM Image..." in the
|
||||||
|
File menu.
|
||||||
|
|
||||||
The "samples" directory contains a ROM image named 'ehbasic.rom', containing
|
The "samples" directory contains a ROM image for the Symon
|
||||||
Lee Davison's Enhanced 6502 BASIC. This serves as a good starting point for
|
architecture named 'ehbasic.rom', containing Lee Davison's Enhanced
|
||||||
exploration.
|
6502 BASIC. This serves as a good starting point for exploration.
|
||||||
|
|
||||||
|
*Note*: Presently, EhBASIC only works with the Symon machine
|
||||||
|
architecture, not with MULTICOMP.
|
||||||
|
|
||||||
### 4.3 Loading A Program
|
### 4.3 Loading A Program
|
||||||
|
|
||||||
@@ -184,7 +205,7 @@ reset.
|
|||||||
|
|
||||||
There are two very simple sample program in the "samples" directory,
|
There are two very simple sample program in the "samples" directory,
|
||||||
for testing.
|
for testing.
|
||||||
|
|
||||||
- 'echo.prg' will echo back anything typed at the console.
|
- 'echo.prg' will echo back anything typed at the console.
|
||||||
|
|
||||||
- 'hello.prg' will continuously print "Hello, 6502 World!" to the console.
|
- 'hello.prg' will continuously print "Hello, 6502 World!" to the console.
|
||||||
@@ -196,6 +217,9 @@ running.
|
|||||||
|
|
||||||
## 5.0 Revision History
|
## 5.0 Revision History
|
||||||
|
|
||||||
|
- **0.9.9:** 26 July, 2014 - MULTICOMP and multi-machine support
|
||||||
|
contributed by Maik Marten <maikmarten@googlemail.com>
|
||||||
|
|
||||||
- **0.9.1:** 26 January, 2014 - Support for IRQ and NMI handling.
|
- **0.9.1:** 26 January, 2014 - Support for IRQ and NMI handling.
|
||||||
|
|
||||||
- **0.9.0:** 29 December, 2013 - First pass at a 6545 CRTC simulation.
|
- **0.9.0:** 29 December, 2013 - First pass at a 6545 CRTC simulation.
|
||||||
@@ -234,8 +258,6 @@ running.
|
|||||||
- Better debugging tools from the UI, including breakpoints
|
- Better debugging tools from the UI, including breakpoints
|
||||||
and disassembly.
|
and disassembly.
|
||||||
|
|
||||||
- More accurate timing.
|
|
||||||
|
|
||||||
- UI needs a ton more polish.
|
- UI needs a ton more polish.
|
||||||
|
|
||||||
- More extensive testing.
|
- More extensive testing.
|
||||||
@@ -247,6 +269,8 @@ running.
|
|||||||
- Allow displaying ACIA status and dumping ACIA buffers, for
|
- Allow displaying ACIA status and dumping ACIA buffers, for
|
||||||
debugging.
|
debugging.
|
||||||
|
|
||||||
|
- Symbolic debugging.
|
||||||
|
|
||||||
## 7.0 Acknowledgements
|
## 7.0 Acknowledgements
|
||||||
|
|
||||||
This project would not have been possible without the following resources:
|
This project would not have been possible without the following resources:
|
||||||
@@ -254,7 +278,7 @@ This project would not have been possible without the following resources:
|
|||||||
- [Graham Edgecombe's JTerminal project] (https://github.com/grahamedgecombe/jterminal),
|
- [Graham Edgecombe's JTerminal project] (https://github.com/grahamedgecombe/jterminal),
|
||||||
which forms the core of Symon's console.
|
which forms the core of Symon's console.
|
||||||
|
|
||||||
- [Andrew Jacobs' 6502 Pages] (http://www.obelisk.demon.co.uk/6502/), for
|
- [Andrew Jacobs' 6502 Pages] (http://www.obelisk.demon.co.uk/6502/), for
|
||||||
wonderfully detailed information about the 6502
|
wonderfully detailed information about the 6502
|
||||||
|
|
||||||
- [Neil Parker's "The 6502/65C02/65C816 Instruction Set Decoded"] (http://www.llx.com/~nparker/a2/opcodes.html),
|
- [Neil Parker's "The 6502/65C02/65C816 Instruction Set Decoded"] (http://www.llx.com/~nparker/a2/opcodes.html),
|
||||||
|
|||||||
Reference in new issue
Block a user