During 0.1.x: - complete simulation of 8515 device. - external peripheral device connection interface. - write, read and access watchpoints - documentation During 0.2.x: - add support for all at90s**** devices (Is this too ambitious?) - speed improvements (optimization) During 0.3.x: - add support for megas and tiny's (This might require some redesign work to get the atmega128 like devices right) Misc TODO's: The conversion to autoconf/automake configuration is working, but still needs to have the actual porting issues worked into the project. Also, the autoconf macros (the config/*.m4 files) could be robustified. For instance, the TROTH_PROG_AVR_CC macro really should do more than just checking if avr-gcc is in yout $PATH. It should also make sure that avr-gcc works. Like wise for the other macros. It's a start at least. Build the virtual hardware harness and gui. I'm thinking it be able to plug a device into something like the Atmel stk200 board thus giving the user LEDs for visual feed back and push buttons for supplying inputs to the ports. Also, I'd like to simulate the analog comparators and ADCs if possible. It might also be interesting to simulate a popular LCD display. More interesting might be the potential for custom user designed virtual peripherals which could be plugged into the virtual board. I wonder if I can use the same interface as gpsim, thus allowing the sharing of modules between the two projects? Make a python module out of the library. Need to write functions for loading/dumping eeprom from/to files. Add support for ihex, srec, elf, and whatever else input file formats. The interrupt code looks like it needs a major re-thinking. It doesn't handle the interrupt flag mechanism and doesn't support automatic vectoring into ISRs that occurred when the interrupt occured and was disabled either globally or by the specific control register and then the interrupt was subsequently enabled. This looks like it might be yucky. I'm seriously thinking that interrupts need to be handled via some asyncronous mechanism like unix signals. Also, some way to implement the interrupt response time needs to be thought out. Add code to output number of instructions executed (and per second) and total number of clocks (and per second). Should go in main.c. There's a bunch of FIXME comments in the code in places where someone needs to give more thought to the logic. These io registers still need to be implemented: GIMSK GIFR All the timer/counter 1 stuff. Lots of others too.