From ac21b2c1267af6a02c07961bd0f4da8dc104a5fa Mon Sep 17 00:00:00 2001 From: Seth Morabito Date: Sat, 26 Jul 2014 13:18:07 -0700 Subject: [PATCH] Updates for 0.9.9 --- README.md | 86 +++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 55 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index 04a9f22..28a8377 100644 --- a/README.md +++ b/README.md @@ -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),