* src/pic/device.c (sanitise_processor_name): only remove p(ic) prefix,
[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     {"p18f2320", "18f2320", "pic18f2320", "f2320"},
298     0,
299     0x200,      /* 512 */
300     0x80,
301     0,
302     { 0xf80, 0xfff },   /* PIC18F2320 range of SFR's */
303     {
304     /* PIC18F2320 configuration words */
305       0x300001,
306       0x30000d,
307       { { 0xcf, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
308       { -1, 0, 0xff } /* 4 */  , { 0x83, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
309       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
310       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
311       { 0x40, 0, 0xff } /* d */  }
312     },
313     { 0x200000, 0x200007, 
314       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
315         { 0, 0 }, { 0, 0 }, { 0, 0 } }
316     }
317   },
318   {
319     {"p18f2455", "18f2455", "pic18f2455", "f2455"},
320     0,
321     0x800,      /* 2048 */
322     0x60,
323     0,
324     { 0xf62, 0xfff },   /* PIC18F2455 range of SFR's */
325     {
326     /* PIC18F2455 configuration words */
327       0x300000,
328       0x30000d,
329       { { 0x3f, 0, 0xff } /* 0 */ , { 0xcf, 0, 0xff } /* 1 */ , { 0x3f, 0, 0xff } /* 2 */ , 
330       { 0x1f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */  , { 0x87, 0, 0xff } /* 5 */ , 
331       { 0xe5, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , 
332       { 0xc0, 0, 0xff } /* 9 */ , { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , 
333       { 0x0f, 0, 0xff } /* c */ , { 0x40, 0, 0xff } /* d */  }
334     },
335     { 0x200000, 0x200007, 
336       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
337         { 0, 0 }, { 0, 0 }, { 0, 0 } }
338     }
339   },
340   {
341     {"p18f2550", "18f2550", "pic18f2550", "f2550"},
342     0,
343     0x800,      /* 2048 */
344     0x60,
345     0,
346     { 0xf62, 0xfff },   /* PIC18F2550 range of SFR's */
347     {
348     /* PIC18F2550 configuration words */
349       0x300000,
350       0x30000d,
351       { { 0x3f, 0, 0xff } /* 0 */ , { 0xcf, 0, 0xff } /* 1 */ , { 0x3f, 0, 0xff } /* 2 */ , 
352       { 0x1f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */  , { 0x87, 0, 0xff } /* 5 */ , 
353       { 0xe5, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , 
354       { 0xc0, 0, 0xff } /* 9 */ , { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , 
355       { 0x0f, 0, 0xff } /* c */ , { 0x40, 0, 0xff } /* d */  }
356     },
357     { 0x200000, 0x200007, 
358       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
359         { 0, 0 }, { 0, 0 }, { 0, 0 } }
360     }
361   },
362   {
363     {"p18f4220", "18f4220", "pic18f4220", "f4220"},
364     0,
365     0x200,      /* 512 */
366     0x80,
367     0,
368     { 0xf80, 0xfff },   /* PIC18F4220 range of SFR's */
369     {
370     /* PIC18F4220 configuration words */
371       0x300001,
372       0x30000d,
373       { { 0xcf, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
374       { -1, 0, 0xff } /* 4 */  , { 0x83, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
375       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
376       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
377       { 0x40, 0, 0xff } /* d */  }
378     },
379     { 0x200000, 0x200007, 
380       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
381         { 0, 0 }, { 0, 0 }, { 0, 0 } }
382     }
383   },
384   {
385     {"p18f4320", "18f4320", "pic18f4320", "f4320"},
386     0,
387     0x200,      /* 512 */
388     0x80,
389     0,
390     { 0xf80, 0xfff },   /* PIC18F4320 range of SFR's */
391     {
392     /* PIC18F4320 configuration words */
393       0x300001,
394       0x30000d,
395       { { 0xcf, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
396       { -1, 0, 0xff } /* 4 */  , { 0x83, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
397       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
398       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
399       { 0x40, 0, 0xff } /* d */  }
400     },
401     { 0x200000, 0x200007, 
402       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
403         { 0, 0 }, { 0, 0 }, { 0, 0 } }
404     }
405   },
406   {
407     {"p18f4331", "18f4331", "pic18f4331", "f4331"},
408     0,
409     0x300,      /* 768 */
410     0x60,
411     0,
412     { 0xf60, 0xfff },   /* PIC18F4331 range of SFR's */
413     {
414     /* PIC18F4331 configuration words */
415       0x300001,
416       0x30000d,
417       { { 0xcf, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x3f, 0, 0xff } /* 3 */ , 
418       { 0x3c, 0, 0xff } /* 4 */ , { 0x9d, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
419       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
420       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
421       { 0x40, 0, 0xff } /* d */  }
422     },
423     { 0x200000, 0x200007, 
424       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
425         { 0, 0 }, { 0, 0 }, { 0, 0 } }
426     }
427   },
428   {
429     {"p18f4455", "18f4455", "pic18f4455", "f4455"},
430     0,
431     0x800,      /* 2048 */
432     0x60,
433     0,
434     { 0xf62, 0xfff },   /* PIC18F4455 range of SFR's */
435     {
436     /* PIC18F4455 configuration words */
437       0x300000,
438       0x30000d,
439       { { 0x3f, 0, 0xff } /* 0 */ , { 0xcf, 0, 0xff } /* 1 */ , { 0x3f, 0, 0xff } /* 2 */ , 
440       { 0x1f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */  , { 0x87, 0, 0xff } /* 5 */ , 
441       { 0xe5, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , 
442       { 0xc0, 0, 0xff } /* 9 */ , { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , 
443       { 0x0f, 0, 0xff } /* c */ , { 0x40, 0, 0xff } /* d */  }
444     },
445     { 0x200000, 0x200007, 
446       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
447         { 0, 0 }, { 0, 0 }, { 0, 0 } }
448     }
449   },
450   {
451     {"p18f4520", "18f4520", "pic18f4520", "f4520"},
452     0,
453     0x1000,     /* 4096 */
454     0x80,
455     0,
456     { 0xf80, 0xfff },   /* PIC18F4520 range of SFR's */
457     {
458     /* PIC18F4520 configuration words */
459       0x300000,
460       0x30000d,
461       { { 0x3f, 0, 0xff } /* 0 */ , { 0xcf, 0, 0xff } /* 1 */ , { 0x1f, 0, 0xff } /* 2 */ , 
462       { 0x1f, 0, 0xff } /* 3 */ , { -1, 0, 0xff } /* 4 */  , { 0x87, 0, 0xff } /* 5 */ , 
463       { 0xc5, 0, 0xff } /* 6 */ , { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , 
464       { 0xc0, 0, 0xff } /* 9 */ , { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , 
465       { 0x0f, 0, 0xff } /* c */ , { 0x40, 0, 0xff } /* d */  }
466     },
467     { 0x200000, 0x200007, 
468       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
469         { 0, 0 }, { 0, 0 }, { 0, 0 } }
470     }
471   },
472   {
473     {"p18f6520", "18f6520", "pic18f6520", "f6520"},
474     0,
475     0x800,      /* 2048 */
476     0x60,
477     0,
478     { 0xf6b, 0xfff },   /* PIC18F6520 range of SFR's */
479     {
480     /* PIC18F6520 configuration words */
481       0x300001,
482       0x30000d,
483       { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
484       { 0x83, 0, 0xff } /* 4 */ , { 0x03, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
485       { -1, 0, 0xff } /* 7 */  , { 0xff, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
486       { 0xff, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0xff, 0, 0xff } /* c */ , 
487       { 0x40, 0, 0xff } /* d */  }
488     },
489     { 0x200000, 0x200007, 
490       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
491         { 0, 0 }, { 0, 0 }, { 0, 0 } }
492     }
493   },
494   {
495     {"p18f6620", "18f6620", "pic18f6620", "f6620"},
496     0,
497     0xf00,      /* 3840 */
498     0x60,
499     0,
500     { 0xf6b, 0xfff },   /* PIC18F6620 range of SFR's */
501     {
502     /* PIC18F6620 configuration words */
503       0x300001,
504       0x30000d,
505       { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
506       { 0x83, 0, 0xff } /* 4 */ , { 0x03, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
507       { -1, 0, 0xff } /* 7 */  , { 0xff, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
508       { 0xff, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0xff, 0, 0xff } /* c */ , 
509       { 0x40, 0, 0xff } /* d */  }
510     },
511     { 0x200000, 0x200007, 
512       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
513         { 0, 0 }, { 0, 0 }, { 0, 0 } }
514     }
515   },
516   {
517     {"p18f6680", "18f6680", "pic18f6680", "f6680"},
518     0,
519     0xf00,      /* 3840 */
520     0x60,
521     0,
522     { 0xd60, 0xfff },   /* PIC18F6680 range of SFR's */
523     {
524     /* PIC18F6680 configuration words */
525       0x300001,
526       0x30000d,
527       { { 0x2f, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
528       { 0x83, 0, 0xff } /* 4 */ , { 0x81, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
529       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
530       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
531       { 0x40, 0, 0xff } /* d */  }
532     },
533     { 0x200000, 0x200007, 
534       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
535         { 0, 0 }, { 0, 0 }, { 0, 0 } }
536     }
537   },
538   {
539     {"p18f6720", "18f6720", "pic18f6720", "f6720"},
540     0,
541     0xf00,      /* 3840 */
542     0x60,
543     0,
544     { 0xf6b, 0xfff },   /* PIC18F6720 range of SFR's */
545     {
546     /* PIC18F6720 configuration words */
547       0x300001,
548       0x30000d,
549       { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
550       { 0x83, 0, 0xff } /* 4 */ , { 0x03, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
551       { -1, 0, 0xff } /* 7 */  , { 0xff, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
552       { 0xff, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0xff, 0, 0xff } /* c */ , 
553       { 0x40, 0, 0xff } /* d */  }
554     },
555     { 0x200000, 0x200007, 
556       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
557         { 0, 0 }, { 0, 0 }, { 0, 0 } }
558     }
559   },
560   {
561     {"p18f8520", "18f8520", "pic18f8520", "f8520"},
562     0,
563     0x800,      /* 2048 */
564     0x60,
565     1,
566     { 0xf6b, 0xfff },   /* PIC18F8520 range of SFR's */
567     {
568     /* PIC18F8520 configuration words */
569       0x300001,
570       0x30000d,
571       { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
572       { 0x83, 0, 0xff } /* 4 */ , { 0x03, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
573       { -1, 0, 0xff } /* 7 */  , { 0xff, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
574       { 0xff, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0xff, 0, 0xff } /* c */ , 
575       { 0x40, 0, 0xff } /* d */  }
576     },
577     { 0x200000, 0x200007, 
578       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
579         { 0, 0 }, { 0, 0 }, { 0, 0 } }
580     }
581   },
582   {
583     {"p18f8620", "18f8620", "pic18f8620", "f8620"},
584     0,
585     0xf00,      /* 3840 */
586     0x60,
587     1,
588     { 0xf6b, 0xfff },   /* PIC18F8620 range of SFR's */
589     {
590     /* PIC18F8620 configuration words */
591       0x300001,
592       0x30000d,
593       { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
594       { 0x83, 0, 0xff } /* 4 */ , { 0x03, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
595       { -1, 0, 0xff } /* 7 */  , { 0xff, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
596       { 0xff, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0xff, 0, 0xff } /* c */ , 
597       { 0x40, 0, 0xff } /* d */  }
598     },
599     { 0x200000, 0x200007, 
600       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
601         { 0, 0 }, { 0, 0 }, { 0, 0 } }
602     }
603   },
604   {
605     {"p18f8680", "18f8680", "pic18f8680", "f8680"},
606     0,
607     0xf00,      /* 3840 */
608     0x60,
609     1,
610     { 0xd60, 0xfff },   /* PIC18F8680 range of SFR's */
611     {
612     /* PIC18F8680 configuration words */
613       0x300001,
614       0x30000d,
615       { { 0x2f, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x1f, 0, 0xff } /* 3 */ , 
616       { 0x83, 0, 0xff } /* 4 */ , { 0x81, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
617       { -1, 0, 0xff } /* 7 */  , { 0x0f, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
618       { 0x0f, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0x0f, 0, 0xff } /* c */ , 
619       { 0x40, 0, 0xff } /* d */  }
620     },
621     { 0x200000, 0x200007, 
622       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
623         { 0, 0 }, { 0, 0 }, { 0, 0 } }
624     }
625   },
626   {
627     {"p18f8720", "18f8720", "pic18f8720", "f8720"},
628     0,
629     0xf00,      /* 3840 */
630     0x60,
631     1,
632     { 0xf6b, 0xfff },   /* PIC18F8720 range of SFR's */
633     {
634     /* PIC18F8720 configuration words */
635       0x300001,
636       0x30000d,
637       { { 0x27, 0, 0xff } /* 1 */ , { 0x0f, 0, 0xff } /* 2 */ , { 0x0f, 0, 0xff } /* 3 */ , 
638       { 0x83, 0, 0xff } /* 4 */ , { 0x03, 0, 0xff } /* 5 */ , { 0x85, 0, 0xff } /* 6 */ , 
639       { -1, 0, 0xff } /* 7 */  , { 0xff, 0, 0xff } /* 8 */ , { 0xc0, 0, 0xff } /* 9 */ , 
640       { 0xff, 0, 0xff } /* a */ , { 0xe0, 0, 0xff } /* b */ , { 0xff, 0, 0xff } /* c */ , 
641       { 0x40, 0, 0xff } /* d */  }
642     },
643     { 0x200000, 0x200007, 
644       { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, 
645         { 0, 0 }, { 0, 0 }, { 0, 0 } }
646     }
647   }
648