0.19-dev (Next Release) - Blocking character input at $F005 has been removed. The I/O area was designed to be compatible with Michal Kowalski's simulator, and it uses this address for another purpose. Examples that depended on $F005 have been changed to use $F004. 0.18 (2014-01-30) - Fixed a bug in RTS where popping $FFFF off the stack would cause the program counter to overflow to $10000. It now wraps around to $0000 as it should. Thanks to Gábor Lénárt for reporting it. - Fixed BRK on 65C02 so it clears the decimal flag. On NMOS 6502, the decimal flag is unaffected on BRK. On 65C02, it is always cleared. - Assembling now tolerates extra whitespace between opcode and operand. - Removed page wrap bug from JMP indirect on 65C02. - Removed page wrap bug from indexed indirect (X) operations on 65C02. 0.17 (2013-10-26) - Added support for Python 3.2 and 3.3 based on work by David Beazley. 0.16 (2013-04-03) - Fixed a bug in the monitor that caused loading from the command line with "--rom" to crash. 0.15 (2013-01-06) - Disassembling can now wrap around memory if the start address given is greater than the end address. - Fixed the disassembler to accept a range of "start:end" instead of "start:end+1" for consistency with the other commands. 0.14 (2012-11-30) - Assembling now detects syntax errors, overflows, and bad labels separately and shows specific error messages. - Fixed assembling 65C02 opcodes whose mnemonics have a digit such as "RMB3". - Reformatted source code to comply with PEP8. - Fixed a bug where the MPU status display would wrap unexpectedly on some terminals. - Added support for 65C02 opcode 0x89: BIT #. - Added support for 65C02 opcode 0x7C: JMP (abs,x). - Assembling now shows an Overflow Error if the statement won't fit at the top of memory. - Fixed a bug in the disassembler where instructions that wrap past the top of memory would not be displayed properly. 0.13 (2012-11-15) - Fixed a bug where negative numbers could be entered for addresses in the monitor. 0.12 (2012-02-16) - Fixed a bug that caused ``help cd`` to raise an exception in the monitor. - Fixed a bug in the 65C02 simulation where the opcode 0x7A was named "PHY" instead of "PLY", causing incorrect assembly and disassembly. Thanks to Brian Cassidy for reporting it. - Fixed the cycle count of 0xD2 (CMP zero page indirect) in the 65C02 simulation. Thanks to Brian Cassidy for reporting it. - Added "h" as a monitor shortcut for "help". 0.11 (2012-01-07) - Added a new 65Org16 MPU simulation written by Ed Spittles. - The monitor now accepts command line arguments. See ``py65mon --help`` for usage. Contributed by Ed Spittles. - The monitor's load command can now fetch URLs. - Python versions earlier than 2.6 are no longer supported. 0.10 (2011-08-27) - Fixed long-standing bugs in relative branch calculations in the assembler and disassembler. Based on a patch by Ed Spittles. - Zero page operations now have the correct page wrap around. Patch by Martti Kühne. 0.9 (2011-03-27) - Fixed two monitor tests that were broken under Windows. Thanks to Oscar Lindberg for reporting this. - Removed use of defaultdict to fix compatibility with Python 2.4. - Decimal mode bugs have been fixed. Thanks to Ed Spittles who ported Bruce Clark's tests to find failures and then rewrote the decimal handling code. 0.8 (2010-03-08) - Fixed deprecation warnings on Python 2.6 - We no longer bundle ez_setup to bootstrap setuptools installation. - Restoring the processor status register from interrupt now correctly set the BREAK and UNUSED flags to be high. Thanks to Ed Spittles for reporting this. - Applied patch by Ed Spittles that fixes the behavior of the BREAK and UNUSED flags in the processor status register. Closes #16. - Added ">" as a monitor shortcut for the fill command for consistency with VICE. 0.7 (2009-09-03) - When using the monitor, the nonblocking character input at $F004 should now work on the Microsoft Windows platform. - Fixed that relative branch calculations would not use the correct start address when assembling in the monitor. Closes #10. - The processor status register ("p" or "flags") can now be changed in the monitor using the "registers" command with an argument of "p", such as "registers p=00". - MPU objects now return a two-line string as their __repr__ with the processor status register displayed as binary for readability. - The processor status register is now initialized to 0 on reset. Previously, its unused bit (bit 5) was set to 1 on reset. - Applied patch from Ed Spittles to change the CMP algorithm so that it no longer fails Rob Finch's test suite. Closes #8. - Added a new interactive assembly mode to the monitor. Entering the the assemble command with a statement such as "a c000 lda #0" works as before. Entering "a c000" will start the interactive assembler at that address. Entering "a" alone will start it at the current program counter. - Applied patch from Ed Spittles so that SBC now properly sets the Overflow (V) flag. This fixes a failure in Rob Finch's test suite. Closes #6. - Applied patch from Ed Spittles so that SBC now properly sets the Carry (C) and Zero (Z) flags. This fixes failures caught by Ed's own tests (see http://forum.6502.org/viewtopic.php?p=8854#8854). Closes #15. - A new "save" command has been added to the monitor that will save a range of memory to a binary file. 0.6 (2009-08-11) - Added monitor shortcut "a" for "assemble". - Fixed that ASL would not properly set the Z flag. Closes #7. - Fixed that ADC would not properly set the Overflow (V) flag. The overflow calculation that is now used originated from XGS: Apple IIGS Emulator (cputable.h). Originally written and Copyright (C)1996 by Joshua M. Thompson. Copyright (C) 2006 by Samuel A. Falvo II. http://bitbucket.org/kc5tja/lib65816/src/tip/src/cputable.h Closes #3. 0.5 (2009-08-06) - Fixed signatures of getc/putc callbacks in monitor that were broken when the ObservableMemory interface changed in 0.3. Closes #1. - Fixed that ROL would not properly set the Z flag. Closes #2. 0.4 (2009-06-06) - Added ez_setup.py to bootstrap setuptools installation. 0.3 (2009-06-03) - Added shortcuts for monitor commands such as "m" for "memory". These are mostly the same as the VICE monitor shortcuts. - The terminal width can now be changed in the monitor using the new "width" command. Some commands, like "mem", will wrap to this width. - Fixed a bug where BRK would increment PC by 3 instead of 2. Thanks to Oscar Lindberg. - Added a new 65C02 MPU simulation started by Oscar Lindberg. It is now mostly complete. - Added a new "mpu" command to the monitor. It will switch between the NMOS 6502 and CMOS 65C02 simulations. - A new "devices" module has been added to organize device simulations. - The mpu6502 and mpu65c02 devices have been reorganized internally to use Python decorators to build their lookup tables based on an idea by Oscar Lindberg. - A new "utils" module has been added with various utility functions. - The ObservableMemory interface has been changed for clarity. - Python 2.4 or later is now required. 0.2 (2008-11-09) - Added a new "disassemble" command to the monitor. It can disassemble any range of memory ("disassemble c000:c010"). If labels have been defined, the disassembly will show them in the operands. - Added a new "assemble" command to the monitor. It can assemble a single instruction at an address ("assemble c000 jsr $ffd2"). Labels in the operands are also supported ("assemble c000 jsr charout"). - Moved the character I/O area from $E000 to $F000 for compatibility with the EhBASIC binary saved from Michal Kowalski's Windows-based simulator. In a future version of Py65, the I/O area will be configurable. - When running a program in the monitor, a read to $F004 will now do a non-blocking read from STDIN. If no character is available, a null byte ($00) will be returned. - Fixed a bug where a CMP instruction could crash the simulator due to an undefined variable. - EhBASIC 2.09 now runs in the simulator! - Documented all remaining monitor commands. In the monitor, use the command "help command" for help on any command. 0.1 (2008-11-21) - First release.