1
0
mirror of https://github.com/sethm/symon.git synced 2024-06-01 08:41:32 +00:00

Updates for 0.9.9

This commit is contained in:
Seth Morabito 2014-07-26 13:18:07 -07:00
parent 4bb6d55fa2
commit ac21b2c126

View File

@ -3,15 +3,16 @@ SYMON - A 6502 System Simulator
**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.
![Symon Simulator in Action] (https://github.com/sethm/symon/raw/master/screenshots/full.jpg)
## 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.
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
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
- Java 1.5 or higher
- Java 1.7 or higher
- Maven 2.0.x or higher (for building from source)
- JUnit 4 or higher (for testing)
## 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
- `$8000`--`$800F`: 6522 VIA
- `$8800`--`$8803`: 6551 ACIA (Serial Console)
- `$9000`--`$9001`: 6545 CRTC
- `$8800`--`$8803`: MOS 6551 ACIA (Serial Console)
- `$9000`--`$9001`: MOS 6545 CRTC
- `$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
@ -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
system through a virtual serial terminal. The terminal is attached to
a simulated MOS 6551 ACIA, including a programmable baud rate
generator that tries to approximate the correct "feel" of the
programmed baud rate. (The sample Enhanced BASIC ROM image is
programmed for 9600 baud)
a simulated ACIA, including a programmable baud rate generator that
tries to approximate the correct "feel" of the programmed baud rate.
(The sample Enhanced BASIC ROM image is programmed for 9600 baud)
It also provides CPU status. Contents of the accumulator, index
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.
### 3.3 16 KB ROM Loading
### 3.3 ROM Loading
![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"
menu. The selected ROM will be placed in memory from locations `$C000`
to `$FFFF`
Symon can load any appropriately sized ROM image. The Symon
architecture expects as 16KB (16384 byte) ROM image, while the
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
@ -161,17 +177,22 @@ interface.
### 4.2 ROM images
The simulator requires a 16KB ROM image loaded at address `$C000` to `$FFFF` to
work 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.
The simulator requires a ROM image loaded into memory to work
properly. Without a ROM in memory, the simulator will not be able to
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
where Symon is launched will be loaded as a ROM image. ROM images can also
be swapped out at run-time with the "Load ROM Image..." in the File menu.
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 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
Lee Davison's Enhanced 6502 BASIC. This serves as a good starting point for
exploration.
The "samples" directory contains a ROM image for the Symon
architecture named 'ehbasic.rom', containing Lee Davison's Enhanced
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
@ -184,7 +205,7 @@ reset.
There are two very simple sample program in the "samples" directory,
for testing.
- 'echo.prg' will echo back anything typed at the console.
- 'hello.prg' will continuously print "Hello, 6502 World!" to the console.
@ -196,6 +217,9 @@ running.
## 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.0:** 29 December, 2013 - First pass at a 6545 CRTC simulation.
@ -234,8 +258,6 @@ running.
- Better debugging tools from the UI, including breakpoints
and disassembly.
- More accurate timing.
- UI needs a ton more polish.
- More extensive testing.
@ -247,6 +269,8 @@ running.
- Allow displaying ACIA status and dumping ACIA buffers, for
debugging.
- Symbolic debugging.
## 7.0 Acknowledgements
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),
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
- [Neil Parker's "The 6502/65C02/65C816 Instruction Set Decoded"] (http://www.llx.com/~nparker/a2/opcodes.html),