From 39b1f7d02b11856651a4408edcca2249902ca18d Mon Sep 17 00:00:00 2001
From: "Brian S. Dean" <bsd@bsdhome.com>
Date: Sat, 23 Nov 2002 00:52:15 +0000
Subject: [PATCH] term.c - when in interactive terminal mode and dumping memory
 using          the 'dump <memtype>' command without any address information, 
         and the end of memory is reached, wrap back around to zero on        
  the next invocation.

CHANGELOG - describe changes

main.c - update version number


git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@157 81a1dc3b-b13d-400b-aceb-764788c761c2
---
 CHANGELOG | 19 +++++++++++++++++++
 main.c    |  2 +-
 term.c    | 16 +++++++++++-----
 3 files changed, 31 insertions(+), 6 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index fa4065b5..6062f4f0 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -4,6 +4,25 @@ Approximate change log for AVRPROG by version
 
 ----------------------------------------------------------------------
 
+Version 2.1.5:
+
+  * When getting ready to initiate communications with the AVR device,
+    first pull /RESET low for a short period of time before enabling
+    the buffer chip.  This sequence allows the AVR to be reset before
+    the buffer is enabled to avoid a short period of time where the
+    AVR may be driving the programming lines at the same time the
+    programmer tries to.  Of course, if a buffer is being used, then
+    the /RESET line from the programmer needs to be directly connected
+    to the AVR /RESET line and not via the buffer chip.
+
+    Feature contributed by Rick C. Petty <rick@KIWI-Computer.com>.
+
+  * When in interactive terminal mode and dumping memory using the
+    'dump <memtype>' command without any address information, and the
+    end of memory is reached, wrap back around to zero on the next
+    invocation.
+
+
 Version 2.1.4:
 
   * Fix -Y option.
diff --git a/main.c b/main.c
index 6eeddfe9..4e15d7fd 100644
--- a/main.c
+++ b/main.c
@@ -115,7 +115,7 @@ char ** modules[N_MODULES] = {
   &term_version 
 };
 
-char * version      = "2.1.4";
+char * version      = "2.1.5";
 
 char * main_version = "$Id$";
 
diff --git a/term.c b/term.c
index 8263bcd8..9952fab7 100644
--- a/term.c
+++ b/term.c
@@ -256,11 +256,17 @@ int cmd_dump(int fd, struct avrpart * p, int argc, char * argv[])
 
   maxsize = mem->size;
 
-  if (addr > maxsize) {
-    fprintf(stderr, 
-            "%s (dump): address 0x%05lx is out of range for %s memory\n",
-            progname, addr, mem->desc);
-    return -1;
+  if (addr >= maxsize) {
+    if (argc == 2) {
+      /* wrap around */
+      addr = 0;
+    }
+    else {
+      fprintf(stderr, 
+              "%s (dump): address 0x%05lx is out of range for %s memory\n",
+              progname, addr, mem->desc);
+      return -1;
+    }
   }
 
   /* trim len if nessary to not read past the end of memory */