* device/include/pic16/{pic18f2480.h, pic18f2580.h, pic18f4423.h,
[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     {"p18f2480", "18f2480", "pic18f2480", "f2480"},
478     0,
479     0x300,      /*  768 */
480     0x60,
481     0,
482     { 0xd00, 0xfff },   /* range of SFR's */
483     {
484     /* configuration words */
485       0x300001,
486       0x30000d,
487       { { 0xcf, 0, 0x37 } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ ,
488         { 0x1f, 0, 0xff } /* 3 */ , {  -1 , 0, 0xff } /* 4 */ ,
489         { 0x86, 0, 0xfb } /* 5 */ , { 0xd5, 0, 0xaf } /* 6 */ ,
490         {  -1 , 0, 0xff } /* 7 */ , { 0x0f, 0, 0xff } /* 8 */ ,
491         { 0xc0, 0, 0xff } /* 9 */ , { 0x0f, 0, 0xff } /* a */ ,
492         { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ ,
493         { 0x40, 0, 0xff } /* d */ }
494     },
495     { 0x200000, 0x200007,
496       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
497         { 0, 0 }, { 0, 0 }, { 0, 0 } }
498     }
499   },
500   {
501     {"p18f24j10", "18f24j10", "pic18f24j10", "f24j10"},         /* also 18f[24][45]j10  */
502     0,
503     0x1000,     /* 4096 */
504     0x80,
505     0,
506     { 0xf80, 0xfff },   /* PIC18F24j10 range of SFR's */
507     {
508     /* PIC18F24j10 configuration words */
509       0x300000,
510       0x30000d,
511       { { 0xe1, 0, 0xff } /* 0 */ , { 0x07, 0, 0xff } /* 1 */ , { 0xc7, 0, 0xff } /* 2 */ , 
512       { 0x0f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */  , { 0x01, 0, 0xff } /* 5 */ , 
513       { -1, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */ , { -1, 0, 0xff } /* 8 */ , 
514       { -1, 0, 0xff } /* 9 */ , { -1, 0, 0xff } /* a */ , { -1, 0, 0xff } /* b */ , 
515       { -1, 0, 0xff } /* c */ , { -1, 0, 0xff } /* d */  }
516     },
517     { 0x200000, 0x200007, 
518       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
519         { 0, 0 }, { 0, 0 }, { 0, 0 } }
520     }
521   },
522   {
523     {"p18f2520", "18f2520", "pic18f2520", "f2520"},     // also: 18f[24][45]20
524     0,
525     0x600,      /* 1536 */
526     0x80,
527     0,
528     { 0xf80, 0xfff },   /* PIC18F2520 range of SFR's */
529     {
530     /* PIC18F2520 configuration words */
531       0x300000,
532       0x30000d,
533       { { 0x3f, 0, 0xff } /* 0 */ , { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , 
534       { 0x1f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */  , { 0x87, 0, 0xff } /* 5 */ , 
535       { 0xc5, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , 
536       { 0xc0, 0, 0xff } /* 9 */ , { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , 
537       { 0x0f, 0, 0xff } /* c */ , { 0x40, 0, 0xff } /* d */  }
538     },
539     { 0x200000, 0x200007, 
540       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
541         { 0, 0 }, { 0, 0 }, { 0, 0 } }
542     }
543   },
544   {
545     {"p18f2523", "18f2523", "pic18f2523", "f2523"},
546     0,
547     0x600,      /* 1536 */
548     0x80,
549     0,
550     { 0xf80, 0xfff },   /* PIC18F2523 range of SFR's */
551     {
552     /* PIC18F2523 configuration words */
553       0x300000,
554       0x30000d,
555       { { 0x3f, 0, 0xff } /* 0 */ , { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , 
556       { 0x1f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */  , { 0x87, 0, 0xff } /* 5 */ , 
557       { 0xc5, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , 
558       { 0xc0, 0, 0xff } /* 9 */ , { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , 
559       { 0x0f, 0, 0xff } /* c */ , { 0x40, 0, 0xff } /* d */  }
560     },
561     { 0x200000, 0x200007, 
562       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
563         { 0, 0 }, { 0, 0 }, { 0, 0 } }
564     }
565   },
566   {
567     {"p18f2525", "18f2525", "pic18f2525", "f2525"},
568     0,
569     0x1000,  /* 4096 */
570     0x80,
571     0,
572     { 0xf80, 0xfff },   /* PIC18F4525,2525 range of SFR's */
573     {
574     /* PIC18F4525,2525 configuration words */
575       0x300001,
576       0x30000d,
577       { { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
578       { -1, 0, 0xff } /* 4 */ , { 0x87, 0, 0xff } /* 5 */ , { 0xc5, 0, 0xff } /* 6 */ , 
579       { -1, 0, 0xff } /* 7 */  , { 0x07, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
580       { 0x07, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x07, 0, 0xff } /* c */ , 
581       { 0x40, 0, 0xff } /* d */  }
582     },
583     { 0x200000, 0x200007,
584       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
585         { 0, 0 }, { 0, 0 }, { 0, 0 } }
586     }
587   },
588   {
589     {"p18f2550", "18f2550", "pic18f2550", "f2550"},
590     0,
591     0x800,      /* 2048 */
592     0x60,
593     0,
594     { 0xf62, 0xfff },   /* PIC18F2550 range of SFR's */
595     {
596     /* PIC18F2550 configuration words */
597       0x300000,
598       0x30000d,
599       { { 0x3f, 0, 0xff } /* 0 */ , { 0xcf, 0, 0xff } /* 1 */ , { 0x3f, 0, 0xff } /* 2 */ , 
600       { 0x1f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */  , { 0x87, 0, 0xff } /* 5 */ , 
601       { 0xe5, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , 
602       { 0xc0, 0, 0xff } /* 9 */ , { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , 
603       { 0x0f, 0, 0xff } /* c */ , { 0x40, 0, 0xff } /* d */  }
604     },
605     { 0x200000, 0x200007, 
606       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
607         { 0, 0 }, { 0, 0 }, { 0, 0 } }
608     }
609   },
610   {
611     {"p18f2580", "18f2580", "pic18f2580", "f2580"},
612     0,
613     0x600,      /* 1536 */
614     0x60,
615     0,
616     { 0xd00, 0xfff },   /* range of SFR's */
617     {
618     /* configuration words */
619       0x300001,
620       0x30000d,
621       { { 0xcf, 0, 0x37 } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ ,
622         { 0x1f, 0, 0xff } /* 3 */ , {  -1 , 0, 0xff } /* 4 */ ,
623         { 0x86, 0, 0xfb } /* 5 */ , { 0xd5, 0, 0xaf } /* 6 */ ,
624         {  -1 , 0, 0xff } /* 7 */ , { 0x0f, 0, 0xff } /* 8 */ ,
625         { 0xc0, 0, 0xff } /* 9 */ , { 0x0f, 0, 0xff } /* a */ ,
626         { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ ,
627         { 0x40, 0, 0xff } /* d */ }
628     },
629     { 0x200000, 0x200007,
630       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
631         { 0, 0 }, { 0, 0 }, { 0, 0 } }
632     }
633   },
634   {
635     {"p18f2585", "18f2585", "pic18f2585", "f2585"},
636     0,
637     0x1000,     /* 4096 */
638     0x60,
639     0,
640     { 0xd00, 0xfff },   /* PIC18F2585,2680,4585,4680 range of SFR's */
641     {
642     /* PIC18F2585,2680,4585,4680 configuration words */
643       0x300001,
644       0x30000d,
645       { { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ ,
646       { -1, 0, 0xff } /* 4 */ , { 0x86, 0, 0xff } /* 5 */ , { 0xf5, 0, 0xff } /* 6 */ ,
647       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
648       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ ,
649       { 0x40, 0, 0xff } /* d */ }
650     },
651     { 0x200000, 0x200007, 
652       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
653         { 0, 0 }, { 0, 0 }, { 0, 0 } }
654     }
655   },
656   {
657     {"p18f25j10", "18f25j10", "pic18f25j10", "f25j10"},         /* also 18f[24][45]j10  */
658     0,
659     0x1000,     /* 4096 */
660     0x80,
661     0,
662     { 0xf80, 0xfff },   /* PIC18F25j10 range of SFR's */
663     {
664     /* PIC18F25j10 configuration words */
665       0x300000,
666       0x30000d,
667       { { 0xe1, 0, 0xff } /* 0 */ , { 0x07, 0, 0xff } /* 1 */ , { 0xc7, 0, 0xff } /* 2 */ , 
668       { 0x0f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */  , { 0x01, 0, 0xff } /* 5 */ , 
669       { -1, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */ , { -1, 0, 0xff } /* 8 */ , 
670       { -1, 0, 0xff } /* 9 */ , { -1, 0, 0xff } /* a */ , { -1, 0, 0xff } /* b */ , 
671       { -1, 0, 0xff } /* c */ , { -1, 0, 0xff } /* d */  }
672     },
673     { 0x200000, 0x200007, 
674       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
675         { 0, 0 }, { 0, 0 }, { 0, 0 } }
676     }
677   },
678   {
679     {"p18f2620", "18f2620", "pic18f2620", "f2620"},
680     0,
681     0x1000,  /* 4096 */
682     0x80,
683     0,
684     { 0xf80, 0xfff },   /* PIC18F4620,2620 range of SFR's */
685     {
686     /* PIC18F4620,2620 configuration words */
687       0x300001,
688       0x30000d,
689       { { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
690       { -1, 0, 0xff } /* 4 */ , { 0x87, 0, 0xff } /* 5 */ , { 0xc5, 0, 0xff } /* 6 */ , 
691       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
692       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
693       { 0x40, 0, 0xff } /* d */  }
694     },
695     { 0x200000, 0x200007, 
696       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
697         { 0, 0 }, { 0, 0 }, { 0, 0 } }
698     }
699   },
700   {
701     {"p18f2680", "18f2680", "pic18f2680", "f2680"},
702     0,
703     0x1000,     /* 4096 */
704     0x60,
705     0,
706     { 0xd00, 0xfff },   /* PIC18F2585,2680,4585,4680 range of SFR's */
707     {
708     /* PIC18F2585,2680,4585,4680 configuration words */
709       0x300001,
710       0x30000d,
711       { { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ ,
712       { -1, 0, 0xff } /* 4 */ , { 0x86, 0, 0xff } /* 5 */ , { 0xf5, 0, 0xff } /* 6 */ ,
713       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
714       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ ,
715       { 0x40, 0, 0xff } /* d */ }
716     },
717     { 0x200000, 0x200007, 
718       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
719         { 0, 0 }, { 0, 0 }, { 0, 0 } }
720     }
721   },
722   {
723     {"p18f2682", "18f2682", "pic18f2682", "f2682"},
724     0,
725     0x1000,  /* 4096 */
726     0x60,
727     0,
728     { 0xd00, 0xfff },   /* PIC18F2682,2685,4682,4685 range of SFR's */
729     {
730     /* PIC18F2682,2685,4682,4685 configuration words */
731       0x300001,
732       0x30000d,
733       { { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
734       { -1, 0, 0xff } /* 4 */ , { 0x86, 0, 0xff } /* 5 */ , { 0xf5, 0, 0xff } /* 6 */ , 
735       { -1, 0, 0xff } /* 7 */ , { 0x3f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
736       { 0x3f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x3f, 0, 0xff } /* c */ , 
737       { 0x40, 0, 0xff } /* d */ }
738     },
739     { 0x200000, 0x200007, 
740       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
741         { 0, 0 }, { 0, 0 }, { 0, 0 } }
742     }
743   },
744   {
745     {"p18f2685", "18f2685", "pic18f2685", "f2685"},
746     0,
747     0x1000,  /* 4096 */
748     0x60,
749     0,
750     { 0xd00, 0xfff },   /* PIC18F2682,2685,4682,4685 range of SFR's */
751     {
752     /* PIC18F2682,2685,4682,4685 configuration words */
753       0x300001,
754       0x30000d,
755       { { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
756       { -1, 0, 0xff } /* 4 */ , { 0x86, 0, 0xff } /* 5 */ , { 0xf5, 0, 0xff } /* 6 */ , 
757       { -1, 0, 0xff } /* 7 */ , { 0x3f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
758       { 0x3f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x3f, 0, 0xff } /* c */ , 
759       { 0x40, 0, 0xff } /* d */ }
760     },
761     { 0x200000, 0x200007, 
762       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
763         { 0, 0 }, { 0, 0 }, { 0, 0 } }
764     }
765   },
766   {
767     {"p18f4220", "18f4220", "pic18f4220", "f4220"},
768     0,
769     0x200,      /* 512 */
770     0x80,
771     0,
772     { 0xf80, 0xfff },   /* PIC18F4220 range of SFR's */
773     {
774     /* PIC18F4220 configuration words */
775       0x300001,
776       0x30000d,
777       { { 0xcf, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
778       { -1, 0, 0xff } /* 4 */  , { 0x83, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
779       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
780       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
781       { 0x40, 0, 0xff } /* d */  }
782     },
783     { 0x200000, 0x200007, 
784       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
785         { 0, 0 }, { 0, 0 }, { 0, 0 } }
786     }
787   },
788   {
789     {"p18f4221", "18f4221", "pic18f4221", "f4221"}, // also: 2221, 2321, 4321
790     0,                  /* always 0 */
791     0x200,              /* RAM in bytes */
792     0x80,               /* access bank split */
793     0,                  /* always 0 */
794     { 0xf80, 0xfff },   /* range of SFR's */
795     {
796     /* configuration words */
797       0x300001,         /* first address */
798       0x30000d,         /* last address */
799       { { 0xcf, 0, 0x37 } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
800         {  -1 , 0, 0xff } /* 4 */ , { 0x87, 0, 0xfb } /* 5 */ , { 0xf5, 0, 0x8f } /* 6 */ ,
801         {  -1 , 0, 0xff } /* 7 */ , { 0x03, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
802         { 0x03, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ ,  { 0x03, 0, 0xff } /* c */ ,
803         { 0x40, 0, 0xff } /* d */ }
804     },
805     /* IDLOCs --- always 0 */
806     { 0x200000, 0x200007, 
807       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
808         { 0, 0 }, { 0, 0 }, { 0, 0 } }
809     }
810   },
811   {
812     {"p18f4320", "18f4320", "pic18f4320", "f4320"},
813     0,
814     0x200,      /* 512 */
815     0x80,
816     0,
817     { 0xf80, 0xfff },   /* PIC18F4320 range of SFR's */
818     {
819     /* PIC18F4320 configuration words */
820       0x300001,
821       0x30000d,
822       { { 0xcf, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
823       { -1, 0, 0xff } /* 4 */  , { 0x83, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
824       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
825       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
826       { 0x40, 0, 0xff } /* d */  }
827     },
828     { 0x200000, 0x200007, 
829       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
830         { 0, 0 }, { 0, 0 }, { 0, 0 } }
831     }
832   },
833   {
834     {"p18f4321", "18f4321", "pic18f4321", "f4321"}, // also: 2221, 2321, 4221
835     0,                  /* always 0 */
836     0x200,              /* RAM in bytes */
837     0x80,               /* access bank split */
838     0,                  /* always 0 */
839     { 0xf80, 0xfff },   /* range of SFR's */
840     {
841     /* configuration words */
842       0x300001,         /* first address */
843       0x30000d,         /* last address */
844       { { 0xcf, 0, 0x37 } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
845         {  -1 , 0, 0xff } /* 4 */ , { 0x87, 0, 0xfb } /* 5 */ , { 0xf5, 0, 0x8f } /* 6 */ ,
846         {  -1 , 0, 0xff } /* 7 */ , { 0x03, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
847         { 0x03, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ ,  { 0x03, 0, 0xff } /* c */ ,
848         { 0x40, 0, 0xff } /* d */ }
849     },
850     /* IDLOCs --- always 0 */
851     { 0x200000, 0x200007, 
852       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
853         { 0, 0 }, { 0, 0 }, { 0, 0 } }
854     }
855   },
856   {
857     {"p18f4331", "18f4331", "pic18f4331", "f4331"}, // also: 18f[24][34]31
858     0,                  /* always 0 */
859     0x300,              /* RAM in bytes */
860     0x60,               /* access bank split */
861     0,                  /* always 0 */
862     { 0xf60, 0xfff },   /* range of SFR's */
863     {
864     /* configuration words */
865       0x300001,         /* first address */
866       0x30000d,         /* last address */
867       { { 0xcf, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
868         { 0x3c, 0, 0xff } /* 4 */ , { 0x9b, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ ,
869         {  -1 , 0, 0xff } /* 7 */ , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
870         { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ ,  { 0x0f, 0, 0xff } /* c */ ,
871         { 0x40, 0, 0xff } /* d */ }
872     },
873     /* IDLOCs --- always 0 */
874     { 0x200000, 0x200007, 
875       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
876         { 0, 0 }, { 0, 0 }, { 0, 0 } }
877     }
878   },
879   {
880     {"p18f4420", "18f4420", "pic18f4420", "f4420"},     // also: 18f[24][45]20
881     0,
882     0x300,      /* 4096 */
883     0x80,
884     0,
885     { 0xf80, 0xfff },   /* PIC18F4420 range of SFR's */
886     {
887     /* PIC18F4420 configuration words */
888       0x300000,
889       0x30000d,
890       { { 0x3f, 0, 0xff } /* 0 */ , { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , 
891       { 0x1f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */  , { 0x87, 0, 0xff } /* 5 */ , 
892       { 0xc5, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , 
893       { 0xc0, 0, 0xff } /* 9 */ , { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , 
894       { 0x0f, 0, 0xff } /* c */ , { 0x40, 0, 0xff } /* d */  }
895     },
896     { 0x200000, 0x200007, 
897       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
898         { 0, 0 }, { 0, 0 }, { 0, 0 } }
899     }
900   },
901   {
902     {"p18f4431", "18f4431", "pic18f4431", "f4431"}, // also: 18f[24][34]31
903     0,                  /* always 0 */
904     0x300,              /* RAM in bytes */
905     0x60,               /* access bank split */
906     0,                  /* always 0 */
907     { 0xf60, 0xfff },   /* range of SFR's */
908     {
909     /* configuration words */
910       0x300001,         /* first address */
911       0x30000d,         /* last address */
912       { { 0xcf, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
913         { 0x3c, 0, 0xff } /* 4 */ , { 0x9b, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ ,
914         {  -1 , 0, 0xff } /* 7 */ , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
915         { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ ,  { 0x0f, 0, 0xff } /* c */ ,
916         { 0x40, 0, 0xff } /* d */ }
917     },
918     /* IDLOCs --- always 0 */
919     { 0x200000, 0x200007, 
920       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
921         { 0, 0 }, { 0, 0 }, { 0, 0 } }
922     }
923   },
924   {
925     {"p18f4455", "18f4455", "pic18f4455", "f4455"},
926     0,
927     0x800,      /* 2048 */
928     0x60,
929     0,
930     { 0xf62, 0xfff },   /* PIC18F4455 range of SFR's */
931     {
932     /* PIC18F4455 configuration words */
933       0x300000,
934       0x30000d,
935       { { 0x3f, 0, 0xff } /* 0 */ , { 0xcf, 0, 0xff } /* 1 */ , { 0x3f, 0, 0xff } /* 2 */ , 
936       { 0x1f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */  , { 0x87, 0, 0xff } /* 5 */ , 
937       { 0xe5, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , 
938       { 0xc0, 0, 0xff } /* 9 */ , { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , 
939       { 0x0f, 0, 0xff } /* c */ , { 0x40, 0, 0xff } /* d */  }
940     },
941     { 0x200000, 0x200007, 
942       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
943         { 0, 0 }, { 0, 0 }, { 0, 0 } }
944     }
945   },
946   {
947     {"p18f4480", "18f4480", "pic18f4480", "f4480"},
948     0,
949     0x300,      /*  768 */
950     0x60,
951     0,
952     { 0xd00, 0xfff },   /* range of SFR's */
953     {
954     /* configuration words */
955       0x300001,
956       0x30000d,
957       { { 0xcf, 0, 0x37 } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ ,
958         { 0x1f, 0, 0xff } /* 3 */ , {  -1 , 0, 0xff } /* 4 */ ,
959         { 0x86, 0, 0xfb } /* 5 */ , { 0xd5, 0, 0xaf } /* 6 */ ,
960         {  -1 , 0, 0xff } /* 7 */ , { 0x0f, 0, 0xff } /* 8 */ ,
961         { 0xc0, 0, 0xff } /* 9 */ , { 0x0f, 0, 0xff } /* a */ ,
962         { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ ,
963         { 0x40, 0, 0xff } /* d */ }
964     },
965     { 0x200000, 0x200007,
966       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
967         { 0, 0 }, { 0, 0 }, { 0, 0 } }
968     }
969   },
970   {
971     {"p18f44j10", "18f44j10", "pic18f44j10", "f44j10"},         /* also 18f[24][45]j10  */
972     0,
973     0x1000,     /* 4096 */
974     0x80,
975     0,
976     { 0xf80, 0xfff },   /* PIC18F44j10 range of SFR's */
977     {
978     /* PIC18F44j10 configuration words */
979       0x300000,
980       0x30000d,
981       { { 0xe1, 0, 0xff } /* 0 */ , { 0x07, 0, 0xff } /* 1 */ , { 0xc7, 0, 0xff } /* 2 */ , 
982       { 0x0f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */  , { 0x01, 0, 0xff } /* 5 */ , 
983       { -1, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */ , { -1, 0, 0xff } /* 8 */ , 
984       { -1, 0, 0xff } /* 9 */ , { -1, 0, 0xff } /* a */ , { -1, 0, 0xff } /* b */ , 
985       { -1, 0, 0xff } /* c */ , { -1, 0, 0xff } /* d */  }
986     },
987     { 0x200000, 0x200007, 
988       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
989         { 0, 0 }, { 0, 0 }, { 0, 0 } }
990     }
991   },
992   {
993     {"p18f4520", "18f4520", "pic18f4520", "f4520"},
994     0,
995     0x600,      /* 1536 */
996     0x80,
997     0,
998     { 0xf80, 0xfff },   /* PIC18F4520 range of SFR's */
999     {
1000     /* PIC18F4520 configuration words */
1001       0x300000,
1002       0x30000d,
1003       { { 0x3f, 0, 0xff } /* 0 */ , { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , 
1004       { 0x1f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */  , { 0x87, 0, 0xff } /* 5 */ , 
1005       { 0xc5, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , 
1006       { 0xc0, 0, 0xff } /* 9 */ , { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , 
1007       { 0x0f, 0, 0xff } /* c */ , { 0x40, 0, 0xff } /* d */  }
1008     },
1009     { 0x200000, 0x200007, 
1010       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
1011         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1012     }
1013   },
1014   {
1015     {"p18f4525", "18f4525", "pic18f4525", "f4525"},
1016     0,
1017     0x1000,  /* 4096 */
1018     0x80,
1019     0,
1020     { 0xf80, 0xfff },   /* PIC18F4525,2525 range of SFR's */
1021     {
1022     /* PIC18F4525,2525 configuration words */
1023       0x300001,
1024       0x30000d,
1025       { { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
1026       { -1, 0, 0xff } /* 4 */ , { 0x87, 0, 0xff } /* 5 */ , { 0xc5, 0, 0xff } /* 6 */ , 
1027       { -1, 0, 0xff } /* 7 */  , { 0x07, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
1028       { 0x07, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x07, 0, 0xff } /* c */ , 
1029       { 0x40, 0, 0xff } /* d */  }
1030     },
1031     { 0x200000, 0x200007,
1032       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
1033         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1034     }
1035   },
1036   {
1037     {"p18f4550", "18f4550", "pic18f4550", "f4550"},
1038     0,
1039     0x800,      /* 2048 */
1040     0x60,
1041     0,
1042     { 0xf62, 0xfff },   /* PIC18F4550 range of SFR's */
1043     {
1044     /* PIC18F4550 configuration words */
1045       0x300000,
1046       0x30000d,
1047       { { 0x3f, 0, 0xff } /* 0 */ , { 0xcf, 0, 0xff } /* 1 */ , { 0x3f, 0, 0xff } /* 2 */ , 
1048       { 0x1f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */  , { 0x87, 0, 0xff } /* 5 */ , 
1049       { 0xe5, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , 
1050       { 0xc0, 0, 0xff } /* 9 */ , { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , 
1051       { 0x0f, 0, 0xff } /* c */ , { 0x40, 0, 0xff } /* d */  }
1052     },
1053     { 0x200000, 0x200007, 
1054       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
1055         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1056     }
1057   },
1058   {
1059     {"p18f4580", "18f4580", "pic18f4580", "f4580"},
1060     0,
1061     0x600,      /* 1536 */
1062     0x60,
1063     0,
1064     { 0xd00, 0xfff },   /* range of SFR's */
1065     {
1066     /* configuration words */
1067       0x300001,
1068       0x30000d,
1069       { { 0xcf, 0, 0x37 } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ ,
1070         { 0x1f, 0, 0xff } /* 3 */ , {  -1 , 0, 0xff } /* 4 */ ,
1071         { 0x86, 0, 0xfb } /* 5 */ , { 0xd5, 0, 0xaf } /* 6 */ ,
1072         {  -1 , 0, 0xff } /* 7 */ , { 0x0f, 0, 0xff } /* 8 */ ,
1073         { 0xc0, 0, 0xff } /* 9 */ , { 0x0f, 0, 0xff } /* a */ ,
1074         { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ ,
1075         { 0x40, 0, 0xff } /* d */ }
1076     },
1077     { 0x200000, 0x200007,
1078       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 },
1079         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1080     }
1081   },
1082   {
1083     {"p18f4585", "18f4585", "pic18f4585", "f4585"},
1084     0,
1085     0x1000,     /* 4096 */
1086     0x60,
1087     0,
1088     { 0xd00, 0xfff },   /* PIC18F2585,2680,4585,4680 range of SFR's */
1089     {
1090     /* PIC18F2585,2680,4585,4680 configuration words */
1091       0x300001,
1092       0x30000d,
1093       { { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ ,
1094       { -1, 0, 0xff } /* 4 */ , { 0x86, 0, 0xff } /* 5 */ , { 0xf5, 0, 0xff } /* 6 */ ,
1095       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
1096       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ ,
1097       { 0x40, 0, 0xff } /* d */ }
1098     },
1099     { 0x200000, 0x200007, 
1100       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
1101         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1102     }
1103   },
1104   {
1105     {"p18f45j10", "18f45j10", "pic18f45j10", "f45j10"},         /* also 18f[24][45]j10  */
1106     0,
1107     0x1000,     /* 4096 */
1108     0x80,
1109     0,
1110     { 0xf80, 0xfff },   /* PIC18F45j10 range of SFR's */
1111     {
1112     /* PIC18F45j10 configuration words */
1113       0x300000,
1114       0x30000d,
1115       { { 0xe1, 0, 0xff } /* 0 */ , { 0x07, 0, 0xff } /* 1 */ , { 0xc7, 0, 0xff } /* 2 */ , 
1116       { 0x0f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */  , { 0x01, 0, 0xff } /* 5 */ , 
1117       { -1, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */ , { -1, 0, 0xff } /* 8 */ , 
1118       { -1, 0, 0xff } /* 9 */ , { -1, 0, 0xff } /* a */ , { -1, 0, 0xff } /* b */ , 
1119       { -1, 0, 0xff } /* c */ , { -1, 0, 0xff } /* d */  }
1120     },
1121     { 0x200000, 0x200007, 
1122       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
1123         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1124     }
1125   },
1126   {
1127     {"p18f4620", "18f4620", "pic18f4620", "f4620"},
1128     0,
1129     0x1000,  /* 4096 */
1130     0x80,
1131     0,
1132     { 0xf80, 0xfff },   /* PIC18F4620,2620 range of SFR's */
1133     {
1134     /* PIC18F4620,2620 configuration words */
1135       0x300001,
1136       0x30000d,
1137       { { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
1138       { -1, 0, 0xff } /* 4 */ , { 0x87, 0, 0xff } /* 5 */ , { 0xc5, 0, 0xff } /* 6 */ , 
1139       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
1140       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
1141       { 0x40, 0, 0xff } /* d */  }
1142     },
1143     { 0x200000, 0x200007, 
1144       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
1145         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1146     }
1147   },
1148   {
1149     {"p18f4680", "18f4680", "pic18f4680", "f4680"},
1150     0,
1151     0x1000,     /* 4096 */
1152     0x60,
1153     0,
1154     { 0xd00, 0xfff },   /* PIC18F2585,2680,4585,4680 range of SFR's */
1155     {
1156     /* PIC18F2585,2680,4585,4680 configuration words */
1157       0x300001,
1158       0x30000d,
1159       { { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ ,
1160       { -1, 0, 0xff } /* 4 */ , { 0x86, 0, 0xff } /* 5 */ , { 0xf5, 0, 0xff } /* 6 */ ,
1161       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
1162       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ ,
1163       { 0x40, 0, 0xff } /* d */ }
1164     },
1165     { 0x200000, 0x200007, 
1166       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
1167         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1168     }
1169   },
1170   {
1171     {"p18f4682", "18f4682", "pic18f4682", "f4682"},
1172     0,
1173     0x1000,  /* 4096 */
1174     0x60,
1175     0,
1176     { 0xd00, 0xfff },   /* PIC18F2682,2685,4682,4685 range of SFR's */
1177     {
1178     /* PIC18F2682,2685,4682,4685 configuration words */
1179       0x300001,
1180       0x30000d,
1181       { { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
1182       { -1, 0, 0xff } /* 4 */ , { 0x86, 0, 0xff } /* 5 */ , { 0xf5, 0, 0xff } /* 6 */ , 
1183       { -1, 0, 0xff } /* 7 */ , { 0x3f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
1184       { 0x3f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x3f, 0, 0xff } /* c */ , 
1185       { 0x40, 0, 0xff } /* d */ }
1186     },
1187     { 0x200000, 0x200007, 
1188       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
1189         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1190     }
1191   },
1192   {
1193     {"p18f4685", "18f4685", "pic18f4685", "f4685"},
1194     0,
1195     0x1000,  /* 4096 */
1196     0x60,
1197     0,
1198     { 0xd00, 0xfff },   /* PIC18F2682,2685,4682,4685 range of SFR's */
1199     {
1200     /* PIC18F2682,2685,4682,4685 configuration words */
1201       0x300001,
1202       0x30000d,
1203       { { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ ,
1204       { -1, 0, 0xff } /* 4 */ , { 0x86, 0, 0xff } /* 5 */ , { 0xf5, 0, 0xff } /* 6 */ ,
1205       { -1, 0, 0xff } /* 7 */ , { 0x3f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ ,
1206       { 0x3f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x3f, 0, 0xff } /* c */ ,
1207       { 0x40, 0, 0xff } /* d */ }
1208     },
1209     { 0x200000, 0x200007, 
1210       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
1211         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1212     }
1213   },
1214   {
1215     {"p18f6520", "18f6520", "pic18f6520", "f6520"},
1216     0,
1217     0x800,      /* 2048 */
1218     0x60,
1219     0,
1220     { 0xf6b, 0xfff },   /* PIC18F6520 range of SFR's */
1221     {
1222     /* PIC18F6520 configuration words */
1223       0x300001,
1224       0x30000d,
1225       { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
1226       { 0x83, 0, 0xff } /* 4 */ , { 0x03, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
1227       { -1, 0, 0xff } /* 7 */  , { 0xff, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
1228       { 0xff, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0xff, 0, 0xff } /* c */ , 
1229       { 0x40, 0, 0xff } /* d */  }
1230     },
1231     { 0x200000, 0x200007, 
1232       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
1233         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1234     }
1235   },
1236   {
1237     {"p18f6585", "18f6585", "pic18f6585", "f6585"},
1238     0,
1239     0xf00,      /* 3840 */
1240     0x60,
1241     0,
1242     { 0xd60, 0xfff },   /* range of SFR's */
1243     {
1244     /* configuration words */
1245       0x300001,
1246       0x30000d,
1247       { { 0x2f, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
1248       { 0x83, 0, 0xff } /* 4 */ , { 0x81, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
1249       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
1250       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
1251       { 0x40, 0, 0xff } /* d */  }
1252     },
1253     { 0x200000, 0x200007, 
1254       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
1255         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1256     }
1257   },
1258   {
1259     {"p18f6620", "18f6620", "pic18f6620", "f6620"},
1260     0,
1261     0xf00,      /* 3840 */
1262     0x60,
1263     0,
1264     { 0xf6b, 0xfff },   /* PIC18F6620 range of SFR's */
1265     {
1266     /* PIC18F6620 configuration words */
1267       0x300001,
1268       0x30000d,
1269       { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
1270       { 0x83, 0, 0xff } /* 4 */ , { 0x03, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
1271       { -1, 0, 0xff } /* 7 */  , { 0xff, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
1272       { 0xff, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0xff, 0, 0xff } /* c */ , 
1273       { 0x40, 0, 0xff } /* d */  }
1274     },
1275     { 0x200000, 0x200007, 
1276       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
1277         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1278     }
1279   },
1280   {
1281     {"p18f6680", "18f6680", "pic18f6680", "f6680"},
1282     0,
1283     0xf00,      /* 3840 */
1284     0x60,
1285     0,
1286     { 0xd60, 0xfff },   /* PIC18F6680 range of SFR's */
1287     {
1288     /* PIC18F6680 configuration words */
1289       0x300001,
1290       0x30000d,
1291       { { 0x2f, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
1292       { 0x83, 0, 0xff } /* 4 */ , { 0x81, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
1293       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
1294       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
1295       { 0x40, 0, 0xff } /* d */  }
1296     },
1297     { 0x200000, 0x200007, 
1298       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
1299         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1300     }
1301   },
1302   {
1303     {"p18f6720", "18f6720", "pic18f6720", "f6720"},
1304     0,
1305     0xf00,      /* 3840 */
1306     0x60,
1307     0,
1308     { 0xf6b, 0xfff },   /* PIC18F6720 range of SFR's */
1309     {
1310     /* PIC18F6720 configuration words */
1311       0x300001,
1312       0x30000d,
1313       { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
1314       { 0x83, 0, 0xff } /* 4 */ , { 0x03, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
1315       { -1, 0, 0xff } /* 7 */  , { 0xff, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
1316       { 0xff, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0xff, 0, 0xff } /* c */ , 
1317       { 0x40, 0, 0xff } /* d */  }
1318     },
1319     { 0x200000, 0x200007, 
1320       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
1321         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1322     }
1323   },
1324   {
1325     {"p18f8520", "18f8520", "pic18f8520", "f8520"},
1326     0,
1327     0x800,      /* 2048 */
1328     0x60,
1329     1,
1330     { 0xf6b, 0xfff },   /* PIC18F8520 range of SFR's */
1331     {
1332     /* PIC18F8520 configuration words */
1333       0x300001,
1334       0x30000d,
1335       { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
1336       { 0x83, 0, 0xff } /* 4 */ , { 0x03, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
1337       { -1, 0, 0xff } /* 7 */  , { 0xff, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
1338       { 0xff, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0xff, 0, 0xff } /* c */ , 
1339       { 0x40, 0, 0xff } /* d */  }
1340     },
1341     { 0x200000, 0x200007, 
1342       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
1343         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1344     }
1345   },
1346   {
1347     {"p18f8585", "18f8585", "pic18f8585", "f8585"},
1348     0,
1349     0xf00,      /* 3840 */
1350     0x60,
1351     0,
1352     { 0xd60, 0xfff },   /* range of SFR's */
1353     {
1354     /* configuration words */
1355       0x300001,
1356       0x30000d,
1357       { { 0x2f, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
1358       { 0x83, 0, 0xff } /* 4 */ , { 0x81, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
1359       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
1360       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
1361       { 0x40, 0, 0xff } /* d */  }
1362     },
1363     { 0x200000, 0x200007, 
1364       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
1365         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1366     }
1367   },
1368   {
1369     {"p18f8620", "18f8620", "pic18f8620", "f8620"},
1370     0,
1371     0xf00,      /* 3840 */
1372     0x60,
1373     1,
1374     { 0xf6b, 0xfff },   /* PIC18F8620 range of SFR's */
1375     {
1376     /* PIC18F8620 configuration words */
1377       0x300001,
1378       0x30000d,
1379       { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
1380       { 0x83, 0, 0xff } /* 4 */ , { 0x03, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
1381       { -1, 0, 0xff } /* 7 */  , { 0xff, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
1382       { 0xff, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0xff, 0, 0xff } /* c */ , 
1383       { 0x40, 0, 0xff } /* d */  }
1384     },
1385     { 0x200000, 0x200007, 
1386       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
1387         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1388     }
1389   },
1390   {
1391     {"p18f8680", "18f8680", "pic18f8680", "f8680"},
1392     0,
1393     0xf00,      /* 3840 */
1394     0x60,
1395     1,
1396     { 0xd60, 0xfff },   /* PIC18F8680 range of SFR's */
1397     {
1398     /* PIC18F8680 configuration words */
1399       0x300001,
1400       0x30000d,
1401       { { 0x2f, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
1402       { 0x83, 0, 0xff } /* 4 */ , { 0x81, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
1403       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
1404       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
1405       { 0x40, 0, 0xff } /* d */  }
1406     },
1407     { 0x200000, 0x200007, 
1408       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
1409         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1410     }
1411   },
1412   {
1413     {"p18f8720", "18f8720", "pic18f8720", "f8720"},
1414     0,
1415     0xf00,      /* 3840 */
1416     0x60,
1417     1,
1418     { 0xf6b, 0xfff },   /* PIC18F8720 range of SFR's */
1419     {
1420     /* PIC18F8720 configuration words */
1421       0x300001,
1422       0x30000d,
1423       { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
1424       { 0x83, 0, 0xff } /* 4 */ , { 0x03, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
1425       { -1, 0, 0xff } /* 7 */  , { 0xff, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
1426       { 0xff, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0xff, 0, 0xff } /* c */ , 
1427       { 0x40, 0, 0xff } /* d */  }
1428     },
1429     { 0x200000, 0x200007, 
1430       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
1431         { 0, 0 }, { 0, 0 }, { 0, 0 } }
1432     }
1433   }
1434