Testing: - Tests for cycle counting - More tests for branching operations - More tests for CMP/CPY/CPX operations - Tests needed for JMP operations - Tests needed for LD* and ST* operations - Tests needed for bank/page wrapping - Tests needed for IN* and DE* operations - Tests needed for T** transfer operations - Tests needed for interrupt support - Tests needed for the numerous other operations supported CPU: - Code cleanup * Re-evaluate closure based privacy for instructions. This currently makes it impossible to actually unit test the small bit of functionality the instruction implements. There has to be a nice way to handle this. - Ideally this should wait till after instructions are altered to grab whatever bytes they need instead of relying on the loop to grab it for them. - Figure out the exact details of how the 65816 handles illegal BCD numbers when decimal mode is set - Optimization * Use typed arrays if browser supports them * Each instruction should be reponsible for getting what it needs from memory(remove byte acquisition from cpu.step), remove bytes_required from each instruction, and then each instruction should be able to be turned into a function(instructions will no longer be objects) Memory: - Bank wrapping or not wrapping for certain addressing modes and with certain settings - Page wrapping or not wrapping for certain addressing modes and with certain settings Display: - Add support for loading a binary using a url - Add the ability to step, pause and stop execution - Ability to view the path of operation execution as it executes, like have the hex chars that are being interpreted at the moment highlighted - Display a log of the cpu's interpretation process, display what operations it finds and what arguments it finds for those operations in the order they are executed - Ability to view what the contents of memory are in a nice fashion - Ability to change the contents of registers or memory through the user interface - Ability to load binary files into the emulator through the user interface - Improve upon the appearance of the interface - Assembler - Disassembler