- Rewrite the assembler, adding support for labels, compile-time expressions, and literals in decimal and binary. Huge thanks go to @dustmop for this fantastic work.
- Rewrite DEFADDRESS again and stop inlining get-byte. The new implementation is easier to read and allows upstream clients to monkey patch get-byte to use a given platform's memory map.
- Reduce consing on SBCL > 1.1.8 due to modarith/type checking changes.
- Make debugging easier by using named-lambdas for the opcodes.
- Minor code cleanups and book clarifications.
- Further performance improvements from type hints: Emulates the 6502 at ~50 mhz with SBCL 1.1.4.debian on an old Core 2 Duo.
- Major performance improvements from rewriting: DEFADDRESS, DEFASM, and status-bit handling, again. Results in a 75% reduction in runtime on Klaus' testsuite!
- Two new chapters in the book: Lessons Learned and A Naive JIT.
- Incompatible change: Renamed 6502-STEP to STEP-CPU.
- Incompatible change: JIT-EXECUTE was removed.
- Code written in a more literate style with a readable book!
- Substantial performance improvements from rewriting: overflow handling for arithmetic ops (overflow-p), storage handling for %status-bit (defenum). Results in a 33% reduction in runtime and an over 90% reduction in garbage generated for Klaus' testsuite.
- Greatly simplified defasm macro replaces defopcode+defins.
- New Addressing Modes implementation.
- Add a very naive JIT compiler. Don't expect big speedups. Do expect bugs.
- Improve error reporting on incorrect assembly.
- Remove comment and label support from assembler.
- Fix symbolic disassembly for certain addressing modes.
- Perfect run on Klaus Dorfmann's test suite aside from decimal mode ADC/SBC.
- Fix bugs in new symbolic assembler. Indirect and *-x *-y addressing modes were previously not working. Extended test suite to cover these cases.
- Added and exported CURRENT-INSTRUCTION helper.
- Fix stack wraparound in PHP, PLA, etc.
- Add symbolic assembly and disassembly, i.e. sexp-format support.
- Massive package overhaul and docs update.
- Minor dead code removal (i.e. toy assembly progs).
- Tweaked DEFOPCODE to fix addressing mode handling of ASL, LSR, ROL, and ROR.
- Rewrote ROL and ROR, fixing bugs.
- Emulate the infamous 6502 indirect JMP page wrapping bug.
- Fixed incorrect break and unused bit handling in PHP, PLP, and RTI.
- Fixed incorrect overflow bit handling in ADC.
- Fixed incorrect result in LSR due to extra fetch.
- Fixed carry bit handling in SBC, CMP, CPX, and CPY. Previous fix didn't correctly handle all cases.
- Added NMI support.
- Improved assembler error reporting.
- Improved readability of generated code from defopcode/defins.
- Fixed CPU initial state based on values in NESdev wiki.
- Fixed incorrect carry bit handling in CMP,CPX,CPY.
- Fixed incorrect jumps when using JSR opcode.
- Fixed assembler PC tracking bug when using labels.
- General refactoring and code cleanups.
- Assembler supports forward references/jumps.
- Assembler detects addressing mode of a label based on call site, not definition.
- Fixed PC tracking in assembler.
- Improved assembler unit tests.
- Added assembler with comment and label/var support.
- Miscellaneous improvements to docs and unit tests.
- Huge refactor to status bit handling, correctness improved.
- Improved correctness of ADC and SBC instructions.
- Switched to BSD license.
- Completed addressing mode unit tests.
- Fixed load-time defopcode bug with eval-when.
- Fleshed out README.
- Disassembler correctly formats output based on addressing mode.
- Added API docs.
- Export 6502-step, execute.
- Improved cycle counting.
- Bugfixes to PC tracking (jsr, jmp, rts, relative mode).
- Added disassembler.
- Bugfixes and cleanups.
- Initial release.