48b094c4a396f2c4af4698eb1fd1df3f7ad8c2a0
[fw/sdcc] / src / pic16 / devices.inc
1 /*-------------------------------------------------------------------------
2   device.inc - pic16 device descriptions for inclusion into device.c
3
4    Written By -  Scott Dattalo scott@dattalo.com
5    Ported to PIC16 By -  Martin Dubuc m.dubuc@rogers.com
6    Moved from device.c - Raphael Neider <rneider AT web.de>
7
8    This program is free software; you can redistribute it and/or modify it
9    under the terms of the GNU General Public License as published by the
10    Free Software Foundation; either version 2, or (at your option) any
11    later version.
12    
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17    
18    You should have received a copy of the GNU General Public License
19    along with this program; if not, write to the Free Software
20    Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21
22    $Id$
23 -------------------------------------------------------------------------*/
24
25 /* This file is included into device.c in order to populate the 
26  * Pics16 array with the various device's descriptions.
27  * For a reference of the structure to be filled in here see
28  * PIC16_device in device.h.
29  *
30  * The list is scanned top-down, the first device entry matching the
31  * desired processor name will be used. Temporary overrides of faulty
32  * device descriptions can be specified be placing them near the top
33  * of this file.
34  */
35
36 //  {
37 //    {"p18f242", "18f242", "pic18f242", "f242", "18F242"},             // aliases
38 //    0,
39 //    0x300,                                            // RAMsize
40 //    0,
41 //    { 0xf80, 0xfff },       /* PIC18F242 range of SFR's */
42 //      {
43 //              /* PIC18F242 configuration words */
44 //              0x300001,
45 //              0x30000d,
46 //              { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
47 //              { -1, 0, 0xff } /* 4 */  , { 0x01, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
48 //              { -1, 0, 0xff } /* 7 */  , { 0x03, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
49 //              { 0x03, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x03, 0, 0xff } /* c */ , 
50 //              { 0x40, 0, 0xff } /* d */ } 
51 //      }
52 //  },
53
54   {
55     {"p18f242", "18f242", "pic18f242", "f242"},
56     0,
57     0x300,      /* 768 */
58     0x80,
59     0,
60     { 0xf80, 0xfff },   /* PIC18F242 range of SFR's */
61     {
62     /* PIC18F242 configuration words */
63       0x300001,
64       0x30000d,
65       { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
66       { -1, 0, 0xff } /* 4 */  , { 0x01, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
67       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
68       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
69       { 0x40, 0, 0xff } /* d */  }
70     },
71     { 0x200000, 0x200007, 
72       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
73         { 0, 0 }, { 0, 0 }, { 0, 0 } }
74     }
75   },
76   {
77     {"p18f248", "18f248", "pic18f248", "f248"},
78     0,
79     0x300,      /* 768 */
80     0x60,
81     0,
82     { 0xf00, 0xfff },   /* PIC18F248 range of SFR's */
83     {
84     /* PIC18F248 configuration words */
85       0x300001,
86       0x30000d,
87       { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
88       { -1, 0, 0xff } /* 4 */  , { -1, 0, 0xff } /* 5 */  , { 0x85, 0, 0xff } /* 6 */ , 
89       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
90       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
91       { 0x40, 0, 0xff } /* d */  }
92     },
93     { 0x200000, 0x200007, 
94       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
95         { 0, 0 }, { 0, 0 }, { 0, 0 } }
96     }
97   },
98   {
99     {"p18f252", "18f252", "pic18f252", "f252"},
100     0,
101     0x600,      /* 1536 */
102     0x80,
103     0,
104     { 0xf80, 0xfff },   /* PIC18F252 range of SFR's */
105     {
106     /* PIC18F252 configuration words */
107       0x300001,
108       0x30000d,
109       { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
110       { -1, 0, 0xff } /* 4 */  , { 0x01, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
111       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
112       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
113       { 0x40, 0, 0xff } /* d */  }
114     },
115     { 0x200000, 0x200007, 
116       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
117         { 0, 0 }, { 0, 0 }, { 0, 0 } }
118     }
119   },
120   {
121     {"p18f258", "18f258", "pic18f258", "f258"},
122     0,
123     0x600,      /* 1536 */
124     0x60,
125     0,
126     { 0xf00, 0xfff },   /* PIC18F258 range of SFR's */
127     {
128     /* PIC18F258 configuration words */
129       0x300001,
130       0x30000d,
131       { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
132       { -1, 0, 0xff } /* 4 */  , { -1, 0, 0xff } /* 5 */  , { 0x85, 0, 0xff } /* 6 */ , 
133       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
134       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
135       { 0x40, 0, 0xff } /* d */  }
136     },
137     { 0x200000, 0x200007, 
138       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
139         { 0, 0 }, { 0, 0 }, { 0, 0 } }
140     }
141   },
142   {
143     {"p18f442", "18f442", "pic18f442", "f442"},
144     0,
145     0x300,      /* 768 */
146     0x80,
147     0,
148     { 0xf80, 0xfff },   /* PIC18F442 range of SFR's */
149     {
150     /* PIC18F442 configuration words */
151       0x300001,
152       0x30000d,
153       { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
154       { -1, 0, 0xff } /* 4 */  , { 0x01, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
155       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
156       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
157       { 0x40, 0, 0xff } /* d */  }
158     },
159     { 0x200000, 0x200007, 
160       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
161         { 0, 0 }, { 0, 0 }, { 0, 0 } }
162     }
163   },
164   {
165     {"p18f448", "18f448", "pic18f448", "f448"},
166     0,
167     0x300,      /* 768 */
168     0x60,
169     0,
170     { 0xf00, 0xfff },   /* PIC18F448 range of SFR's */
171     {
172     /* PIC18F448 configuration words */
173       0x300001,
174       0x30000d,
175       { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
176       { -1, 0, 0xff } /* 4 */  , { -1, 0, 0xff } /* 5 */  , { 0x85, 0, 0xff } /* 6 */ , 
177       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
178       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
179       { 0x40, 0, 0xff } /* d */  }
180     },
181     { 0x200000, 0x200007, 
182       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
183         { 0, 0 }, { 0, 0 }, { 0, 0 } }
184     }
185   },
186   {
187     {"p18f452", "18f452", "pic18f452", "f452"},
188     0,
189     0x600,      /* 1536 */
190     0x80,
191     0,
192     { 0xf80, 0xfff },   /* PIC18F452 range of SFR's */
193     {
194     /* PIC18F452 configuration words */
195       0x300001,
196       0x30000d,
197       { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
198       { -1, 0, 0xff } /* 4 */  , { 0x01, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
199       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
200       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
201       { 0x40, 0, 0xff } /* d */  }
202     },
203     { 0x200000, 0x200007, 
204       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
205         { 0, 0 }, { 0, 0 }, { 0, 0 } }
206     }
207   },
208   {
209     {"p18f458", "18f458", "pic18f458", "f458"},
210     0,
211     0x600,      /* 1536 */
212     0x60,
213     0,
214     { 0xf00, 0xfff },   /* PIC18F458 range of SFR's */
215     {
216     /* PIC18F458 configuration words */
217       0x300001,
218       0x30000d,
219       { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
220       { -1, 0, 0xff } /* 4 */  , { -1, 0, 0xff } /* 5 */  , { 0x85, 0, 0xff } /* 6 */ , 
221       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
222       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
223       { 0x40, 0, 0xff } /* d */  }
224     },
225     { 0x200000, 0x200007, 
226       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
227         { 0, 0 }, { 0, 0 }, { 0, 0 } }
228     }
229   },
230   {
231     {"p18f1220", "18f1220", "pic18f1220", "f1220"},
232     0,
233     0x100,      /* 256 */
234     0x80,
235     0,
236     { 0xf80, 0xfff },   /* PIC18F1220 range of SFR's */
237     {
238     /* PIC18F1220 configuration words */
239       0x300001,
240       0x30000d,
241       { { 0xcf, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
242       { -1, 0, 0xff } /* 4 */  , { 0x80, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
243       { -1, 0, 0xff } /* 7 */  , { 0x03, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
244       { 0x03, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x03, 0, 0xff } /* c */ , 
245       { 0x40, 0, 0xff } /* d */  }
246     },
247     { 0x200000, 0x200007, 
248       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
249         { 0, 0 }, { 0, 0 }, { 0, 0 } }
250     }
251   },
252   {
253     {"p18f1320", "18f1320", "pic18f1320", "f1320"},
254     0,
255     0x100,      /* 256 */
256     0x80,
257     0,
258     { 0xf80, 0xfff },   /* PIC18F1320 range of SFR's */
259     {
260     /* PIC18F1320 configuration words */
261       0x300001,
262       0x30000d,
263       { { 0xcf, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
264       { -1, 0, 0xff } /* 4 */  , { 0x80, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
265       { -1, 0, 0xff } /* 7 */  , { 0x03, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
266       { 0x03, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x03, 0, 0xff } /* c */ , 
267       { 0x40, 0, 0xff } /* d */  }
268     },
269     { 0x200000, 0x200007, 
270       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
271         { 0, 0 }, { 0, 0 }, { 0, 0 } }
272     }
273   },
274   {
275     {"p18f2220", "18f2220", "pic18f2220", "f2220"},
276     0,
277     0x200,      /* 512 */
278     0x80,
279     0,
280     { 0xf80, 0xfff },   /* PIC18F2220 range of SFR's */
281     {
282     /* PIC18F2220 configuration words */
283       0x300001,
284       0x30000d,
285       { { 0xcf, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
286       { -1, 0, 0xff } /* 4 */  , { 0x83, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
287       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
288       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
289       { 0x40, 0, 0xff } /* d */  }
290     },
291     { 0x200000, 0x200007, 
292       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
293         { 0, 0 }, { 0, 0 }, { 0, 0 } }
294     }
295   },
296   {
297     {"p18f2221", "18f2221", "pic18f2221", "f2221"}, // also: 2321, 4221, 4321
298     0,                  /* always 0 */
299     0x200,              /* RAM in bytes */
300     0x80,               /* access bank split */
301     0,                  /* always 0 */
302     { 0xf80, 0xfff },   /* range of SFR's */
303     {
304     /* configuration words */
305       0x300001,         /* first address */
306       0x30000d,         /* last address */
307       { { 0xcf, 0, 0x37 } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
308         {  -1 , 0, 0xff } /* 4 */ , { 0x87, 0, 0xfb } /* 5 */ , { 0xf5, 0, 0x8f } /* 6 */ ,
309         {  -1 , 0, 0xff } /* 7 */ , { 0x03, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
310         { 0x03, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ ,  { 0x03, 0, 0xff } /* c */ ,
311         { 0x40, 0, 0xff } /* d */ }
312     },
313     /* IDLOCs --- always 0 */
314     { 0x200000, 0x200007, 
315       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
316         { 0, 0 }, { 0, 0 }, { 0, 0 } }
317     }
318   },
319   {
320     {"p18f2320", "18f2320", "pic18f2320", "f2320"},
321     0,
322     0x200,      /* 512 */
323     0x80,
324     0,
325     { 0xf80, 0xfff },   /* PIC18F2320 range of SFR's */
326     {
327     /* PIC18F2320 configuration words */
328       0x300001,
329       0x30000d,
330       { { 0xcf, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
331       { -1, 0, 0xff } /* 4 */  , { 0x83, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
332       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
333       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
334       { 0x40, 0, 0xff } /* d */  }
335     },
336     { 0x200000, 0x200007, 
337       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
338         { 0, 0 }, { 0, 0 }, { 0, 0 } }
339     }
340   },
341   {
342     {"p18f2321", "18f2321", "pic18f2321", "f2321"}, // also: 2221, 4221, 4321
343     0,                  /* always 0 */
344     0x200,              /* RAM in bytes */
345     0x80,               /* access bank split */
346     0,                  /* always 0 */
347     { 0xf80, 0xfff },   /* range of SFR's */
348     {
349     /* configuration words */
350       0x300001,         /* first address */
351       0x30000d,         /* last address */
352       { { 0xcf, 0, 0x37 } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
353         {  -1 , 0, 0xff } /* 4 */ , { 0x87, 0, 0xfb } /* 5 */ , { 0xf5, 0, 0x8f } /* 6 */ ,
354         {  -1 , 0, 0xff } /* 7 */ , { 0x03, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
355         { 0x03, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ ,  { 0x03, 0, 0xff } /* c */ ,
356         { 0x40, 0, 0xff } /* d */ }
357     },
358     /* IDLOCs --- always 0 */
359     { 0x200000, 0x200007, 
360       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
361         { 0, 0 }, { 0, 0 }, { 0, 0 } }
362     }
363   },
364   {
365     {"p18f2331", "18f2331", "pic18f2331", "f2331"}, // also: 18f[24][34]31
366     0,                  /* always 0 */
367     0x300,              /* RAM in bytes */
368     0x60,               /* access bank split */
369     0,                  /* always 0 */
370     { 0xf60, 0xfff },   /* range of SFR's */
371     {
372     /* configuration words */
373       0x300001,         /* first address */
374       0x30000d,         /* last address */
375       { { 0xcf, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
376         { 0x3c, 0, 0xff } /* 4 */ , { 0x9b, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ ,
377         {  -1 , 0, 0xff } /* 7 */ , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
378         { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ ,  { 0x0f, 0, 0xff } /* c */ ,
379         { 0x40, 0, 0xff } /* d */ }
380     },
381     /* IDLOCs --- always 0 */
382     { 0x200000, 0x200007, 
383       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
384         { 0, 0 }, { 0, 0 }, { 0, 0 } }
385     }
386   },
387   {
388     {"p18f2420", "18f2420", "pic18f2420", "f2420"},     // also: 18f[24][45]20
389     0,
390     0x300,      /* 768 */
391     0x80,
392     0,
393     { 0xf80, 0xfff },   /* PIC18F2420 range of SFR's */
394     {
395     /* PIC18F2420 configuration words */
396       0x300000,
397       0x30000d,
398       { { 0x3f, 0, 0xff } /* 0 */ , { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , 
399       { 0x1f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */  , { 0x87, 0, 0xff } /* 5 */ , 
400       { 0xc5, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , 
401       { 0xc0, 0, 0xff } /* 9 */ , { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , 
402       { 0x0f, 0, 0xff } /* c */ , { 0x40, 0, 0xff } /* d */  }
403     },
404     { 0x200000, 0x200007, 
405       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
406         { 0, 0 }, { 0, 0 }, { 0, 0 } }
407     }
408   },
409   {
410     {"p18f2423", "18f2423", "pic18f2423", "f2423"},
411     0,
412     0x300,      /* 768 */
413     0x80,
414     0,
415     { 0xf80, 0xfff },   /* PIC18F2423 range of SFR's */
416     {
417     /* PIC18F2423 configuration words */
418       0x300000,
419       0x30000d,
420       { { 0x3f, 0, 0xff } /* 0 */ , { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , 
421       { 0x1f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */  , { 0x87, 0, 0xff } /* 5 */ , 
422       { 0xc5, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , 
423       { 0xc0, 0, 0xff } /* 9 */ , { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , 
424       { 0x0f, 0, 0xff } /* c */ , { 0x40, 0, 0xff } /* d */  }
425     },
426     { 0x200000, 0x200007, 
427       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
428         { 0, 0 }, { 0, 0 }, { 0, 0 } }
429     }
430   },
431   {
432     {"p18f2431", "18f2431", "pic18f2431", "f2431"}, // also: 18f[24][34]31
433     0,                  /* always 0 */
434     0x300,              /* RAM in bytes */
435     0x60,               /* access bank split */
436     0,                  /* always 0 */
437     { 0xf60, 0xfff },   /* range of SFR's */
438     {
439     /* configuration words */
440       0x300001,         /* first address */
441       0x30000d,         /* last address */
442       { { 0xcf, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
443         { 0x3c, 0, 0xff } /* 4 */ , { 0x9b, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ ,
444         {  -1 , 0, 0xff } /* 7 */ , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
445         { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ ,  { 0x0f, 0, 0xff } /* c */ ,
446         { 0x40, 0, 0xff } /* d */ }
447     },
448     /* IDLOCs --- always 0 */
449     { 0x200000, 0x200007, 
450       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
451         { 0, 0 }, { 0, 0 }, { 0, 0 } }
452     }
453   },
454   {
455     {"p18f2455", "18f2455", "pic18f2455", "f2455"},
456     0,
457     0x800,      /* 2048 */
458     0x60,
459     0,
460     { 0xf62, 0xfff },   /* PIC18F2455 range of SFR's */
461     {
462     /* PIC18F2455 configuration words */
463       0x300000,
464       0x30000d,
465       { { 0x3f, 0, 0xff } /* 0 */ , { 0xcf, 0, 0xff } /* 1 */ , { 0x3f, 0, 0xff } /* 2 */ , 
466       { 0x1f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */  , { 0x87, 0, 0xff } /* 5 */ , 
467       { 0xe5, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , 
468       { 0xc0, 0, 0xff } /* 9 */ , { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , 
469       { 0x0f, 0, 0xff } /* c */ , { 0x40, 0, 0xff } /* d */  }
470     },
471     { 0x200000, 0x200007, 
472       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
473         { 0, 0 }, { 0, 0 }, { 0, 0 } }
474     }
475   },
476   {
477     {"p18f24j10", "18f24j10", "pic18f24j10", "f24j10"},         /* also 18f[24][45]j10  */
478     0,
479     0x1000,     /* 4096 */
480     0x80,
481     0,
482     { 0xf80, 0xfff },   /* PIC18F24j10 range of SFR's */
483     {
484     /* PIC18F24j10 configuration words */
485       0x300000,
486       0x30000d,
487       { { 0xe1, 0, 0xff } /* 0 */ , { 0x07, 0, 0xff } /* 1 */ , { 0xc7, 0, 0xff } /* 2 */ , 
488       { 0x0f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */  , { 0x01, 0, 0xff } /* 5 */ , 
489       { -1, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */ , { -1, 0, 0xff } /* 8 */ , 
490       { -1, 0, 0xff } /* 9 */ , { -1, 0, 0xff } /* a */ , { -1, 0, 0xff } /* b */ , 
491       { -1, 0, 0xff } /* c */ , { -1, 0, 0xff } /* d */  }
492     },
493     { 0x200000, 0x200007, 
494       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
495         { 0, 0 }, { 0, 0 }, { 0, 0 } }
496     }
497   },
498   {
499     {"p18f2520", "18f2520", "pic18f2520", "f2520"},     // also: 18f[24][45]20
500     0,
501     0x600,      /* 1536 */
502     0x80,
503     0,
504     { 0xf80, 0xfff },   /* PIC18F2520 range of SFR's */
505     {
506     /* PIC18F2520 configuration words */
507       0x300000,
508       0x30000d,
509       { { 0x3f, 0, 0xff } /* 0 */ , { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , 
510       { 0x1f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */  , { 0x87, 0, 0xff } /* 5 */ , 
511       { 0xc5, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , 
512       { 0xc0, 0, 0xff } /* 9 */ , { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , 
513       { 0x0f, 0, 0xff } /* c */ , { 0x40, 0, 0xff } /* d */  }
514     },
515     { 0x200000, 0x200007, 
516       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
517         { 0, 0 }, { 0, 0 }, { 0, 0 } }
518     }
519   },
520   {
521     {"p18f2523", "18f2523", "pic18f2523", "f2523"},
522     0,
523     0x600,      /* 1536 */
524     0x80,
525     0,
526     { 0xf80, 0xfff },   /* PIC18F2523 range of SFR's */
527     {
528     /* PIC18F2523 configuration words */
529       0x300000,
530       0x30000d,
531       { { 0x3f, 0, 0xff } /* 0 */ , { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , 
532       { 0x1f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */  , { 0x87, 0, 0xff } /* 5 */ , 
533       { 0xc5, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , 
534       { 0xc0, 0, 0xff } /* 9 */ , { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , 
535       { 0x0f, 0, 0xff } /* c */ , { 0x40, 0, 0xff } /* d */  }
536     },
537     { 0x200000, 0x200007, 
538       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
539         { 0, 0 }, { 0, 0 }, { 0, 0 } }
540     }
541   },
542   {
543     {"p18f2525", "18f2525", "pic18f2525", "f2525"},
544     0,
545     0x1000,  /* 4096 */
546     0x80,
547     0,
548     { 0xf80, 0xfff },   /* PIC18F4525,2525 range of SFR's */
549     {
550     /* PIC18F4525,2525 configuration words */
551       0x300001,
552       0x30000d,
553       { { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
554       { -1, 0, 0xff } /* 4 */ , { 0x87, 0, 0xff } /* 5 */ , { 0xc5, 0, 0xff } /* 6 */ , 
555       { -1, 0, 0xff } /* 7 */  , { 0x07, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
556       { 0x07, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x07, 0, 0xff } /* c */ , 
557       { 0x40, 0, 0xff } /* d */  }
558     },
559     { 0x200000, 0x200007,
560       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
561         { 0, 0 }, { 0, 0 }, { 0, 0 } }
562     }
563   },
564   {
565     {"p18f2550", "18f2550", "pic18f2550", "f2550"},
566     0,
567     0x800,      /* 2048 */
568     0x60,
569     0,
570     { 0xf62, 0xfff },   /* PIC18F2550 range of SFR's */
571     {
572     /* PIC18F2550 configuration words */
573       0x300000,
574       0x30000d,
575       { { 0x3f, 0, 0xff } /* 0 */ , { 0xcf, 0, 0xff } /* 1 */ , { 0x3f, 0, 0xff } /* 2 */ , 
576       { 0x1f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */  , { 0x87, 0, 0xff } /* 5 */ , 
577       { 0xe5, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , 
578       { 0xc0, 0, 0xff } /* 9 */ , { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , 
579       { 0x0f, 0, 0xff } /* c */ , { 0x40, 0, 0xff } /* d */  }
580     },
581     { 0x200000, 0x200007, 
582       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
583         { 0, 0 }, { 0, 0 }, { 0, 0 } }
584     }
585   },
586   {
587     {"p18f2585", "18f2585", "pic18f2585", "f2585"},
588     0,
589     0x1000,     /* 4096 */
590     0x60,
591     0,
592     { 0xd00, 0xfff },   /* PIC18F2585,2680,4585,4680 range of SFR's */
593     {
594     /* PIC18F2585,2680,4585,4680 configuration words */
595       0x300001,
596       0x30000d,
597       { { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ ,
598       { -1, 0, 0xff } /* 4 */ , { 0x86, 0, 0xff } /* 5 */ , { 0xf5, 0, 0xff } /* 6 */ ,
599       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
600       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ ,
601       { 0x40, 0, 0xff } /* d */ }
602     },
603     { 0x200000, 0x200007, 
604       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
605         { 0, 0 }, { 0, 0 }, { 0, 0 } }
606     }
607   },
608   {
609     {"p18f25j10", "18f25j10", "pic18f25j10", "f25j10"},         /* also 18f[24][45]j10  */
610     0,
611     0x1000,     /* 4096 */
612     0x80,
613     0,
614     { 0xf80, 0xfff },   /* PIC18F25j10 range of SFR's */
615     {
616     /* PIC18F25j10 configuration words */
617       0x300000,
618       0x30000d,
619       { { 0xe1, 0, 0xff } /* 0 */ , { 0x07, 0, 0xff } /* 1 */ , { 0xc7, 0, 0xff } /* 2 */ , 
620       { 0x0f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */  , { 0x01, 0, 0xff } /* 5 */ , 
621       { -1, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */ , { -1, 0, 0xff } /* 8 */ , 
622       { -1, 0, 0xff } /* 9 */ , { -1, 0, 0xff } /* a */ , { -1, 0, 0xff } /* b */ , 
623       { -1, 0, 0xff } /* c */ , { -1, 0, 0xff } /* d */  }
624     },
625     { 0x200000, 0x200007, 
626       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
627         { 0, 0 }, { 0, 0 }, { 0, 0 } }
628     }
629   },
630   {
631     {"p18f2620", "18f2620", "pic18f2620", "f2620"},
632     0,
633     0x1000,  /* 4096 */
634     0x80,
635     0,
636     { 0xf80, 0xfff },   /* PIC18F4620,2620 range of SFR's */
637     {
638     /* PIC18F4620,2620 configuration words */
639       0x300001,
640       0x30000d,
641       { { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
642       { -1, 0, 0xff } /* 4 */ , { 0x87, 0, 0xff } /* 5 */ , { 0xc5, 0, 0xff } /* 6 */ , 
643       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
644       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
645       { 0x40, 0, 0xff } /* d */  }
646     },
647     { 0x200000, 0x200007, 
648       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
649         { 0, 0 }, { 0, 0 }, { 0, 0 } }
650     }
651   },
652   {
653     {"p18f2680", "18f2680", "pic18f2680", "f2680"},
654     0,
655     0x1000,     /* 4096 */
656     0x60,
657     0,
658     { 0xd00, 0xfff },   /* PIC18F2585,2680,4585,4680 range of SFR's */
659     {
660     /* PIC18F2585,2680,4585,4680 configuration words */
661       0x300001,
662       0x30000d,
663       { { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ ,
664       { -1, 0, 0xff } /* 4 */ , { 0x86, 0, 0xff } /* 5 */ , { 0xf5, 0, 0xff } /* 6 */ ,
665       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
666       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ ,
667       { 0x40, 0, 0xff } /* d */ }
668     },
669     { 0x200000, 0x200007, 
670       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
671         { 0, 0 }, { 0, 0 }, { 0, 0 } }
672     }
673   },
674   {
675     {"p18f2682", "18f2682", "pic18f2682", "f2682"},
676     0,
677     0x1000,  /* 4096 */
678     0x60,
679     0,
680     { 0xd00, 0xfff },   /* PIC18F2682,2685,4682,4685 range of SFR's */
681     {
682     /* PIC18F2682,2685,4682,4685 configuration words */
683       0x300001,
684       0x30000d,
685       { { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
686       { -1, 0, 0xff } /* 4 */ , { 0x86, 0, 0xff } /* 5 */ , { 0xf5, 0, 0xff } /* 6 */ , 
687       { -1, 0, 0xff } /* 7 */ , { 0x3f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
688       { 0x3f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x3f, 0, 0xff } /* c */ , 
689       { 0x40, 0, 0xff } /* d */ }
690     },
691     { 0x200000, 0x200007, 
692       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
693         { 0, 0 }, { 0, 0 }, { 0, 0 } }
694     }
695   },
696   {
697     {"p18f2685", "18f2685", "pic18f2685", "f2685"},
698     0,
699     0x1000,  /* 4096 */
700     0x60,
701     0,
702     { 0xd00, 0xfff },   /* PIC18F2682,2685,4682,4685 range of SFR's */
703     {
704     /* PIC18F2682,2685,4682,4685 configuration words */
705       0x300001,
706       0x30000d,
707       { { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
708       { -1, 0, 0xff } /* 4 */ , { 0x86, 0, 0xff } /* 5 */ , { 0xf5, 0, 0xff } /* 6 */ , 
709       { -1, 0, 0xff } /* 7 */ , { 0x3f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
710       { 0x3f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x3f, 0, 0xff } /* c */ , 
711       { 0x40, 0, 0xff } /* d */ }
712     },
713     { 0x200000, 0x200007, 
714       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
715         { 0, 0 }, { 0, 0 }, { 0, 0 } }
716     }
717   },
718   {
719     {"p18f4220", "18f4220", "pic18f4220", "f4220"},
720     0,
721     0x200,      /* 512 */
722     0x80,
723     0,
724     { 0xf80, 0xfff },   /* PIC18F4220 range of SFR's */
725     {
726     /* PIC18F4220 configuration words */
727       0x300001,
728       0x30000d,
729       { { 0xcf, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
730       { -1, 0, 0xff } /* 4 */  , { 0x83, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
731       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
732       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
733       { 0x40, 0, 0xff } /* d */  }
734     },
735     { 0x200000, 0x200007, 
736       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
737         { 0, 0 }, { 0, 0 }, { 0, 0 } }
738     }
739   },
740   {
741     {"p18f4221", "18f4221", "pic18f4221", "f4221"}, // also: 2221, 2321, 4321
742     0,                  /* always 0 */
743     0x200,              /* RAM in bytes */
744     0x80,               /* access bank split */
745     0,                  /* always 0 */
746     { 0xf80, 0xfff },   /* range of SFR's */
747     {
748     /* configuration words */
749       0x300001,         /* first address */
750       0x30000d,         /* last address */
751       { { 0xcf, 0, 0x37 } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
752         {  -1 , 0, 0xff } /* 4 */ , { 0x87, 0, 0xfb } /* 5 */ , { 0xf5, 0, 0x8f } /* 6 */ ,
753         {  -1 , 0, 0xff } /* 7 */ , { 0x03, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
754         { 0x03, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ ,  { 0x03, 0, 0xff } /* c */ ,
755         { 0x40, 0, 0xff } /* d */ }
756     },
757     /* IDLOCs --- always 0 */
758     { 0x200000, 0x200007, 
759       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
760         { 0, 0 }, { 0, 0 }, { 0, 0 } }
761     }
762   },
763   {
764     {"p18f4320", "18f4320", "pic18f4320", "f4320"},
765     0,
766     0x200,      /* 512 */
767     0x80,
768     0,
769     { 0xf80, 0xfff },   /* PIC18F4320 range of SFR's */
770     {
771     /* PIC18F4320 configuration words */
772       0x300001,
773       0x30000d,
774       { { 0xcf, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
775       { -1, 0, 0xff } /* 4 */  , { 0x83, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
776       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
777       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
778       { 0x40, 0, 0xff } /* d */  }
779     },
780     { 0x200000, 0x200007, 
781       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
782         { 0, 0 }, { 0, 0 }, { 0, 0 } }
783     }
784   },
785   {
786     {"p18f4321", "18f4321", "pic18f4321", "f4321"}, // also: 2221, 2321, 4221
787     0,                  /* always 0 */
788     0x200,              /* RAM in bytes */
789     0x80,               /* access bank split */
790     0,                  /* always 0 */
791     { 0xf80, 0xfff },   /* range of SFR's */
792     {
793     /* configuration words */
794       0x300001,         /* first address */
795       0x30000d,         /* last address */
796       { { 0xcf, 0, 0x37 } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
797         {  -1 , 0, 0xff } /* 4 */ , { 0x87, 0, 0xfb } /* 5 */ , { 0xf5, 0, 0x8f } /* 6 */ ,
798         {  -1 , 0, 0xff } /* 7 */ , { 0x03, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
799         { 0x03, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ ,  { 0x03, 0, 0xff } /* c */ ,
800         { 0x40, 0, 0xff } /* d */ }
801     },
802     /* IDLOCs --- always 0 */
803     { 0x200000, 0x200007, 
804       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
805         { 0, 0 }, { 0, 0 }, { 0, 0 } }
806     }
807   },
808   {
809     {"p18f4331", "18f4331", "pic18f4331", "f4331"}, // also: 18f[24][34]31
810     0,                  /* always 0 */
811     0x300,              /* RAM in bytes */
812     0x60,               /* access bank split */
813     0,                  /* always 0 */
814     { 0xf60, 0xfff },   /* range of SFR's */
815     {
816     /* configuration words */
817       0x300001,         /* first address */
818       0x30000d,         /* last address */
819       { { 0xcf, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
820         { 0x3c, 0, 0xff } /* 4 */ , { 0x9b, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ ,
821         {  -1 , 0, 0xff } /* 7 */ , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
822         { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ ,  { 0x0f, 0, 0xff } /* c */ ,
823         { 0x40, 0, 0xff } /* d */ }
824     },
825     /* IDLOCs --- always 0 */
826     { 0x200000, 0x200007, 
827       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
828         { 0, 0 }, { 0, 0 }, { 0, 0 } }
829     }
830   },
831   {
832     {"p18f4420", "18f4420", "pic18f4420", "f4420"},     // also: 18f[24][45]20
833     0,
834     0x300,      /* 4096 */
835     0x80,
836     0,
837     { 0xf80, 0xfff },   /* PIC18F4420 range of SFR's */
838     {
839     /* PIC18F4420 configuration words */
840       0x300000,
841       0x30000d,
842       { { 0x3f, 0, 0xff } /* 0 */ , { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , 
843       { 0x1f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */  , { 0x87, 0, 0xff } /* 5 */ , 
844       { 0xc5, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , 
845       { 0xc0, 0, 0xff } /* 9 */ , { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , 
846       { 0x0f, 0, 0xff } /* c */ , { 0x40, 0, 0xff } /* d */  }
847     },
848     { 0x200000, 0x200007, 
849       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
850         { 0, 0 }, { 0, 0 }, { 0, 0 } }
851     }
852   },
853   {
854     {"p18f4431", "18f4431", "pic18f4431", "f4431"}, // also: 18f[24][34]31
855     0,                  /* always 0 */
856     0x300,              /* RAM in bytes */
857     0x60,               /* access bank split */
858     0,                  /* always 0 */
859     { 0xf60, 0xfff },   /* range of SFR's */
860     {
861     /* configuration words */
862       0x300001,         /* first address */
863       0x30000d,         /* last address */
864       { { 0xcf, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
865         { 0x3c, 0, 0xff } /* 4 */ , { 0x9b, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ ,
866         {  -1 , 0, 0xff } /* 7 */ , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
867         { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ ,  { 0x0f, 0, 0xff } /* c */ ,
868         { 0x40, 0, 0xff } /* d */ }
869     },
870     /* IDLOCs --- always 0 */
871     { 0x200000, 0x200007, 
872       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
873         { 0, 0 }, { 0, 0 }, { 0, 0 } }
874     }
875   },
876   {
877     {"p18f4455", "18f4455", "pic18f4455", "f4455"},
878     0,
879     0x800,      /* 2048 */
880     0x60,
881     0,
882     { 0xf62, 0xfff },   /* PIC18F4455 range of SFR's */
883     {
884     /* PIC18F4455 configuration words */
885       0x300000,
886       0x30000d,
887       { { 0x3f, 0, 0xff } /* 0 */ , { 0xcf, 0, 0xff } /* 1 */ , { 0x3f, 0, 0xff } /* 2 */ , 
888       { 0x1f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */  , { 0x87, 0, 0xff } /* 5 */ , 
889       { 0xe5, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , 
890       { 0xc0, 0, 0xff } /* 9 */ , { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , 
891       { 0x0f, 0, 0xff } /* c */ , { 0x40, 0, 0xff } /* d */  }
892     },
893     { 0x200000, 0x200007, 
894       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
895         { 0, 0 }, { 0, 0 }, { 0, 0 } }
896     }
897   },
898   {
899     {"p18f44j10", "18f44j10", "pic18f44j10", "f44j10"},         /* also 18f[24][45]j10  */
900     0,
901     0x1000,     /* 4096 */
902     0x80,
903     0,
904     { 0xf80, 0xfff },   /* PIC18F44j10 range of SFR's */
905     {
906     /* PIC18F44j10 configuration words */
907       0x300000,
908       0x30000d,
909       { { 0xe1, 0, 0xff } /* 0 */ , { 0x07, 0, 0xff } /* 1 */ , { 0xc7, 0, 0xff } /* 2 */ , 
910       { 0x0f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */  , { 0x01, 0, 0xff } /* 5 */ , 
911       { -1, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */ , { -1, 0, 0xff } /* 8 */ , 
912       { -1, 0, 0xff } /* 9 */ , { -1, 0, 0xff } /* a */ , { -1, 0, 0xff } /* b */ , 
913       { -1, 0, 0xff } /* c */ , { -1, 0, 0xff } /* d */  }
914     },
915     { 0x200000, 0x200007, 
916       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
917         { 0, 0 }, { 0, 0 }, { 0, 0 } }
918     }
919   },
920   {
921     {"p18f4520", "18f4520", "pic18f4520", "f4520"},
922     0,
923     0x600,      /* 1536 */
924     0x80,
925     0,
926     { 0xf80, 0xfff },   /* PIC18F4520 range of SFR's */
927     {
928     /* PIC18F4520 configuration words */
929       0x300000,
930       0x30000d,
931       { { 0x3f, 0, 0xff } /* 0 */ , { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , 
932       { 0x1f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */  , { 0x87, 0, 0xff } /* 5 */ , 
933       { 0xc5, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , 
934       { 0xc0, 0, 0xff } /* 9 */ , { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , 
935       { 0x0f, 0, 0xff } /* c */ , { 0x40, 0, 0xff } /* d */  }
936     },
937     { 0x200000, 0x200007, 
938       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
939         { 0, 0 }, { 0, 0 }, { 0, 0 } }
940     }
941   },
942   {
943     {"p18f4525", "18f4525", "pic18f4525", "f4525"},
944     0,
945     0x1000,  /* 4096 */
946     0x80,
947     0,
948     { 0xf80, 0xfff },   /* PIC18F4525,2525 range of SFR's */
949     {
950     /* PIC18F4525,2525 configuration words */
951       0x300001,
952       0x30000d,
953       { { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
954       { -1, 0, 0xff } /* 4 */ , { 0x87, 0, 0xff } /* 5 */ , { 0xc5, 0, 0xff } /* 6 */ , 
955       { -1, 0, 0xff } /* 7 */  , { 0x07, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
956       { 0x07, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x07, 0, 0xff } /* c */ , 
957       { 0x40, 0, 0xff } /* d */  }
958     },
959     { 0x200000, 0x200007,
960       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
961         { 0, 0 }, { 0, 0 }, { 0, 0 } }
962     }
963   },
964   {
965     {"p18f4550", "18f4550", "pic18f4550", "f4550"},
966     0,
967     0x800,      /* 2048 */
968     0x60,
969     0,
970     { 0xf62, 0xfff },   /* PIC18F4550 range of SFR's */
971     {
972     /* PIC18F4550 configuration words */
973       0x300000,
974       0x30000d,
975       { { 0x3f, 0, 0xff } /* 0 */ , { 0xcf, 0, 0xff } /* 1 */ , { 0x3f, 0, 0xff } /* 2 */ , 
976       { 0x1f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */  , { 0x87, 0, 0xff } /* 5 */ , 
977       { 0xe5, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , 
978       { 0xc0, 0, 0xff } /* 9 */ , { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , 
979       { 0x0f, 0, 0xff } /* c */ , { 0x40, 0, 0xff } /* d */  }
980     },
981     { 0x200000, 0x200007, 
982       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
983         { 0, 0 }, { 0, 0 }, { 0, 0 } }
984     }
985   },
986   {
987     {"p18f4585", "18f4585", "pic18f4585", "f4585"},
988     0,
989     0x1000,     /* 4096 */
990     0x60,
991     0,
992     { 0xd00, 0xfff },   /* PIC18F2585,2680,4585,4680 range of SFR's */
993     {
994     /* PIC18F2585,2680,4585,4680 configuration words */
995       0x300001,
996       0x30000d,
997       { { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ ,
998       { -1, 0, 0xff } /* 4 */ , { 0x86, 0, 0xff } /* 5 */ , { 0xf5, 0, 0xff } /* 6 */ ,
999       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
1000       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ ,
1001       { 0x40, 0, 0xff } /* d */ }
1002     },
1003     { 0x200000, 0x200007, 
1004       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
1005         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1006     }
1007   },
1008   {
1009     {"p18f45j10", "18f45j10", "pic18f45j10", "f45j10"},         /* also 18f[24][45]j10  */
1010     0,
1011     0x1000,     /* 4096 */
1012     0x80,
1013     0,
1014     { 0xf80, 0xfff },   /* PIC18F45j10 range of SFR's */
1015     {
1016     /* PIC18F45j10 configuration words */
1017       0x300000,
1018       0x30000d,
1019       { { 0xe1, 0, 0xff } /* 0 */ , { 0x07, 0, 0xff } /* 1 */ , { 0xc7, 0, 0xff } /* 2 */ , 
1020       { 0x0f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */  , { 0x01, 0, 0xff } /* 5 */ , 
1021       { -1, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */ , { -1, 0, 0xff } /* 8 */ , 
1022       { -1, 0, 0xff } /* 9 */ , { -1, 0, 0xff } /* a */ , { -1, 0, 0xff } /* b */ , 
1023       { -1, 0, 0xff } /* c */ , { -1, 0, 0xff } /* d */  }
1024     },
1025     { 0x200000, 0x200007, 
1026       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
1027         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1028     }
1029   },
1030   {
1031     {"p18f4620", "18f4620", "pic18f4620", "f4620"},
1032     0,
1033     0x1000,  /* 4096 */
1034     0x80,
1035     0,
1036     { 0xf80, 0xfff },   /* PIC18F4620,2620 range of SFR's */
1037     {
1038     /* PIC18F4620,2620 configuration words */
1039       0x300001,
1040       0x30000d,
1041       { { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
1042       { -1, 0, 0xff } /* 4 */ , { 0x87, 0, 0xff } /* 5 */ , { 0xc5, 0, 0xff } /* 6 */ , 
1043       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
1044       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
1045       { 0x40, 0, 0xff } /* d */  }
1046     },
1047     { 0x200000, 0x200007, 
1048       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
1049         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1050     }
1051   },
1052   {
1053     {"p18f4680", "18f4680", "pic18f4680", "f4680"},
1054     0,
1055     0x1000,     /* 4096 */
1056     0x60,
1057     0,
1058     { 0xd00, 0xfff },   /* PIC18F2585,2680,4585,4680 range of SFR's */
1059     {
1060     /* PIC18F2585,2680,4585,4680 configuration words */
1061       0x300001,
1062       0x30000d,
1063       { { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ ,
1064       { -1, 0, 0xff } /* 4 */ , { 0x86, 0, 0xff } /* 5 */ , { 0xf5, 0, 0xff } /* 6 */ ,
1065       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
1066       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ ,
1067       { 0x40, 0, 0xff } /* d */ }
1068     },
1069     { 0x200000, 0x200007, 
1070       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
1071         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1072     }
1073   },
1074   {
1075     {"p18f4682", "18f4682", "pic18f4682", "f4682"},
1076     0,
1077     0x1000,  /* 4096 */
1078     0x60,
1079     0,
1080     { 0xd00, 0xfff },   /* PIC18F2682,2685,4682,4685 range of SFR's */
1081     {
1082     /* PIC18F2682,2685,4682,4685 configuration words */
1083       0x300001,
1084       0x30000d,
1085       { { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
1086       { -1, 0, 0xff } /* 4 */ , { 0x86, 0, 0xff } /* 5 */ , { 0xf5, 0, 0xff } /* 6 */ , 
1087       { -1, 0, 0xff } /* 7 */ , { 0x3f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
1088       { 0x3f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x3f, 0, 0xff } /* c */ , 
1089       { 0x40, 0, 0xff } /* d */ }
1090     },
1091     { 0x200000, 0x200007, 
1092       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
1093         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1094     }
1095   },
1096   {
1097     {"p18f4685", "18f4685", "pic18f4685", "f4685"},
1098     0,
1099     0x1000,  /* 4096 */
1100     0x60,
1101     0,
1102     { 0xd00, 0xfff },   /* PIC18F2682,2685,4682,4685 range of SFR's */
1103     {
1104     /* PIC18F2682,2685,4682,4685 configuration words */
1105       0x300001,
1106       0x30000d,
1107       { { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ ,
1108       { -1, 0, 0xff } /* 4 */ , { 0x86, 0, 0xff } /* 5 */ , { 0xf5, 0, 0xff } /* 6 */ ,
1109       { -1, 0, 0xff } /* 7 */ , { 0x3f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
1110       { 0x3f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x3f, 0, 0xff } /* c */ ,
1111       { 0x40, 0, 0xff } /* d */ }
1112     },
1113     { 0x200000, 0x200007, 
1114       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
1115         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1116     }
1117   },
1118   {
1119     {"p18f6520", "18f6520", "pic18f6520", "f6520"},
1120     0,
1121     0x800,      /* 2048 */
1122     0x60,
1123     0,
1124     { 0xf6b, 0xfff },   /* PIC18F6520 range of SFR's */
1125     {
1126     /* PIC18F6520 configuration words */
1127       0x300001,
1128       0x30000d,
1129       { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
1130       { 0x83, 0, 0xff } /* 4 */ , { 0x03, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
1131       { -1, 0, 0xff } /* 7 */  , { 0xff, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
1132       { 0xff, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0xff, 0, 0xff } /* c */ , 
1133       { 0x40, 0, 0xff } /* d */  }
1134     },
1135     { 0x200000, 0x200007, 
1136       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
1137         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1138     }
1139   },
1140   {
1141     {"p18f6620", "18f6620", "pic18f6620", "f6620"},
1142     0,
1143     0xf00,      /* 3840 */
1144     0x60,
1145     0,
1146     { 0xf6b, 0xfff },   /* PIC18F6620 range of SFR's */
1147     {
1148     /* PIC18F6620 configuration words */
1149       0x300001,
1150       0x30000d,
1151       { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
1152       { 0x83, 0, 0xff } /* 4 */ , { 0x03, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
1153       { -1, 0, 0xff } /* 7 */  , { 0xff, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
1154       { 0xff, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0xff, 0, 0xff } /* c */ , 
1155       { 0x40, 0, 0xff } /* d */  }
1156     },
1157     { 0x200000, 0x200007, 
1158       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
1159         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1160     }
1161   },
1162   {
1163     {"p18f6680", "18f6680", "pic18f6680", "f6680"},
1164     0,
1165     0xf00,      /* 3840 */
1166     0x60,
1167     0,
1168     { 0xd60, 0xfff },   /* PIC18F6680 range of SFR's */
1169     {
1170     /* PIC18F6680 configuration words */
1171       0x300001,
1172       0x30000d,
1173       { { 0x2f, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
1174       { 0x83, 0, 0xff } /* 4 */ , { 0x81, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
1175       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
1176       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
1177       { 0x40, 0, 0xff } /* d */  }
1178     },
1179     { 0x200000, 0x200007, 
1180       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
1181         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1182     }
1183   },
1184   {
1185     {"p18f6720", "18f6720", "pic18f6720", "f6720"},
1186     0,
1187     0xf00,      /* 3840 */
1188     0x60,
1189     0,
1190     { 0xf6b, 0xfff },   /* PIC18F6720 range of SFR's */
1191     {
1192     /* PIC18F6720 configuration words */
1193       0x300001,
1194       0x30000d,
1195       { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
1196       { 0x83, 0, 0xff } /* 4 */ , { 0x03, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
1197       { -1, 0, 0xff } /* 7 */  , { 0xff, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
1198       { 0xff, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0xff, 0, 0xff } /* c */ , 
1199       { 0x40, 0, 0xff } /* d */  }
1200     },
1201     { 0x200000, 0x200007, 
1202       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
1203         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1204     }
1205   },
1206   {
1207     {"p18f8520", "18f8520", "pic18f8520", "f8520"},
1208     0,
1209     0x800,      /* 2048 */
1210     0x60,
1211     1,
1212     { 0xf6b, 0xfff },   /* PIC18F8520 range of SFR's */
1213     {
1214     /* PIC18F8520 configuration words */
1215       0x300001,
1216       0x30000d,
1217       { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
1218       { 0x83, 0, 0xff } /* 4 */ , { 0x03, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
1219       { -1, 0, 0xff } /* 7 */  , { 0xff, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
1220       { 0xff, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0xff, 0, 0xff } /* c */ , 
1221       { 0x40, 0, 0xff } /* d */  }
1222     },
1223     { 0x200000, 0x200007, 
1224       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
1225         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1226     }
1227   },
1228   {
1229     {"p18f8620", "18f8620", "pic18f8620", "f8620"},
1230     0,
1231     0xf00,      /* 3840 */
1232     0x60,
1233     1,
1234     { 0xf6b, 0xfff },   /* PIC18F8620 range of SFR's */
1235     {
1236     /* PIC18F8620 configuration words */
1237       0x300001,
1238       0x30000d,
1239       { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
1240       { 0x83, 0, 0xff } /* 4 */ , { 0x03, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
1241       { -1, 0, 0xff } /* 7 */  , { 0xff, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
1242       { 0xff, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0xff, 0, 0xff } /* c */ , 
1243       { 0x40, 0, 0xff } /* d */  }
1244     },
1245     { 0x200000, 0x200007, 
1246       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
1247         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1248     }
1249   },
1250   {
1251     {"p18f8680", "18f8680", "pic18f8680", "f8680"},
1252     0,
1253     0xf00,      /* 3840 */
1254     0x60,
1255     1,
1256     { 0xd60, 0xfff },   /* PIC18F8680 range of SFR's */
1257     {
1258     /* PIC18F8680 configuration words */
1259       0x300001,
1260       0x30000d,
1261       { { 0x2f, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
1262       { 0x83, 0, 0xff } /* 4 */ , { 0x81, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
1263       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
1264       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
1265       { 0x40, 0, 0xff } /* d */  }
1266     },
1267     { 0x200000, 0x200007, 
1268       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
1269         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1270     }
1271   },
1272   {
1273     {"p18f8720", "18f8720", "pic18f8720", "f8720"},
1274     0,
1275     0xf00,      /* 3840 */
1276     0x60,
1277     1,
1278     { 0xf6b, 0xfff },   /* PIC18F8720 range of SFR's */
1279     {
1280     /* PIC18F8720 configuration words */
1281       0x300001,
1282       0x30000d,
1283       { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
1284       { 0x83, 0, 0xff } /* 4 */ , { 0x03, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
1285       { -1, 0, 0xff } /* 7 */  , { 0xff, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
1286       { 0xff, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0xff, 0, 0xff } /* c */ , 
1287       { 0x40, 0, 0xff } /* d */  }
1288     },
1289     { 0x200000, 0x200007, 
1290       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
1291         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1292     }
1293   }
1294