diff --git a/avrdude/stk500.c b/avrdude/stk500.c
index 3c9135cc..a44b46cf 100644
--- a/avrdude/stk500.c
+++ b/avrdude/stk500.c
@@ -633,29 +633,38 @@ static int stk500_initialize(PROGRAMMER * pgm, AVRPART * p)
   }
 
   if (n_extparms) {
-    buf[0] = n_extparms+1;
-    /*
-     * m is currently pointing to eeprom memory if the part has it
-     */
-    if (m)
-      buf[1] = m->page_size;
-    else
-      buf[1] = 0;
-
-    buf[2] = p->pagel;
-    buf[3] = p->bs2;
-
-    if (n_extparms == 4) {
-      if (p->reset_disposition == RESET_DEDICATED)
-        buf[4] = 0;
-      else
-        buf[4] = 1;
+    if ((p->pagel == 0) || (p->bs2 == 0)) {
+      fprintf(stderr, 
+              "%s: please define PAGEL and BS2 signals in the configuration "
+              "file for part %s\n", 
+              progname, p->desc);
     }
+    else {
+      buf[0] = n_extparms+1;
 
-    rc = stk500_set_extended_parms(pgm, n_extparms+1, buf);
-    if (rc) {
-      fprintf(stderr, "%s: stk500_initialize(): failed\n", progname);
-      exit(1);
+      /*
+       * m is currently pointing to eeprom memory if the part has it
+       */
+      if (m)
+        buf[1] = m->page_size;
+      else
+        buf[1] = 0;
+      
+      buf[2] = p->pagel;
+      buf[3] = p->bs2;
+      
+      if (n_extparms == 4) {
+        if (p->reset_disposition == RESET_DEDICATED)
+          buf[4] = 0;
+        else
+          buf[4] = 1;
+      }
+      
+      rc = stk500_set_extended_parms(pgm, n_extparms+1, buf);
+      if (rc) {
+        fprintf(stderr, "%s: stk500_initialize(): failed\n", progname);
+        exit(1);
+      }
     }
   }