2001-12-31 Theodore A. Roth * gdb-patches/README, gdb-patches/patcher.sh: Updated to refer to gdb-5.1 patches. Removed references to gdb-5.0 patches. * gdb-patches/gdb-5.0-avr-patch-0.1, gdb-patches/gdb-5.0-avr-troth-patch: Removed obsolete gdb-5.0 patches. * doc/Makefile.am, Makefile.am, Makefile_AVR_Rules: Fixes to allow building from separate directory. (thanks to Reinhard Jessich) 2001-12-30 Theodore A. Roth * ChangeLog: Updated. * Released version 0.0.12. * ChangeLog, configure.in: Set version to 0.0.12 * Makefile_AVR_Rules: Added -h and --stabs when generating .lst files. * doc/simulavr.texi: Documented instruction decoder. Misc cleanups. * src/avr.h, src/avrcore.c, src/eeprom.c, src/register.c, src/timers.c, src/vdevs.h: Renamed CB_T/CB_FP_T to CallBack/CallBack_FP. Twuz a silly a name. * src/disp/disp.c: Fixed bug: sreg bit display was reversed. 2001-12-29 Theodore A. Roth * src/decoder.c: Fixed bug: some of the LD/LDD cases I thought were undefined, are defined. 2001-12-28 Theodore A. Roth * src/avrcore.c: When dumping core output, print PC and PC*2. 2001-12-27 Theodore A. Roth * src/decoder.c: Fixed bug in SBIW handler: res was byte, now is word. 2001-12-22 Theodore A. Roth * ChangeLog: Updated. * ChangeLog: Tagged and released version 0.0.11. * doc/simulavr.texi: Fixed some typos. * ProjSummary: Fixed some typos. * src/devsupp.c: Fixed compiler warning about potential uninitialized variables. * ChangeLog: Removed duplicate entries. * configure.in: Set version to 0.0.11. * gdb-patches/README, ChangeLog, TODO: Updated. 2001-12-21 Theodore A. Roth * src/disp/disp.c: Made pipe fd nonblocking to fix problem with blocking read. Fixed wrefresh()es so that cursor is always in sram window. * src/Makefile.am: Fixed dtest dependencies. * src/main.c: Notify user if they didn't spec a program to run and sim expects one. * src/avr.h, src/stack.c: fixed stack pointer display update ommision. * src/disp/disp.c: Changed main loop to use select() for multiplexing the inputs. 2001-12-20 Theodore A. Roth * src/decoder.c: Changed how sreg is set in opcode handlers so as to only send display sreg changes once per handler. * src/avr.h, src/register.c, src/utils.c: Moved set_bit_in_byte() to utils.c and made it public. Add set_bit_in_word(). * src/avrcore.c: Print out PC and (PC*2) when -D option is given. * src/decoder.c: Fixed bug: Z flag wasn't using previous value in avr_op_CPC instruction. 2001-12-19 Theodore A. Roth * src/disp/Makefile.am, src/disp/disp.c, src/Makefile.am, src/avr.h, src/avrcore.c, src/display.c, src/display.h, src/dtest.c, src/eeprom.c, src/flash.c, src/main.c, src/memory.c, src/register.c, src/sram.c, src/vdevs.h, doc/simulavr.texi, config/enable_curses.m4, TODO, configure.in: Added curses based register and memory display. * ChangeLog: updated 2001-12-16 Theodore A. Roth * misc/gpl_header_h: Changed multiple inclusion macros to reduce potential for clashes. * src/decoder.c: Fixed a bug in the CP instruction which was clobbering a register. 2001-12-11 Theodore A. Roth * src/avrcore.c, src/memory.c: Fixed potential memory leaks due to incorrect object referencing. * src/avr.h, src/device.c, src/memory.c: Changed memory vdev list to use DList. * src/utils.c: Added dlist_add_head() function. * src/vdevs.h: Typedef'd an enum which wasn't. * TODO: Updated * src/avr.h, src/avrcore.c, src/devsupp.c, src/devsupp.h: Simplified mechanism for adding support for new microcontroller devices. * src/vdevs.h: Fixed a typo in a comment. * Makefile.am: Added ProjSummary to EXTRA_DIST. * src/devsupp.c, src/devsupp.h: Added files. Preparing to rework core-creation design to make adding support for new devices easier. * src/avrcore.c: Moved device creation functions to devsupp.c. * src/main.c: Added -L, --list-devices command line option. Changed to use devsupp.[ch] interface. * src/avr.h, src/gdb.h, src/vdevs.h: Changed multiple inclusion macros to reduce potential for clashes. * src/Makefile.am: Added devsupp.h to sources. * src/Makefile.am: Added gdb.c to EXTRA_DIST. Added devsupp.c to sources. 2001-12-10 Theodore A. Roth * ChangeLog: Converted to format which allows use of emacs to update from cvs logs. * ChangeLog, TODO, configure.in: 0.0.11-pre2 * Makefile_AVR_Rules: When generating .lst files for avr, dump .data section too. * src/stack.c, src/storage.c, src/timers.c, src/utils.c, src/avrcore.c, src/avrerror.c, src/avrmalloc.c, src/eeprom.c, src/flash.c, src/gdb.c, src/gdbserver.c, src/ports.c, src/register.c: Removed newlines from error message strings (do it in _avr_error()). * src/decoder.c: Removed newlines from error message strings (do it in _avr_error()). Fixed lpm/elpm addressing problem. (Is the fix right though?) * src/main.c: Removed newlines from error message strings (do it in _avr_error()). Dump core to a file instead of stderr. Dump core whenever avr_errror() is called. 2001-12-09 Theodore A. Roth * ChangeLog, TODO, configure.in: 0.0.11-pre1 * test_c/Makefile.am, test_c/deep_frame.c: Added deep_frame.c test program to project. * test_c/big_str.h, test_c/demo.c: Moved ugly string into big_str.h header. * src/avr.h, src/avrcore.c, src/gdbserver.c, src/memory.c: Added support for gdb querying io registers. 2001-12-08 Theodore A. Roth * src/gdbserver.c: Added support for writing registers via gdb remote protocol. 2001-12-07 Theodore A. Roth * src/gdbserver.c: Changed DATA_OFFSET to match what you get from avr-objdump output. * src/utils.c: Fixed: Adding dlist node after head would be immediately unref'd. 2001-12-06 Theodore A. Roth * TODO: Updated. * doc/simulavr.texi: Added object examples and discussion. * ChangeLog: Updated. * src/avrmalloc.c: Added newlines to error message string. Fixed avr_strdup so that it checks ptr before returning. * Makefile.am: Formating cleanup. * src/avrclass.c: Added comments for all the functions. * doc/simulavr.texi: Updated documentation. * doc/Makefile.am: Added html and pdf generation rules. 2001-12-05 Theodore A. Roth * src/avr.h, src/utils.c: Changed some dlist names for consistency * test_c/Makefile.am, test_c/demo_kr.c: Added demo_kr.c * test_c/demo.c: cond-compile out uglystring. * gdb-patches/README: updated * gdb-patches/gdb-5.0-avr-troth-patch: synced up with autogenerated patch * gdb-patches/get_gdb_patches.sh: synced up with gdb cvs tree * src/avrcore.c: Plugged potential memory leak. 2001-12-04 Theodore A. Roth * src/avr.h, src/avrcore.c, src/utils.c: Changed callback mechanism to use generic DList linked list. * src/avrcore.c, src/utils.c: Moved str2ffmt() and get_program_time() from avrcore.c to utils.c. * src/Makefile.am, src/avr.h, src/avrcore.c, src/utils.c: Added generic doubly, linked list (DList). Changed break point list to use DList. 2001-12-03 Theodore A. Roth * gdb-patches/get_gdb_patches.sh: Corrected comments explaining how to setup my gdb cvs. 2001-12-02 Theodore A. Roth * TODO, INSTALL, README, README.gdb, README.opcodes: Updated. * gdb-patches/README, gdb-patches/gdb-5.0-avr-gdbserver-patch, gdb-patches/gdb-5.0-avr-troth-patch, gdb-patches/get_gdb_patches.sh, gdb-patches/patcher.sh: Updated to handled my gdb branching scheme. * src/memory.c: Dumping core now outputs io register info in more readable format. 2001-11-30 Theodore A. Roth * src/gdbserver.c: Really fixed accept(2) failure mode problem. * gdb-patches/gdb-5.0-avr-troth-patch: Renaming of gdb-5.0-avr-gdbserver-patch to gdb-5.0-avr-troth-patch. * gdb-patches/get_gdb_patches.sh: Script for creating patches for gdb-5.0 from my gdb cvs tree. * src/Makefile.am: Delete symbolic links on a dist clean. * src/gdbserver.c: Made addrLength volatile so gcc won't compile it away when optimizing. 2001-11-29 Theodore A. Roth * Makefile.am: Moved doc dir to end of subdirs list. * src/Makefile.am, src/avr.h, src/avrcore.c, src/avrmalloc.c, src/gdb.c, src/gdb.h, src/gdbserver.c, src/main.c, src/memory.c: Deprecate gdb.c in favor of gdbserver.c - adds support for talking to gdb without the need for gdbserver. Improved breakpoint support. 2001-11-25 Theodore A. Roth * src/main.c: Made usage message values more concise. 2001-11-24 Theodore A. Roth * src/main.c, ChangeLog: Added -v, -version command line options. * ChangeLog, configure.in: Set version to 0.0.10 * src/avr.h, config/acconfig.h, Makefile.am, bootstrap, configure.in: Use acconfig.h to set byte, word, dword and qword sizes. 2001-11-22 Theodore A. Roth * TODO: Formatting and added more ac macro notes. 2001-11-21 Theodore A. Roth * Makefile.am: Added Makefile_AVR_Rules. Fixed typo. * Makefile.am: Added patcher.sh to EXTRA_DIST. * Makefile.am: Add -p to mkdir on dist-hook. * configure.in, test_c/Makefile.am, test_asm/test_8515/8515def.inc, test_asm/test_8515/Makefile.am, test_asm/test_8515/test_cntr.asm, test_asm/8515def.inc, test_asm/Makefile.am, test_asm/test.asm, src/Makefile.am, config/avr_binutils.m4, config/avr_cc.m4, config/avr_libc_headers.m4, config/check_gnu_make.m4, config/enable_tests.m4, ChangeLog, INSTALL, Makefile.am, Makefile_AVR_Rules, README, TODO: Convertion to autotools for build system. * doc/Makefile.am, doc/simulavr.texi: Added beginnings of texinfo based documentation. 2001-11-17 Theodore A. Roth * src/avr.h, src/avrcore.c, src/flash.c, src/gdb.c: Fixed to allow gdb to send odd memaddr or odd len on flash read/writes. 2001-11-16 Theodore A. Roth * bootstrap: Added autotools bootstrap script. * test_c/Makefile, test_asm/test_8515/Makefile, test_asm/Makefile, src/Makefile, Makefile, setup.py, MANIFEST.in: Removed Makefiles in convertions to gnu autotools. * ChangeLog: updated. * test_c/demo.c: Added a really long string to test PC wrapping. * src/avr.h, src/avrcore.c: Fixed problem with larger programs in which PC needed to wrap around. * misc/gpl_header_c, misc/gpl_header_h: Added gpl headers for c programs. 2001-11-14 Theodore A. Roth * ChangeLog, MANIFEST.in, setup.py: Updated for version 0.0.8. * gdb-patches/gdb-5.0-avr-gdbserver-patch: Fixed stepping bug. Added version comment to head of file. * gdb-patches/README: Added patcher.sh description. Removed comment about bug in stepping. * gdb-patches/patcher.sh: Simple script to automate patching and installing avr-gdb. * src/gdb.c: Commented out some diagnostic messages. * Makefile: Added MANIFEST to clean rule. * test_c/Makefile: Added *.lst to clean rule. * Makefile: Added test_c to sub_dirs. * src/gdb.h: Header file for gdb.c. * ChangeLog: updated * README.gdb: Readme file for controlling simulator with gdb * src/gdb.c: Support for running in gdb mode as an inferior of gdbserver. * src/main.c: Added gdb mode. * src/avrcore.c, src/avr.h: Added stack constants. Added BREAK_POINT and INVALID_OPCODE constants. Added break_pt field. Added Program Memory Space Access Methods. Added Break point access methods. * src/stack.c: Use STACK_POINTER_BASE and STACK_POINTER_SIZE instead of hardcoded values in constructor. * src/Makefile: Added gdb.c to main src list. * test_c/Makefile: Generated .lst file by default. * gdb-patches/README: Updated for first semi working gdb patch. * gdb-patches/gdb-5.0-avr-gdbserver-patch: Updated patch. Seems to be mostly working now. 2001-11-13 Theodore A. Roth * gdb-patches/gdb-5.0-avr-gdbserver-patch: Updated patch. Mostly works, but still not done. 2001-11-07 Theodore A. Roth * MANIFEST.in, setup.py, test_c/Makefile, test_c/demo.c: Added a simple avr C program to the project. * src/main.c: Changed getopt() to getopt_long. Added gdbserver mode option. * gdb-patches/README, gdb-patches/gdb-5.0-avr-gdbserver-patch, gdb-patches/gdb-5.0-avr-patch-0.1: Added gdb patches and README. 2001-11-02 Theodore A. Roth * ChangeLog, TODO, harness.py: Updated. Removed harness.py. * src/avrcore.c: Print out how many clock cycles were executed. * src/avrcore.c, src/timers.c, src/vdevs.h: Added TIMSK, TIFR registers via TimerIntr_T class. Added Timer/Counter 0 support. Added ability to stop simulator with a Ctrl-C keyboard interrupt. * src/main.c: Added -D command line option. * src/ports.c: Eliminated possible use of uninitialized variable. * src/avr.h: Added global_debug_inst_output. * src/register.c: Got rid of a few unnecessary casts. 2001-11-01 Theodore A. Roth * src/vdevs.h, src/register.c: Added core field to VDevice class and removed core field from any VDevice derived class. * src/eeprom.c: Added core field to VDevice class and removed core field from any VDevice derived class. Fixed contructor to use reset function correctly. * src/device.c, src/avrcore.c, src/avr.h: Added core field to VDevice class and removed core field from any VDevice derived class. * src/avr.h: Added comments to clk_cb and async_cb fields of core. * src/avrcore.c: Move get_program_time() out of avr_core_cb_exec. Now time val is passed as argument to allow time to either mean clocks or system time. * test_asm/test_8515/Makefile, test_asm/test_8515/test_toie0.asm, test_asm/test_8515/test_toie0_2.asm: Added tests for timer/counter 0 interrupts. 2001-10-31 Theodore A. Roth * INSTALL, README: Updated. * setup.py: Updated version. Modified so that it knows about move of python scripts into python dir. * test_asm/Makefile, Makefile: Added depend rule. * src/vdevs.h, src/register.c, src/eeprom.c, src/avrcore.c, src/avr.h: Added async_cb to core struct: Now there are two callback lists in the core. The old clk_cb list is only for callbacks that should be called every clock cycle. The new async_cb list is for callbacks that are called periodically even if the device is not being clocked. Changed ClkCB -> CB_T, ClkCB_FP -> CB_FP_T to make the existing callback code generic. Removed the callback type field and methods. Added CK and inst_CKS fields and methods. Added async_cb methods. 2001-10-30 Theodore A. Roth * src/decoder.c: Added inst_CKS setting to all opcode handlers. * src/register.c: Make sure that an installed toe_cb is removed after a reset. * ChangeLog, TODO: Updated. * src/vdevs.h: Split TimerIntr class into TIMSK and TIFR. * src/timers.c: Code to handle timer/counter functionality. * src/register.c: Removed TimerIntr comment. * src/avr.h, src/avrcore.c: Added clk_cb type methods. * src/Makefile: Added timers.c. 2001-10-29 Theodore A. Roth * src/avr.h, src/avrcore.c, src/eeprom.c, src/register.c: Added clock callback type distinctions. * src/avr.h, src/avrcore.c, src/decoder.c, src/register.c, src/vdevs.h: Encapsulation cleanups. Renaming to make some functions more descriptive. Added code to handle SLEEP modes via MCUCR. * src/Makefile: Added NDEBUG to DEBUG_FLAGS. Compile lib before main. 2001-10-26 Theodore A. Roth * ChangeLog: updated 2001-10-21 Theodore A. Roth * src/avr.h, src/avrcore.c, src/main.c, src/memory.c, src/ports.c, src/vdevs.h, ChangeLog, TODO: Got io ports as general digital io working. * test_asm/test_8515/test_port.asm: Rewrote to work correctly after testing on real hardware. 2001-10-19 Theodore A. Roth * src/ports.c, src/vdevs.h: Simplified port code. * test_asm/test_8515/test_port.asm: Added port test to project. * setup.py: ver to 0.0.5 * src/Makefile, src/avrcore.c, src/ports.c, src/vdevs.h: First cut at IO Ports. * src/main.c: Added device type listing to usage function. 2001-10-18 Theodore A. Roth * src/Makefile, src/avr.h, src/avrcore.c, src/intvects.c, src/main.c: Added support for 2313 device. * ChangeLog, TODO: Updated * test_asm/test.asm: Removed some commented out code. * src/register.c, src/vdevs.h: Starting timer/counter implementation. 2001-10-16 Theodore A. Roth * src/avr.h, src/avrcore.c, src/register.c: Added irq raise and clear functions. * src/register.c: Use interrupts issue the reset. * src/avrcore.c: Clear the interrupt flag after handling the interrupt. * src/Makefile, src/avr.h, src/avrcore.c, src/intvects.c: Added interrupt infrastructure. * src/avr.h: Removed eeprom property from AvrCore struct. * src/eeprom.c: Fixed a typo in a comment. * src/avrcore.c, src/register.c, src/vdevs.h: Renamed ascr -> acsr. That's the way it should have been named. * src/eeprom.c: Fixed use of uninitialized local variable. * TODO: updated * MANIFEST.in: Explicitly added Makefile to test_asm/test_8515. * test_asm/Makefile: Added tests to all rule. * ChangeLog, setup.py: updated * src/eeprom.c: Finished up the eeprom implementation. * src/vdevs.h: Finished up eeprom implementation. * src/register.c: Changed clock callback functions to have data be AvrClass. * src/avrcore.c: Changed callback result check to be more sane. Moved debug print statement. Updated eeprom_new arg lists. * src/avr.h: Changed ClkCB_FP typedef args. * Makefile: Added realclean rule. * test_asm/test_8515/test_eeprom.asm: Program to test the eeprom code. 2001-10-15 Theodore A. Roth * TODO, ChangeLog: updated * test_asm/test_8515/test_stack.asm: Improve use of macros. * setup.py: Updated version. * src/main.c: Added a global storage for the avrcore as an aid in debugging. * src/vdevs.h: Completed wdtcr class. * src/stack.c: Added reset handler for mem based stack pointer virtual device. * src/sram.c: Added reset handler. * src/register.c: Added reset handlers. Added wdtcr virtual device. * src/memory.c, src/eeprom.c: Added reset handler. * src/device.c: Added reset handler to VDevice. * src/decoder.c: Completed wdr instruction handler. Renamed opcode_FP to Opcode_FP. * src/avrcore.c: Improved get_program_time() to safely handle system clock rollovers. Added state property to avrcore class. Changed exec_instruction to exec_next_instruction and fixed bug in which PC/opcode weren't updated in the right order. Fixed bug in adding new nodes to clk_cb list. Added wdtcr vdevice to device generators. * src/avr.h: Added reset code. Added watchdog control register based reset. Reordered some typedefs for predeclarations. Added state codes to avrcore class. * test_asm/test_8515/test_wdr.asm, test_asm/test_8515/test_wdr2.asm: Test files for wdr instruction and wdtcr functionality. 2001-10-13 Theodore A. Roth * src/avr.h: Added program time to callback system. * src/avrcore.c: Added program time to clock callback functions. 2001-10-12 Theodore A. Roth * MANIFEST.in: Added asm include files * src/register.c, src/vdevs.h: Added watchdog class. * src/avrcore.c, src/avr.h: Added clock callback class. * src/avrcore.c: Added ascr. * src/register.c: Added ASCR methods. Fixed mcucr destroy. * src/vdevs.h: argument name changes. * src/avrcore.c, src/device.c, src/eeprom.c, src/register.c: * src/vdevs.h: Got rid of some magic numbers. Added mcucr vdevice. * src/avr.h: Added name field to virtual devices. Added avr_core_step(), mem_get_vdevice_by_{name,addr}() functions. * src/avrcore.c: Added avr_core_step() function. * src/eeprom.c: Added name to vdevice. * src/memory.c: Added vdev lookup by addr and name functions. Look up devices for core dump by name instead of address. * src/register.c, src/sram.c, src/stack.c: Added name to vdevice. * src/device.c: Added name field to vdevice. * src/Makefile: Changed dependency generation. 2001-10-11 Theodore A. Roth * src/vdevs.h: Added eecr mask. Added analog comp device. * src/eeprom.c: Added eecr mask. * src/avrcore.c: Added eecr_mask. * src/vdevs.h: Header for virtual devices. * src/avr.h: Moved virtual devices to vdevs.h. * src/avr.h, src/decoder.c: Made opcode handlers static. * src/Makefile, src/avr.h, src/avrcore.c, src/eeprom.c, * src/main.c, src/memory.c: Added eeprom virtual device. * src/avr.h, src/avrerror.c: Modified message functions to output file and line numbers. * src/Makefile: Added conditional rules to allow compiling with or without optimizations. * MANIFEST.in, Makefile, setup.py: Distribution updates. * README, TODO, harness.py: Updates. * src/Makefile, src/avr.h, src/avrclass.c, src/avrcore.c, src/avrerror.c, src/avrmalloc.c, src/decoder.c, src/device.c, src/flash.c, src/main.c, src/memory.c, src/op_names.c, src/register.c, src/sram.c, src/stack.c, src/storage.c: First checkin of source for C coded simulator. * test_asm/test_8515/test_blink.asm, test_asm/test_8515/test_stack.asm, test_asm/8515def.inc, test_asm/Makefile, test_asm/test.asm: Modified to work with avr-as instead of Atmel's avrasm. 2001-10-01 Theodore A. Roth * TODO: updated * Makefile, setup.py, MANIFEST.in: Updated to use setup.py and MANIFEST.in to build a distribution. * ChangeLog, INSTALL: Added. * harness.py: updated usage * README, README.opcodes, TODO: updated * Makefile, README, harness.py, setup.py, test_asm/Makefile: Added GPL header. * AUTHORS, COPYING, misc/gpl_header: Added. * harness.py: Added Connections class for handling port connections. * TODO, test_asm/test.asm: updated 2001-09-28 Theodore A. Roth * MANIFEST.in, Makefile, README, README.opcodes, TODO, harness.py, setup.py, test_asm/Makefile, test_asm/test.asm, test_asm/test_8515/test_blink.asm, test_asm/test_8515/test_stack.asm: Imported source. * MANIFEST.in, Makefile, README, README.opcodes, TODO, harness.py, setup.py, test_asm/Makefile, test_asm/test.asm, test_asm/test_8515/test_blink.asm, test_asm/test_8515/test_stack.asm: New file.