Cumulative patch for pic16 port
[fw/sdcc] / src / pic16 / device.c
index 2364bd9e7cb67ecaa3f729dd4e3493eded9115a2..f63d5095ebede308303a215e72d6bae59227b497 100644 (file)
 
 
 static PIC16_device Pics16[] = {
+//  {
+//    {"p18f242", "18f242", "pic18f242", "f242"},              // aliases
+//    0,
+//    0x300,                                           // RAMsize
+//    0,
+//    { 0xf80, 0xfff },       /* PIC18F242 range of SFR's */
+//     {
+//             /* PIC18F242 configuration words */
+//             0x300001,
+//             0x30000d,
+//             { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
+//             { -1, 0, 0xff } /* 4 */  , { 0x01, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
+//             { -1, 0, 0xff } /* 7 */  , { 0x03, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
+//             { 0x03, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x03, 0, 0xff } /* c */ , 
+//             { 0x40, 0, 0xff } /* d */ } 
+//     }
+//  },
+
   {
-    {"p18f242", "18f242", "pic18f242", "f242"},                // aliases
+    {"p18f242", "18f242", "pic18f242", "f242"},
     0,
-    0x300,                                             // bank mask
-    0x300,                                             // RAMsize
+    0x300,     /* 768 */
+    0x80,
     0,
-       {
-               /* PIC18F242 configuration words */
-               0x300001,
-               0x30000d,
-               { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
-               { -1, 0, 0xff } /* 4 */  , { 0x01, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
-               { -1, 0, 0xff } /* 7 */  , { 0x03, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
-               { 0x03, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x03, 0, 0xff } /* c */ , 
-               { 0x40, 0, 0xff } /* d */ } 
-       }
+    { 0xf80, 0xfff },  /* PIC18F242 range of SFR's */
+    {
+    /* PIC18F242 configuration words */
+      0x300001,
+      0x30000d,
+      { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
+      { -1, 0, 0xff } /* 4 */  , { 0x01, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
+      { -1, 0, 0xff } /* 7 */  , { 0x03, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
+      { 0x03, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x03, 0, 0xff } /* c */ , 
+      { 0x40, 0, 0xff } /* d */  }
+    }
   },
-
   {
-    {"p18f248", "18f248", "pic18f248", "f248"},                // aliases
+    {"p18f248", "18f248", "pic18f248", "f248"},
     0,
-    0x300,                                             // bank mask
-    0x300,                                             // RAMsize
+    0x300,     /* 768 */
+    0x60,
     0,
-       {
-               /* PIC18F248 configuration words */
-               0x300001,
-               0x30000d,
-               { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
-               { -1, 0, 0xff } /* 4 */  , { -1, 0, 0xff } /* 5 */  , { 0x85, 0, 0xff } /* 6 */ , 
-               { -1, 0, 0xff } /* 7 */  , { 0x03, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
-               { 0x03, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x03, 0, 0xff } /* c */ , 
-               { 0x40, 0, 0xff } /* d */ } 
-       }
+    { 0xf00, 0xfff },  /* PIC18F248 range of SFR's */
+    {
+    /* PIC18F248 configuration words */
+      0x300001,
+      0x30000d,
+      { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
+      { -1, 0, 0xff } /* 4 */  , { -1, 0, 0xff } /* 5 */  , { 0x85, 0, 0xff } /* 6 */ , 
+      { -1, 0, 0xff } /* 7 */  , { 0x03, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
+      { 0x03, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x03, 0, 0xff } /* c */ , 
+      { 0x40, 0, 0xff } /* d */  }
+    }
   },
-
   {
-    {"p18f252", "18f252", "pic18f252", "f252"},                // aliases
+    {"p18f252", "18f252", "pic18f252", "f252"},
     0,
-    0x600,                                             // bank mask
-    0x600,                                             // RAMsize
+    0x600,     /* 1536 */
+    0x80,
     0,
-       {
-               /* PIC18F252 configuration words */
-               0x300001,
-               0x30000d,
-               { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
-               { -1, 0, 0xff } /* 4 */  , { 0x01, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
-               { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
-               { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
-               { 0x40, 0, 0xff } /* d */ } 
-       }
+    { 0xf80, 0xfff },  /* PIC18F252 range of SFR's */
+    {
+    /* PIC18F252 configuration words */
+      0x300001,
+      0x30000d,
+      { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
+      { -1, 0, 0xff } /* 4 */  , { 0x01, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
+      { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
+      { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
+      { 0x40, 0, 0xff } /* d */  }
+    }
   },
-
   {
-    {"p18f258", "18f258", "pic18f258", "f258"},                // aliases
+    {"p18f258", "18f258", "pic18f258", "f258"},
     0,
-    0x600,                                             // bank mask
-    0x600,                                             // RAMsize
+    0x600,     /* 1536 */
+    0x60,
     0,
-       {
-               /* PIC18F258 configuration words */
-               0x300001,
-               0x30000d,
-               { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
-               { -1, 0, 0xff } /* 4 */  , { -1, 0, 0xff } /* 5 */  , { 0x85, 0, 0xff } /* 6 */ , 
-               { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
-               { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
-               { 0x40, 0, 0xff } /* d */ } 
-       }
+    { 0xf00, 0xfff },  /* PIC18F258 range of SFR's */
+    {
+    /* PIC18F258 configuration words */
+      0x300001,
+      0x30000d,
+      { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
+      { -1, 0, 0xff } /* 4 */  , { -1, 0, 0xff } /* 5 */  , { 0x85, 0, 0xff } /* 6 */ , 
+      { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
+      { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
+      { 0x40, 0, 0xff } /* d */  }
+    }
   },
-
   {
-    {"p18f442", "18f442", "pic18f442", "f442"},                // aliases
+    {"p18f442", "18f442", "pic18f442", "f442"},
     0,
-    0x300,                                             // bank mask
-    0x300,                                             // RAMsize
+    0x300,     /* 768 */
+    0x80,
     0,
-       {
-               /* PIC18F442 configuration words */
-               0x300001,
-               0x30000d,
-               { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
-               { -1, 0, 0xff } /* 4 */  , { 0x01, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
-               { -1, 0, 0xff } /* 7 */  , { 0x03, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
-               { 0x03, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x03, 0, 0xff } /* c */ , 
-               { 0x40, 0, 0xff } /* d */ } 
-       }
+    { 0xf80, 0xfff },  /* PIC18F442 range of SFR's */
+    {
+    /* PIC18F442 configuration words */
+      0x300001,
+      0x30000d,
+      { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
+      { -1, 0, 0xff } /* 4 */  , { 0x01, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
+      { -1, 0, 0xff } /* 7 */  , { 0x03, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
+      { 0x03, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x03, 0, 0xff } /* c */ , 
+      { 0x40, 0, 0xff } /* d */  }
+    }
   },
-
   {
-    {"p18f448", "18f448", "pic18f448", "f448"},                // aliases
+    {"p18f448", "18f448", "pic18f448", "f448"},
     0,
-    0x300,                                             // bank mask
-    0x300,                                             // RAMsize
+    0x300,     /* 768 */
+    0x60,
     0,
-       {
-               /* PIC18F448 configuration words */
-               0x300001,
-               0x30000d,
-               { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
-               { -1, 0, 0xff } /* 4 */  , { -1, 0, 0xff } /* 5 */  , { 0x85, 0, 0xff } /* 6 */ , 
-               { -1, 0, 0xff } /* 7 */  , { 0x03, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
-               { 0x03, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x03, 0, 0xff } /* c */ , 
-               { 0x40, 0, 0xff } /* d */ } 
-       }
+    { 0xf00, 0xfff },  /* PIC18F448 range of SFR's */
+    {
+    /* PIC18F448 configuration words */
+      0x300001,
+      0x30000d,
+      { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
+      { -1, 0, 0xff } /* 4 */  , { -1, 0, 0xff } /* 5 */  , { 0x85, 0, 0xff } /* 6 */ , 
+      { -1, 0, 0xff } /* 7 */  , { 0x03, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
+      { 0x03, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x03, 0, 0xff } /* c */ , 
+      { 0x40, 0, 0xff } /* d */  }
+    }
   },
-  
   {
-    {"p18f452", "18f452", "pic18f452", "f452"},                // aliases
+    {"p18f452", "18f452", "pic18f452", "f452"},
     0,
-    0x600,                                             // bank mask
-    0x600,                                             // RAMsize
+    0x600,     /* 1536 */
+    0x80,
     0,
-       {
-               /* PIC18F452 configuration words */
-               0x300001,
-               0x30000d,
-               { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
-               { -1, 0, 0xff } /* 4 */  , { 0x01, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
-               { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
-               { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
-               { 0x40, 0, 0xff } /* d */ } 
-       }
+    { 0xf80, 0xfff },  /* PIC18F452 range of SFR's */
+    {
+    /* PIC18F452 configuration words */
+      0x300001,
+      0x30000d,
+      { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
+      { -1, 0, 0xff } /* 4 */  , { 0x01, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
+      { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
+      { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
+      { 0x40, 0, 0xff } /* d */  }
+    }
   },
-
   {
-    {"p18f458", "18f458", "pic18f458", "f458"},                // aliases
+    {"p18f458", "18f458", "pic18f458", "f458"},
     0,
-    0x600,                                             // bank mask
-    0x600,                                             // RAMsize
+    0x600,     /* 1536 */
+    0x60,
     0,
-       {
-               /* PIC18F458 configuration words */
-               0x300001,
-               0x30000d,
-               { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
-               { -1, 0, 0xff } /* 4 */  , { -1, 0, 0xff } /* 5 */  , { 0x85, 0, 0xff } /* 6 */ , 
-               { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
-               { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
-               { 0x40, 0, 0xff } /* d */ } 
-       }
+    { 0xf00, 0xfff },  /* PIC18F458 range of SFR's */
+    {
+    /* PIC18F458 configuration words */
+      0x300001,
+      0x30000d,
+      { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
+      { -1, 0, 0xff } /* 4 */  , { -1, 0, 0xff } /* 5 */  , { 0x85, 0, 0xff } /* 6 */ , 
+      { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
+      { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
+      { 0x40, 0, 0xff } /* d */  }
+    }
   },
-
   {
-    {"p18f1220", "18f1220", "pic18f1220", "f1220"},    // aliases
+    {"p18f1220", "18f1220", "pic18f1220", "f1220"},
     0,
-    0x200,
-    0x200,
+    0x100,     /* 256 */
+    0x80,
     0,
-       {
-               /* PIC18F1220 configuration words */
-               0x300001,
-               0x30000d,
-               { { 0xcf, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
-               { -1, 0, 0xff } /* 4 */  , { 0x80, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
-               { -1, 0, 0xff } /* 7 */  , { 0x03, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
-               { 0x03, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x03, 0, 0xff } /* c */ , 
-               { 0x40, 0, 0xff } /* d */ } 
-       }
+    { 0xf80, 0xfff },  /* PIC18F1220 range of SFR's */
+    {
+    /* PIC18F1220 configuration words */
+      0x300001,
+      0x30000d,
+      { { 0xcf, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
+      { -1, 0, 0xff } /* 4 */  , { 0x80, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
+      { -1, 0, 0xff } /* 7 */  , { 0x03, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
+      { 0x03, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x03, 0, 0xff } /* c */ , 
+      { 0x40, 0, 0xff } /* d */  }
+    }
   },
-
-
   {
-    {"p18f6520", "18f6520", "pic18f6520", "f6520"},    // aliases
+    {"p18f6520", "18f6520", "pic18f6520", "f6520"},
     0,
-    0x800,                                             // bank mask
-    0x800,                                             // RAMsize
-    1,
-       {
-               /* PIC18F6520 configuration words */
-               0x300001,
-               0x30000d,
-               { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
-               { 0x80, 0, 0xff } /* 4 */ , { 0x88, 0, 0xff } /* 5 */ , { -1, 0, 0xff } /* 6 */  , 
-               { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
-               { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
-               { 0x40, 0, 0xff } /* d */ } 
-       }
+    0x800,     /* 2048 */
+    0x60,
+    0,
+    { 0xf6b, 0xfff },  /* PIC18F6520 range of SFR's */
+    {
+    /* PIC18F6520 configuration words */
+      0x300001,
+      0x30000d,
+      { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
+      { 0x80, 0, 0xff } /* 4 */ , { 0x88, 0, 0xff } /* 5 */ , { -1, 0, 0xff } /* 6 */  , 
+      { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
+      { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
+      { 0x40, 0, 0xff } /* d */  }
+    }
   },
-
   {
-    {"p18f6620", "18f6620", "pic18f6620", "f6620"},    // aliases
+    {"p18f6620", "18f6620", "pic18f6620", "f6620"},
     0,
-    0xf00,                                             // bank mask
-    0xf00,                                             // RAMsize
-    1,
-       {
-               /* PIC18F6620 configuration words */
-               0x300001,
-               0x30000d,
-               { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
-               { -1, 0, 0xff } /* 4 */  , { 0x01, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
-               { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
-               { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
-               { 0x40, 0, 0xff } /* d */ } 
-       }
+    0xf00,     /* 3840 */
+    0x60,
+    0,
+    { 0xf6b, 0xfff },  /* PIC18F6620 range of SFR's */
+    {
+    /* PIC18F6620 configuration words */
+      0x300001,
+      0x30000d,
+      { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
+      { -1, 0, 0xff } /* 4 */  , { 0x01, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
+      { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
+      { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
+      { 0x40, 0, 0xff } /* d */  }
+    }
   },
-
   {
-    {"p18f6680", "18f6680", "pic18f6680", "f6680"},    // aliases
+    {"p18f6680", "18f6680", "pic18f6680", "f6680"},
     0,
-    0xc00,                                             // bank mask
-    0xc00,                                             // RAMsize
-    1,
-       {
-               /* PIC18F6680 configuration words */
-               0x300001,
-               0x30000d,
-               { { 0x2f, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
-               { -1, 0, 0xff } /* 4 */  , { 0x83, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
-               { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
-               { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
-               { 0x40, 0, 0xff } /* d */ } 
-       }
+    0xf00,     /* 3840 */
+    0x60,
+    0,
+    { 0xf00, 0xfff },  /* PIC18F6680 range of SFR's */
+    {
+    /* PIC18F6680 configuration words */
+      0x300001,
+      0x30000d,
+      { { 0x2f, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
+      { -1, 0, 0xff } /* 4 */  , { 0x83, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
+      { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
+      { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
+      { 0x40, 0, 0xff } /* d */  }
+    }
   },
-
   {
-    {"p18f6720", "18f6720", "pic18f6720", "f6720"},    // aliases
+    {"p18f6720", "18f6720", "pic18f6720", "f6720"},
     0,
-    0xf00,                                             // bank mask
-    0xf00,                                             // RAMsize
-    1,
-       {
-               /* PIC18F6720 configuration words */
-               0x300001,
-               0x30000d,
-               { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
-               { -1, 0, 0xff } /* 4 */  , { 0x01, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
-               { -1, 0, 0xff } /* 7 */  , { 0xff, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
-               { 0xff, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0xff, 0, 0xff } /* c */ , 
-               { 0x40, 0, 0xff } /* d */ } 
-       }
+    0xf00,     /* 3840 */
+    0x60,
+    0,
+    { 0xf6b, 0xfff },  /* PIC18F6720 range of SFR's */
+    {
+    /* PIC18F6720 configuration words */
+      0x300001,
+      0x30000d,
+      { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
+      { -1, 0, 0xff } /* 4 */  , { 0x01, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
+      { -1, 0, 0xff } /* 7 */  , { 0xff, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
+      { 0xff, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0xff, 0, 0xff } /* c */ , 
+      { 0x40, 0, 0xff } /* d */  }
+    }
   },
-
   {
-    {"p18f8520", "18f8520", "pic18f8520", "f8520"},    // aliases
+    {"p18f8520", "18f8520", "pic18f8520", "f8520"},
     0,
-    0x800,                                             // bank mask
-    0x800,                                             // RAMsize
+    0x800,     /* 2048 */
+    0x60,
     1,
-       {
-               /* PIC18F8520 configuration words */
-               0x300001,
-               0x30000d,
-               { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
-               { 0x83, 0, 0xff } /* 4 */ , { 0x88, 0, 0xff } /* 5 */ , { -1, 0, 0xff } /* 6 */  , 
-               { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
-               { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
-               { 0x40, 0, 0xff } /* d */ } 
-       }
+    { 0xf6b, 0xfff },  /* PIC18F8520 range of SFR's */
+    {
+    /* PIC18F8520 configuration words */
+      0x300001,
+      0x30000d,
+      { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
+      { 0x83, 0, 0xff } /* 4 */ , { 0x88, 0, 0xff } /* 5 */ , { -1, 0, 0xff } /* 6 */  , 
+      { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
+      { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
+      { 0x40, 0, 0xff } /* d */  }
+    }
   },
-
   {
-    {"p18f8620", "18f8620", "pic18f8620", "f8620"},    // aliases
+    {"p18f8620", "18f8620", "pic18f8620", "f8620"},
     0,
-    0xf00,                                             // bank mask
-    0xf00,                                             // RAMsize
+    0xf00,     /* 3840 */
+    0x60,
     1,
-       {
-               /* PIC18F8620 configuration words */
-               0x300001,
-               0x30000d,
-               { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
-               { 0x83, 0, 0xff } /* 4 */ , { 0x01, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
-               { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
-               { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
-               { 0x40, 0, 0xff } /* d */ }
-       }
+    { 0xf6b, 0xfff },  /* PIC18F8620 range of SFR's */
+    {
+    /* PIC18F8620 configuration words */
+      0x300001,
+      0x30000d,
+      { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
+      { 0x83, 0, 0xff } /* 4 */ , { 0x01, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
+      { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
+      { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
+      { 0x40, 0, 0xff } /* d */  }
+    }
   },
   {
-    {"p18f8680", "18f8680", "pic18f8680", "f8680"},    // aliases
+    {"p18f8680", "18f8680", "pic18f8680", "f8680"},
     0,
-    0xc00,                                             // bank mask
-    0x800,                                             // RAMsize
-    1,
-       {
-               /* PIC18F8680 configuration words */
-               0x300001,
-               0x30000d,
-               { { 0x2f, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
-               { 0x83, 0, 0xff } /* 4 */ , { 0x83, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
-               { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
-               { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
-               { 0x40, 0, 0xff } /* d */ }
-       }
+    0xf00,     /* 3840 */
+    0x60,
+    0,
+    { 0xf00, 0xfff },  /* PIC18F8680 range of SFR's */
+    {
+    /* PIC18F8680 configuration words */
+      0x300001,
+      0x30000d,
+      { { 0x2f, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
+      { 0x83, 0, 0xff } /* 4 */ , { 0x83, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
+      { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
+      { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
+      { 0x40, 0, 0xff } /* d */  }
+    }
   },
-
   {
-    {"p18f8720", "18f8720", "pic18f8720", "f8720"},    // aliases
+    {"p18f8720", "18f8720", "pic18f8720", "f8720"},
     0,
-    0xf00,                                             // bank mask
-    0xf00,                                             // RAMsize
+    0xf00,     /* 3840 */
+    0x60,
     1,
-       {
-               /* PIC18F8720 configuration words */
-               0x300001,
-               0x30000d,
-               { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
-               { 0x83, 0, 0xff } /* 4 */ , { 0x01, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
-               { -1, 0, 0xff } /* 7 */  , { 0xff, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
-               { 0xff, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0xff, 0, 0xff } /* c */ , 
-               { 0x40, 0, 0xff } /* d */ }
-       }
-  }
+    { 0xf6b, 0xfff },  /* PIC18F8720 range of SFR's */
+    {
+    /* PIC18F8720 configuration words */
+      0x300001,
+      0x30000d,
+      { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
+      { 0x83, 0, 0xff } /* 4 */ , { 0x01, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
+      { -1, 0, 0xff } /* 7 */  , { 0xff, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
+      { 0xff, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0xff, 0, 0xff } /* c */ , 
+      { 0x40, 0, 0xff } /* d */  }
+    }
+  },
 
 };
 
@@ -1084,7 +1103,6 @@ void pic16_assignConfigWordValue(int address, int value)
 {
   int i;
 
-
         for(i=0;i<pic16->cwInfo.confAddrEnd-pic16->cwInfo.confAddrStart+1;i++) {
                 if((address == pic16->cwInfo.confAddrStart+i)
                   && (pic16->cwInfo.crInfo[i].mask != -1)) {