SummaryA MOS Technology 6502 simulator and 2 pass assembler written in C#
AimsAn almost complete 6502 simulator written in C#, it implements an almost complete instruction set along with a working
... [More]
two-pass assembler.
In the short term, the aim is to complete the instruction set and the user interface, so you can see the processor status, etc.
In the slightly longer term, the aim is to implement save/load of assembled programs, a console for text-based I/O, alter the structure of the simulator to allow use of interrupts (and to implement them!) as well as generally improve the structure and flow of the simulator.
HistoryI originally started writing this for something interesting and different to do, away from my day job as a Java developer and PhD student. I chose C# because I like both the language itself and because Visual Studio is one of the best IDEs I've used (and as a kind-of student, I got it for free =)
Unfortunately, after a couple of months of on and off development, I had to take a break to actually finish my PhD and so I stopped working on this around December 2008.
No I have time to start work again, the initial progress will probably be quite slow, due to the need to familiarise myself with the 6502 again and try and remember what I had in mind for the rest of the simulator.
(The lack of comments in the code don't help...)
StatusImplementedWorking 2 pass assembler Partially ImplementedUser Interface Not all form elements are functional Stack No bounds checking Needs sensible implementation Not ImplementedInstructions (The following instructions have not been implemented and are ignored if encountered during execution) ASL : Arethmetic Shift Left CMP : Compare EOR : Exclusive Or JSR : Jump to Subroutine LSR : Logical Shift Right ORA : Logical Inclusive Or ROL : Rotate Left ROR : Rotate Right RTI : Return from Interupt RTS : Return from Subroutine SBC : Subtract with Carry Interupts Further WorkConsole Style output to enable text based I/O Ability to save/load assembled programs Better multi-threading approach [Less]