1 /* GNU PIC processor definitions
2    Copyright (C) 2001, 2002, 2003, 2004, 2005
3    Craig Franklin
4 
5     Copyright (C) 2014-2016 Molnar Karoly
6 
7 This file is part of gputils.
8 
9 gputils is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2, or (at your option)
12 any later version.
13 
14 gputils is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 GNU General Public License for more details.
18 
19 You should have received a copy of the GNU General Public License
20 along with gputils; see the file COPYING.  If not, write to
21 the Free Software Foundation, 59 Temple Place - Suite 330,
22 Boston, MA 02111-1307, USA.  */
23 
24 #include <config.h>
25 #include <stdlib.h>
26 #ifdef HAVE_SYS_IOCTL_H
27 # include <sys/ioctl.h>	/* ioctl(TIOCGWINSZ) with GNU and BSD */
28 #endif
29 #ifdef HAVE_TERMIOS_H
30 # include <termios.h>	/* ioctl(TIOCGWINSZ) with Solaris */
31 #endif
32 #include "stdhdr.h"
33 #include "libgputils.h"
34 
35 /* XXXPRO: Need to add a line here for any extra processors.  Please
36    keep this list sorted primarily by number, secondarily sorting
37    alphabetically. */
38 
39 /* class                 defined_as        names[3]                                                     coff_type                 common_ram_addrs[2]                                maxrom                                                              config_addrs[2]                                                              script
40     |                     |                 |                                                            |       num_pages         |              common_ram_max                      |        prog_mem_size                                              |                      eeprom_addrs[2]                                       |                    pic16e_flags
41     |                     |                 |                                                            |        |    num_banks   |               |     linear_ram_addrs[2]          |         |        badrom[MAX_BADROM]                               |                       |                      idlocs_mask                   |                     |
42     |                     |                 |                                                            |        |     | bank_bits|               |      |                  maxram   |         |         |                      idlocs_addrs[2]          |                       |                       |      header                |                     |
43     |                     |                 |                                                            |        |     |  |       |               |      |                   |       |         |         |                       |                       |                       |                       |       |                    |                     |
44     V                     V                 V                                                            V        V     V  V       V               V      V                   V       V         V         V                       V                       V                       V                       V       V                    V                     V */
45 static struct px pics[] = {
46   { PROC_CLASS_PIC12    , "__10F200"      , { "pic10f200"      , "p10f200"        , "10f200"          }, 0xF200,  1,    1, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 }, 0x001F, 0x0000FF, 0x000100, {       -1,       -1 }, { 0x000100, 0x000103 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p10f200.inc"      , "10f200_g.lkr"      , 0 },
47   { PROC_CLASS_PIC12    , "__10F202"      , { "pic10f202"      , "p10f202"        , "10f202"          }, 0xF202,  1,    1, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 }, 0x001F, 0x0001FF, 0x000200, {       -1,       -1 }, { 0x000200, 0x000203 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p10f202.inc"      , "10f202_g.lkr"      , 0 },
48   { PROC_CLASS_PIC12    , "__10F204"      , { "pic10f204"      , "p10f204"        , "10f204"          }, 0xF204,  1,    1, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 }, 0x001F, 0x0000FF, 0x000100, {       -1,       -1 }, { 0x000100, 0x000103 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p10f204.inc"      , "10f204_g.lkr"      , 0 },
49   { PROC_CLASS_PIC12    , "__10F206"      , { "pic10f206"      , "p10f206"        , "10f206"          }, 0xF206,  1,    1, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 }, 0x001F, 0x0001FF, 0x000200, {       -1,       -1 }, { 0x000200, 0x000203 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p10f206.inc"      , "10f206_g.lkr"      , 0 },
50   { PROC_CLASS_PIC12    , "__10F220"      , { "pic10f220"      , "p10f220"        , "10f220"          }, 0xF220,  1,    1, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 }, 0x001F, 0x0000FF, 0x000100, {       -1,       -1 }, { 0x000100, 0x000103 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p10f220.inc"      , "10f220_g.lkr"      , 0 },
51   { PROC_CLASS_PIC12    , "__10F222"      , { "pic10f222"      , "p10f222"        , "10f222"          }, 0xF222,  1,    1, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 }, 0x001F, 0x0001FF, 0x000200, {       -1,       -1 }, { 0x000200, 0x000203 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p10f222.inc"      , "10f222_g.lkr"      , 0 },
52   { PROC_CLASS_PIC14    , "__10F320"      , { "pic10f320"      , "p10f320"        , "10f320"          }, 0xF320,  1,    1, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 }, 0x007F, 0x0000FF, 0x000100, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p10f320.inc"      , "10f320_g.lkr"      , 0 },
53   { PROC_CLASS_PIC14    , "__10F322"      , { "pic10f322"      , "p10f322"        , "10f322"          }, 0xF322,  1,    1, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 }, 0x007F, 0x0001FF, 0x000200, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p10f322.inc"      , "10f322_g.lkr"      , 0 },
54   { PROC_CLASS_PIC14    , "__10LF320"     , { "pic10lf320"     , "p10lf320"       , "10lf320"         }, 0xA320,  1,    1, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 }, 0x007F, 0x0000FF, 0x000100, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p10lf320.inc"     , "10lf320_g.lkr"     , 0 },
55   { PROC_CLASS_PIC14    , "__10LF322"     , { "pic10lf322"     , "p10lf322"       , "10lf322"         }, 0xA322,  1,    1, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 }, 0x007F, 0x0001FF, 0x000200, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p10lf322.inc"     , "10lf322_g.lkr"     , 0 },
56   { PROC_CLASS_PIC12    , "__12C508"      , { "pic12c508"      , "p12c508"        , "12c508"          }, 0x2508,  1,    1, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 }, 0x001F, 0x0001FF, 0x000200, {       -1,       -1 }, { 0x000200, 0x000203 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p12c508.inc"      , "12c508_g.lkr"      , 0 },
57   { PROC_CLASS_PIC12    , "__12C508A"     , { "pic12c508a"     , "p12c508a"       , "12c508a"         }, 0x508A,  1,    1, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 }, 0x001F, 0x0001FF, 0x000200, {       -1,       -1 }, { 0x000200, 0x000203 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p12c508a.inc"     , "12c508a_g.lkr"     , 0 },
58   { PROC_CLASS_PIC12    , "__12C509"      , { "pic12c509"      , "p12c509"        , "12c509"          }, 0x2509,  2,    2, 0x0020, { 0x07, 0x0F }, 0x00F, {     -1,     -1 }, 0x003F, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x000400, 0x000403 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p12c509.inc"      , "12c509_g.lkr"      , 0 },
59   { PROC_CLASS_PIC12    , "__12C509A"     , { "pic12c509a"     , "p12c509a"       , "12c509a"         }, 0x509A,  2,    2, 0x0020, { 0x07, 0x0F }, 0x00F, {     -1,     -1 }, 0x003F, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x000400, 0x000403 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p12c509a.inc"     , "12c509a_g.lkr"     , 0 },
60   { PROC_CLASS_PIC14    , "__12C671"      , { "pic12c671"      , "p12c671"        , "12c671"          }, 0x2671,  1,    2, 0x0080, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x00FF, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p12c671.inc"      , "12c671_g.lkr"      , 0 },
61   { PROC_CLASS_PIC14    , "__12C672"      , { "pic12c672"      , "p12c672"        , "12c672"          }, 0x2672,  1,    2, 0x0080, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x00FF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p12c672.inc"      , "12c672_g.lkr"      , 0 },
62   { PROC_CLASS_PIC12    , "__12CE518"     , { "pic12ce518"     , "p12ce518"       , "12ce518"         }, 0x2518,  1,    1, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 }, 0x001F, 0x0001FF, 0x000200, {       -1,       -1 }, { 0x000200, 0x000203 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p12ce518.inc"     , "12ce518_g.lkr"     , 0 },
63   { PROC_CLASS_PIC12    , "__12CE519"     , { "pic12ce519"     , "p12ce519"       , "12ce519"         }, 0x2519,  2,    2, 0x0020, { 0x07, 0x0F }, 0x00F, {     -1,     -1 }, 0x003F, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x000400, 0x000403 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p12ce519.inc"     , "12ce519_g.lkr"     , 0 },
64   { PROC_CLASS_PIC14    , "__12CE673"     , { "pic12ce673"     , "p12ce673"       , "12ce673"         }, 0x2673,  1,    2, 0x0080, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x00FF, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p12ce673.inc"     , "12ce673_g.lkr"     , 0 },
65   { PROC_CLASS_PIC14    , "__12CE674"     , { "pic12ce674"     , "p12ce674"       , "12ce674"         }, 0x2674,  1,    2, 0x0080, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x00FF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p12ce674.inc"     , "12ce674_g.lkr"     , 0 },
66   { PROC_CLASS_PIC12    , "__12CR509A"    , { "pic12cr509a"    , "p12cr509a"      , "12cr509a"        }, 0xD09A,  2,    2, 0x0020, { 0x07, 0x0F }, 0x00F, {     -1,     -1 }, 0x003F, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x000400, 0x000403 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p12cr509a.inc"    , "12cr509a_g.lkr"    , 0 },
67   { PROC_CLASS_PIC12    , "__12F508"      , { "pic12f508"      , "p12f508"        , "12f508"          }, 0xF508,  1,    1, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 }, 0x001F, 0x0001FF, 0x000200, {       -1,       -1 }, { 0x000200, 0x000203 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p12f508.inc"      , "12f508_g.lkr"      , 0 },
68   { PROC_CLASS_PIC12    , "__12F509"      , { "pic12f509"      , "p12f509"        , "12f509"          }, 0xF509,  2,    2, 0x0020, { 0x07, 0x0F }, 0x00F, {     -1,     -1 }, 0x003F, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x000400, 0x000403 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p12f509.inc"      , "12f509_g.lkr"      , 0 },
69   { PROC_CLASS_PIC12    , "__12F510"      , { "pic12f510"      , "p12f510"        , "12f510"          }, 0xF510,  2,    2, 0x0020, { 0x0A, 0x0F }, 0x00F, {     -1,     -1 }, 0x003F, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x000400, 0x000403 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p12f510.inc"      , "12f510_g.lkr"      , 0 },
70   { PROC_CLASS_PIC12    , "__12F519"      , { "pic12f519"      , "p12f519"        , "12f519"          }, 0xF519,  2,    2, 0x0020, { 0x07, 0x0F }, 0x00F, {     -1,     -1 }, 0x003F, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x000440, 0x000443 }, { 0x000FFF, 0x000FFF }, { 0x000400, 0x00043F }, 0x0FF0, "p12f519.inc"      , "12f519_g.lkr"      , 0 },
71   { PROC_CLASS_PIC12    , "__12F520"      , { "pic12f520"      , "p12f520"        , "12f520"          }, 0xF520,  3,    8, 0x00E0, { 0x07, 0x0F },    -1, {     -1,     -1 }, 0x00FF, 0x0005FF, 0x000600, {       -1,       -1 }, { 0x000640, 0x000643 }, { 0x000FFF, 0x000FFF }, { 0x000600, 0x00063F }, 0x0FF0, "p12f520.inc"      , "12f520_g.lkr"      , 0 },
72   { PROC_CLASS_PIC12E   , "__12F529T39A"  , { "pic12f529t39a"  , "p12f529t39a"    , "12f529t39a"      }, 0xE529,  3,    8, 0x00E0, { 0x07, 0x0F }, 0x00F, {     -1,     -1 }, 0x00FF, 0x0005FF, 0x000600, {       -1,       -1 }, { 0x000640, 0x000643 }, { 0x000FFF, 0x000FFF }, { 0x000600, 0x00063F }, 0x0FF0, "p12f529t39a.inc"  , "12f529t39a_g.lkr"  , 0 },
73   { PROC_CLASS_PIC12E   , "__12F529T48A"  , { "pic12f529t48a"  , "p12f529t48a"    , "12f529t48a"      }, 0xD529,  3,    8, 0x00E0, { 0x07, 0x0F }, 0x00F, {     -1,     -1 }, 0x00FF, 0x0005FF, 0x000600, {       -1,       -1 }, { 0x000640, 0x000643 }, { 0x000FFF, 0x000FFF }, { 0x000600, 0x00063F }, 0x0FF0, "p12f529t48a.inc"  , "12f529t48a_g.lkr"  , 0 },
74   { PROC_CLASS_PIC14    , "__12F609"      , { "pic12f609"      , "p12f609"        , "12f609"          }, 0xF609,  1,    2, 0x0080, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x00FF, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p12f609.inc"      , "12f609_g.lkr"      , 0 },
75   { PROC_CLASS_PIC14    , "__12F615"      , { "pic12f615"      , "p12f615"        , "12f615"          }, 0xF615,  1,    2, 0x0080, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x00FF, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p12f615.inc"      , "12f615_g.lkr"      , 0 },
76   { PROC_CLASS_PIC14    , "__12F617"      , { "pic12f617"      , "p12f617"        , "12f617"          }, 0xF617,  1,    2, 0x0080, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x00FF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p12f617.inc"      , "12f617_g.lkr"      , 0 },
77   { PROC_CLASS_PIC14    , "__12F629"      , { "pic12f629"      , "p12f629"        , "12f629"          }, 0x2629,  1,    2, 0x0080, { 0x20, 0x5F },    -1, {     -1,     -1 }, 0x00DF, 0x00217F, 0x000400, { 0x0003FF, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00217F }, 0x3F80, "p12f629.inc"      , "12f629_g.lkr"      , 0 },
78   { PROC_CLASS_PIC14    , "__12F635"      , { "pic12f635"      , "p12f635"        , "12f635"          }, 0xF635,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x00217F, 0x000400, { 0x000400, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00217F }, 0x3F80, "p12f635.inc"      , "12f635_g.lkr"      , 0 },
79   { PROC_CLASS_PIC14    , "__12F675"      , { "pic12f675"      , "p12f675"        , "12f675"          }, 0x2675,  1,    2, 0x0080, { 0x20, 0x5F },    -1, {     -1,     -1 }, 0x00DF, 0x00217F, 0x000400, { 0x0003FF, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00217F }, 0x3F80, "p12f675.inc"      , "12f675_g.lkr"      , 0 },
80   { PROC_CLASS_PIC14    , "__12F683"      , { "pic12f683"      , "p12f683"        , "12f683"          }, 0xF683,  1,    2, 0x0080, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x00FF, 0x0021FF, 0x000800, { 0x000800, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x0021FF }, 0x3F80, "p12f683.inc"      , "12f683_g.lkr"      , 0 },
81   { PROC_CLASS_PIC14    , "__12F752"      , { "pic12f752"      , "p12f752"        , "12f752"          }, 0xF752,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p12f752.inc"      , "12f752_g.lkr"      , 0 },
82   { PROC_CLASS_PIC14E   , "__12F1501"     , { "pic12f1501"     , "p12f1501"       , "12f1501"         }, 0x1501,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x202F }, 0x0FFF, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p12f1501.inc"     , "12f1501_g.lkr"     , 0 },
83   { PROC_CLASS_PIC14E   , "__12F1571"     , { "pic12f1571"     , "p12f1571"       , "12f1571"         }, 0x1571,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x206F }, 0x0FFF, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p12f1571.inc"     , "12f1571_g.lkr"     , 0 },
84   { PROC_CLASS_PIC14E   , "__12F1572"     , { "pic12f1572"     , "p12f1572"       , "12f1572"         }, 0x1572,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p12f1572.inc"     , "12f1572_g.lkr"     , 0 },
85   { PROC_CLASS_PIC14E   , "__12F1612"     , { "pic12f1612"     , "p12f1612"       , "12f1612"         }, 0x1612,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008009 }, {       -1,       -1 }, 0x3F80, "p12f1612.inc"     , "12f1612_g.lkr"     , 0 },
86   { PROC_CLASS_PIC14E   , "__12F1822"     , { "pic12f1822"     , "p12f1822"       , "12f1822"         }, 0x1822,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x206F }, 0x0FFF, 0x00F0FF, 0x000800, { 0x000800, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p12f1822.inc"     , "12f1822_g.lkr"     , 0 },
87   { PROC_CLASS_PIC14E   , "__12F1840"     , { "pic12f1840"     , "p12f1840"       , "12f1840"         }, 0x1840,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x00F0FF, 0x001000, { 0x001000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p12f1840.inc"     , "12f1840_g.lkr"     , 0 },
88   { PROC_CLASS_PIC14    , "__12HV609"     , { "pic12hv609"     , "p12hv609"       , "12hv609"         }, 0x6609,  1,    2, 0x0080, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x00FF, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p12hv609.inc"     , "12hv609_g.lkr"     , 0 },
89   { PROC_CLASS_PIC14    , "__12HV615"     , { "pic12hv615"     , "p12hv615"       , "12hv615"         }, 0x6615,  1,    2, 0x0080, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x00FF, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p12hv615.inc"     , "12hv615_g.lkr"     , 0 },
90   { PROC_CLASS_PIC14    , "__12HV752"     , { "pic12hv752"     , "p12hv752"       , "12hv752"         }, 0x6652,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p12hv752.inc"     , "12hv752_g.lkr"     , 0 },
91   { PROC_CLASS_PIC14E   , "__12LF1501"    , { "pic12lf1501"    , "p12lf1501"      , "12lf1501"        }, 0xA501,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x202F }, 0x0FFF, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p12lf1501.inc"    , "12lf1501_g.lkr"    , 0 },
92   { PROC_CLASS_PIC14E   , "__12LF1552"    , { "pic12lf1552"    , "p12lf1552"      , "12lf1552"        }, 0xA552,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p12lf1552.inc"    , "12lf1552_g.lkr"    , 0 },
93   { PROC_CLASS_PIC14E   , "__12LF1571"    , { "pic12lf1571"    , "p12lf1571"      , "12lf1571"        }, 0xA571,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x206F }, 0x0FFF, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p12lf1571.inc"    , "12lf1571_g.lkr"    , 0 },
94   { PROC_CLASS_PIC14E   , "__12LF1572"    , { "pic12lf1572"    , "p12lf1572"      , "12lf1572"        }, 0xA572,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p12lf1572.inc"    , "12lf1572_g.lkr"    , 0 },
95   { PROC_CLASS_PIC14E   , "__12LF1612"    , { "pic12lf1612"    , "p12lf1612"      , "12lf1612"        }, 0xA612,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008009 }, {       -1,       -1 }, 0x3F80, "p12lf1612.inc"    , "12lf1612_g.lkr"    , 0 },
96   { PROC_CLASS_PIC14E   , "__12LF1822"    , { "pic12lf1822"    , "p12lf1822"      , "12lf1822"        }, 0xA822,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x206F }, 0x0FFF, 0x00F0FF, 0x000800, { 0x000800, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p12lf1822.inc"    , "12lf1822_g.lkr"    , 0 },
97   { PROC_CLASS_PIC14E   , "__12LF1840"    , { "pic12lf1840"    , "p12lf1840"      , "12lf1840"        }, 0xA840,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x00F0FF, 0x001000, { 0x001000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p12lf1840.inc"    , "12lf1840_g.lkr"    , 0 },
98   { PROC_CLASS_PIC14E   , "__12LF1840T39A", { "pic12lf1840t39a", "p12lf1840t39a"  , "12lf1840t39a"    }, 0xC840,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x00F0FF, 0x001000, { 0x001000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p12lf1840t39a.inc", "12lf1840t39a_g.lkr", 0 },
99   { PROC_CLASS_PIC14E   , "__12LF1840T48A", { "pic12lf1840t48a", "p12lf1840t48a"  , "12lf1840t48a"    }, 0xB840,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x00F0FF, 0x001000, { 0x001000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p12lf1840t48a.inc", "12lf1840t48a_g.lkr", 0 },
100   { PROC_CLASS_PIC12    , "__16C5X"       , { "pic16c5x"       , "p16c5x"         , "16c5x"           }, 0x658A,  4,    4, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 },     -1,       -1,       -1, {       -1,       -1 }, { 0x000200, 0x000203 }, {       -1,       -1 }, {       -1,       -1 }, 0x0FF0, "p16c5x.inc"       , NULL                , 0 },
101   { PROC_CLASS_PIC12    , "__16C52"       , { "pic16c52"       , "p16c52"         , "16c52"           }, 0x6C52,  1,    1, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 }, 0x001F, 0x00017F, 0x000180, {       -1,       -1 }, { 0x000180, 0x000183 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p16c5x.inc"       , "16c52_g.lkr"       , 0 },
102   { PROC_CLASS_PIC12    , "__16C54"       , { "pic16c54"       , "p16c54"         , "16c54"           }, 0x6C54,  1,    1, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 }, 0x001F, 0x0001FF, 0x000200, {       -1,       -1 }, { 0x000200, 0x000203 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p16c54.inc"       , "16c54_g.lkr"       , 0 },
103   { PROC_CLASS_PIC12    , "__16C54A"      , { "pic16c54a"      , "p16c54a"        , "16c54a"          }, 0x654A,  1,    1, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 }, 0x001F, 0x0001FF, 0x000200, {       -1,       -1 }, { 0x000200, 0x000203 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p16c54a.inc"      , "16c54a_g.lkr"      , 0 },
104   { PROC_CLASS_PIC12    , "__16C54B"      , { "pic16c54b"      , "p16c54b"        , "16c54b"          }, 0x654B,  1,    1, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 }, 0x001F, 0x0001FF, 0x000200, {       -1,       -1 }, { 0x000200, 0x000203 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p16c54a.inc"      , "16c54b_g.lkr"      , 0 },
105   { PROC_CLASS_PIC12    , "__16C54C"      , { "pic16c54c"      , "p16c54c"        , "16c54c"          }, 0x654C,  1,    1, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 }, 0x001F, 0x0001FF, 0x000200, {       -1,       -1 }, { 0x000200, 0x000203 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p16c54c.inc"      , "16c54c_g.lkr"      , 0 },
106   { PROC_CLASS_PIC12    , "__16C55"       , { "pic16c55"       , "p16c55"         , "16c55"           }, 0x6C55,  1,    1, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 }, 0x001F, 0x0001FF, 0x000200, {       -1,       -1 }, { 0x000200, 0x000203 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p16c55.inc"       , "16c55_g.lkr"       , 0 },
107   { PROC_CLASS_PIC12    , "__16C55A"      , { "pic16c55a"      , "p16c55a"        , "16c55a"          }, 0x655A,  1,    1, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 }, 0x001F, 0x0001FF, 0x000200, {       -1,       -1 }, { 0x000200, 0x000203 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p16c55a.inc"      , "16c55a_g.lkr"      , 0 },
108   { PROC_CLASS_PIC12    , "__16C56"       , { "pic16c56"       , "p16c56"         , "16c56"           }, 0x6C56,  2,    1, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 }, 0x001F, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x000400, 0x000403 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p16c56.inc"       , "16c56_g.lkr"       , 0 },
109   { PROC_CLASS_PIC12    , "__16C56A"      , { "pic16c56a"      , "p16c56a"        , "16c56a"          }, 0x656A,  2,    1, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 }, 0x001F, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x000400, 0x000403 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p16c56a.inc"      , "16c56a_g.lkr"      , 0 },
110   { PROC_CLASS_PIC12    , "__16C57"       , { "pic16c57"       , "p16c57"         , "16c57"           }, 0x6C57,  4,    4, 0x0060, { 0x08, 0x0F }, 0x00F, {     -1,     -1 }, 0x007F, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x000800, 0x000803 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p16c57.inc"       , "16c57_g.lkr"       , 0 },
111   { PROC_CLASS_PIC12    , "__16C57C"      , { "pic16c57c"      , "p16c57c"        , "16c57c"          }, 0x657C,  4,    4, 0x0060, { 0x08, 0x0F }, 0x00F, {     -1,     -1 }, 0x007F, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x000800, 0x000803 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p16c57c.inc"      , "16c57c_g.lkr"      , 0 },
112   { PROC_CLASS_PIC12    , "__16C58A"      , { "pic16c58a"      , "p16c58a"        , "16c58a"          }, 0x658A,  4,    4, 0x0060, { 0x07, 0x0F }, 0x00F, {     -1,     -1 }, 0x007F, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x000800, 0x000803 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p16c58a.inc"      , "16c58a_g.lkr"      , 0 },
113   { PROC_CLASS_PIC12    , "__16C58B"      , { "pic16c58b"      , "p16c58b"        , "16c58b"          }, 0x658B,  4,    4, 0x0060, { 0x07, 0x0F }, 0x00F, {     -1,     -1 }, 0x007F, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x000800, 0x000803 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p16c58b.inc"      , "16c58b_g.lkr"      , 0 },
114   { PROC_CLASS_PIC14    , "__16C61"       , { "pic16c61"       , "p16c61"         , "16c61"           }, 0x6C61,  1,    2, 0x0080, { 0x0C, 0x2F },    -1, {     -1,     -1 }, 0x00AF, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c61.inc"       , "16c61_g.lkr"       , 0 },
115   { PROC_CLASS_PIC14    , "__16C62"       , { "pic16c62"       , "p16c62"         , "16c62"           }, 0x6C62,  1,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x00BF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c62.inc"       , "16c62_g.lkr"       , 0 },
116   { PROC_CLASS_PIC14    , "__16C62A"      , { "pic16c62a"      , "p16c62a"        , "16c62a"          }, 0x662A,  1,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x00BF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c62a.inc"      , "16c62a_g.lkr"      , 0 },
117   { PROC_CLASS_PIC14    , "__16C62B"      , { "pic16c62b"      , "p16c62b"        , "16c62b"          }, 0x662B,  1,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x00BF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c62b.inc"      , "16c62b_g.lkr"      , 0 },
118   { PROC_CLASS_PIC14    , "__16C63"       , { "pic16c63"       , "p16c63"         , "16c63"           }, 0x6C63,  2,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x00FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c63.inc"       , "16c63_g.lkr"       , 0 },
119   { PROC_CLASS_PIC14    , "__16C63A"      , { "pic16c63a"      , "p16c63a"        , "16c63a"          }, 0x663A,  2,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x00FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c63a.inc"      , "16c63a_g.lkr"      , 0 },
120   { PROC_CLASS_PIC14    , "__16C64"       , { "pic16c64"       , "p16c64"         , "16c64"           }, 0x6C64,  1,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x00BF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c64.inc"       , "16c64_g.lkr"       , 0 },
121   { PROC_CLASS_PIC14    , "__16C64A"      , { "pic16c64a"      , "p16c64a"        , "16c64a"          }, 0x664A,  1,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x00BF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c64a.inc"      , "16c64a_g.lkr"      , 0 },
122   { PROC_CLASS_PIC14    , "__16C65"       , { "pic16c65"       , "p16c65"         , "16c65"           }, 0x6C65,  2,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x00FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c65.inc"       , "16c65_g.lkr"       , 0 },
123   { PROC_CLASS_PIC14    , "__16C65A"      , { "pic16c65a"      , "p16c65a"        , "16c65a"          }, 0x665A,  2,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x00FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c65a.inc"      , "16c65a_g.lkr"      , 0 },
124   { PROC_CLASS_PIC14    , "__16C65B"      , { "pic16c65b"      , "p16c65b"        , "16c65b"          }, 0x665B,  2,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x00FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c65b.inc"      , "16c65b_g.lkr"      , 0 },
125   { PROC_CLASS_PIC14    , "__16C66"       , { "pic16c66"       , "p16c66"         , "16c66"           }, 0x6C66,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c66.inc"       , "16c66_g.lkr"       , 0 },
126   { PROC_CLASS_PIC14    , "__16C67"       , { "pic16c67"       , "p16c67"         , "16c67"           }, 0x6C67,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c67.inc"       , "16c67_g.lkr"       , 0 },
127   { PROC_CLASS_PIC14    , "__16C71"       , { "pic16c71"       , "p16c71"         , "16c71"           }, 0x6C71,  1,    2, 0x0080, { 0x0C, 0x2F },    -1, {     -1,     -1 }, 0x00AF, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c71.inc"       , "16c71_g.lkr"       , 0 },
128   { PROC_CLASS_PIC14    , "__16C72"       , { "pic16c72"       , "p16c72"         , "16c72"           }, 0x6C72,  1,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x00BF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c72.inc"       , "16c72_g.lkr"       , 0 },
129   { PROC_CLASS_PIC14    , "__16C72A"      , { "pic16c72a"      , "p16c72a"        , "16c72a"          }, 0x672A,  1,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x00BF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c72a.inc"      , "16c72a_g.lkr"      , 0 },
130   { PROC_CLASS_PIC14    , "__16C73"       , { "pic16c73"       , "p16c73"         , "16c73"           }, 0x6C73,  2,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x00FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c73.inc"       , "16c73_g.lkr"       , 0 },
131   { PROC_CLASS_PIC14    , "__16C73A"      , { "pic16c73a"      , "p16c73a"        , "16c73a"          }, 0x673A,  2,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x00FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c73a.inc"      , "16c73a_g.lkr"      , 0 },
132   { PROC_CLASS_PIC14    , "__16C73B"      , { "pic16c73b"      , "p16c73b"        , "16c73b"          }, 0x673B,  2,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x00FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c73b.inc"      , "16c73b_g.lkr"      , 0 },
133   { PROC_CLASS_PIC14    , "__16C74"       , { "pic16c74"       , "p16c74"         , "16c74"           }, 0x6C74,  2,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x00FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c74.inc"       , "16c74_g.lkr"       , 0 },
134   { PROC_CLASS_PIC14    , "__16C74A"      , { "pic16c74a"      , "p16c74a"        , "16c74a"          }, 0x674A,  2,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x00FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c74a.inc"      , "16c74a_g.lkr"      , 0 },
135   { PROC_CLASS_PIC14    , "__16C74B"      , { "pic16c74b"      , "p16c74b"        , "16c74b"          }, 0x674B,  2,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x00FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c74b.inc"      , "16c74b_g.lkr"      , 0 },
136   { PROC_CLASS_PIC14    , "__16C76"       , { "pic16c76"       , "p16c76"         , "16c76"           }, 0x6C76,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c76.inc"       , "16c76_g.lkr"       , 0 },
137   { PROC_CLASS_PIC14    , "__16C77"       , { "pic16c77"       , "p16c77"         , "16c77"           }, 0x6C77,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c77.inc"       , "16c77_g.lkr"       , 0 },
138   { PROC_CLASS_PIC14    , "__16C84"       , { "pic16c84"       , "p16c84"         , "16c84"           }, 0x6C84,  1,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x008B, 0x00213F, 0x000400, { 0x000400, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00213F }, 0x3F80, "p16c84.inc"       , "16c84_g.lkr"       , 0 },
139   { PROC_CLASS_PIC14    , "__16C432"      , { "pic16c432"      , "p16c432"        , "16c432"          }, 0x6432,  1,    2, 0x0080, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x00FF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c432.inc"      , "16c432_g.lkr"      , 0 },
140   { PROC_CLASS_PIC14    , "__16C433"      , { "pic16c433"      , "p16c433"        , "16c433"          }, 0x6433,  1,    2, 0x0080, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x00FF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c433.inc"      , "16c433_g.lkr"      , 0 },
141   { PROC_CLASS_PIC12    , "__16C505"      , { "pic16c505"      , "p16c505"        , "16c505"          }, 0x2505,  2,    4, 0x0060, { 0x08, 0x0F }, 0x00F, {     -1,     -1 }, 0x007F, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x000400, 0x000403 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p16c505.inc"      , "16c505_g.lkr"      , 0 },
142   { PROC_CLASS_PIC14    , "__16C554"      , { "pic16c554"      , "p16c554"        , "16c554"          }, 0x6554,  1,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x009F, 0x0001FF, 0x000200, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c554.inc"      , "16c554_g.lkr"      , 0 },
143   { PROC_CLASS_PIC14    , "__16C557"      , { "pic16c557"      , "p16c557"        , "16c557"          }, 0x6557,  1,    2, 0x0080, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x00FF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c557.inc"      , "16c557_g.lkr"      , 0 },
144   { PROC_CLASS_PIC14    , "__16C558"      , { "pic16c558"      , "p16c558"        , "16c558"          }, 0x6558,  1,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x00BF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c558.inc"      , "16c558_g.lkr"      , 0 },
145   { PROC_CLASS_PIC14    , "__16C620"      , { "pic16c620"      , "p16c620"        , "16c620"          }, 0x6620,  1,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x009F, 0x0001FF, 0x000200, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c620.inc"      , "16c620_g.lkr"      , 0 },
146   { PROC_CLASS_PIC14    , "__16C620A"     , { "pic16c620a"     , "p16c620a"       , "16c620a"         }, 0x620A,  1,    2, 0x0080, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x00FF, 0x0001FF, 0x000200, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c620a.inc"     , "16c620a_g.lkr"     , 0 },
147   { PROC_CLASS_PIC14    , "__16C621"      , { "pic16c621"      , "p16c621"        , "16c621"          }, 0x6621,  1,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x009F, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c621.inc"      , "16c621_g.lkr"      , 0 },
148   { PROC_CLASS_PIC14    , "__16C621A"     , { "pic16c621a"     , "p16c621a"       , "16c621a"         }, 0x621A,  1,    2, 0x0080, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x00FF, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c621a.inc"     , "16c621a_g.lkr"     , 0 },
149   { PROC_CLASS_PIC14    , "__16C622"      , { "pic16c622"      , "p16c622"        , "16c622"          }, 0x6622,  1,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x00BF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c622.inc"      , "16c622_g.lkr"      , 0 },
150   { PROC_CLASS_PIC14    , "__16C622A"     , { "pic16c622a"     , "p16c622a"       , "16c622a"         }, 0x622A,  1,    2, 0x0080, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x00FF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c622a.inc"     , "16c622a_g.lkr"     , 0 },
151   { PROC_CLASS_PIC14    , "__16C642"      , { "pic16c642"      , "p16c642"        , "16c642"          }, 0x6642,  2,    2, 0x0080, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x00FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c642.inc"      , "16c642_g.lkr"      , 0 },
152   { PROC_CLASS_PIC14    , "__16C662"      , { "pic16c662"      , "p16c662"        , "16c662"          }, 0x6662,  2,    2, 0x0080, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x00FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c662.inc"      , "16c662_g.lkr"      , 0 },
153   { PROC_CLASS_PIC14    , "__16C710"      , { "pic16c710"      , "p16c710"        , "16c710"          }, 0x6710,  1,    2, 0x0080, { 0x0C, 0x2F },    -1, {     -1,     -1 }, 0x00AF, 0x0001FF, 0x000200, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c710.inc"      , "16c710_g.lkr"      , 0 },
154   { PROC_CLASS_PIC14    , "__16C711"      , { "pic16c711"      , "p16c711"        , "16c711"          }, 0x6711,  1,    2, 0x0080, { 0x0C, 0x4F },    -1, {     -1,     -1 }, 0x00CF, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c711.inc"      , "16c711_g.lkr"      , 0 },
155   { PROC_CLASS_PIC14    , "__16C712"      , { "pic16c712"      , "p16c712"        , "16c712"          }, 0x6712,  1,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x00BF, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c712.inc"      , "16c712_g.lkr"      , 0 },
156   { PROC_CLASS_PIC14    , "__16C715"      , { "pic16c715"      , "p16c715"        , "16c715"          }, 0x6715,  1,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x00BF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c715.inc"      , "16c715_g.lkr"      , 0 },
157   { PROC_CLASS_PIC14    , "__16C716"      , { "pic16c716"      , "p16c716"        , "16c716"          }, 0x6716,  1,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x00BF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c716.inc"      , "16c716_g.lkr"      , 0 },
158   { PROC_CLASS_PIC14    , "__16C717"      , { "pic16c717"      , "p16c717"        , "16c717"          }, 0x6717,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c717.inc"      , "16c717_g.lkr"      , 0 },
159   { PROC_CLASS_PIC14    , "__16C745"      , { "pic16c745"      , "p16c745"        , "16c745"          }, 0x6745,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c745.inc"      , "16c745_g.lkr"      , 0 },
160   { PROC_CLASS_PIC14    , "__16C765"      , { "pic16c765"      , "p16c765"        , "16c765"          }, 0x6765,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c765.inc"      , "16c765_g.lkr"      , 0 },
161   { PROC_CLASS_PIC14    , "__16C770"      , { "pic16c770"      , "p16c770"        , "16c770"          }, 0x6770,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c770.inc"      , "16c770_g.lkr"      , 0 },
162   { PROC_CLASS_PIC14    , "__16C771"      , { "pic16c771"      , "p16c771"        , "16c771"          }, 0x6771,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c771.inc"      , "16c771_g.lkr"      , 0 },
163   { PROC_CLASS_PIC14    , "__16C773"      , { "pic16c773"      , "p16c773"        , "16c773"          }, 0x6773,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c773.inc"      , "16c773_g.lkr"      , 0 },
164   { PROC_CLASS_PIC14    , "__16C774"      , { "pic16c774"      , "p16c774"        , "16c774"          }, 0x6774,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c774.inc"      , "16c774_g.lkr"      , 0 },
165   { PROC_CLASS_PIC14    , "__16C781"      , { "pic16c781"      , "p16c781"        , "16c781"          }, 0x6781,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c781.inc"      , "16c781_g.lkr"      , 0 },
166   { PROC_CLASS_PIC14    , "__16C782"      , { "pic16c782"      , "p16c782"        , "16c782"          }, 0x6782,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c782.inc"      , "16c782_g.lkr"      , 0 },
167   { PROC_CLASS_PIC14    , "__16C923"      , { "pic16c923"      , "p16c923"        , "16c923"          }, 0x6923,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c923.inc"      , "16c923_g.lkr"      , 0 },
168   { PROC_CLASS_PIC14    , "__16C924"      , { "pic16c924"      , "p16c924"        , "16c924"          }, 0x6924,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c924.inc"      , "16c924_g.lkr"      , 0 },
169   { PROC_CLASS_PIC14    , "__16C925"      , { "pic16c925"      , "p16c925"        , "16c925"          }, 0x6925,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c925.inc"      , "16c925_g.lkr"      , 0 },
170   { PROC_CLASS_PIC14    , "__16C926"      , { "pic16c926"      , "p16c926"        , "16c926"          }, 0x6926,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16c926.inc"      , "16c926_g.lkr"      , 0 },
171   { PROC_CLASS_PIC14    , "__16CE623"     , { "pic16ce623"     , "p16ce623"       , "16ce623"         }, 0x6623,  1,    2, 0x0080, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x00FF, 0x0001FF, 0x000200, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16ce623.inc"     , "16ce623_g.lkr"     , 0 },
172   { PROC_CLASS_PIC14    , "__16CE624"     , { "pic16ce624"     , "p16ce624"       , "16ce624"         }, 0x6624,  1,    2, 0x0080, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x00FF, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16ce624.inc"     , "16ce624_g.lkr"     , 0 },
173   { PROC_CLASS_PIC14    , "__16CE625"     , { "pic16ce625"     , "p16ce625"       , "16ce625"         }, 0x6625,  1,    2, 0x0080, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x00FF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16ce625.inc"     , "16ce625_g.lkr"     , 0 },
174   { PROC_CLASS_PIC12    , "__16CR54"      , { "pic16cr54"      , "p16cr54"        , "16cr54"          }, 0xDC54,  1,    1, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 }, 0x001F, 0x0001FF, 0x000200, {       -1,       -1 }, { 0x000200, 0x000203 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p16cr54.inc"      , "16cr54_g.lkr"      , 0 },
175   { PROC_CLASS_PIC12    , "__16CR54A"     , { "pic16cr54a"     , "p16cr54a"       , "16cr54a"         }, 0xD54A,  1,    1, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 }, 0x001F, 0x0001FF, 0x000200, {       -1,       -1 }, { 0x000200, 0x000203 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p16cr54a.inc"     , "16cr54a_g.lkr"     , 0 },
176   { PROC_CLASS_PIC12    , "__16CR54B"     , { "pic16cr54b"     , "p16cr54b"       , "16cr54b"         }, 0xD54B,  1,    1, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 }, 0x001F, 0x0001FF, 0x000200, {       -1,       -1 }, { 0x000200, 0x000203 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p16cr54a.inc"     , "16cr54b_g.lkr"     , 0 },
177   { PROC_CLASS_PIC12    , "__16CR54C"     , { "pic16cr54c"     , "p16cr54c"       , "16cr54c"         }, 0xD54C,  1,    1, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 }, 0x001F, 0x0001FF, 0x000200, {       -1,       -1 }, { 0x000200, 0x000203 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p16cr54c.inc"     , "16cr54c_g.lkr"     , 0 },
178   { PROC_CLASS_PIC12    , "__16CR56A"     , { "pic16cr56a"     , "p16cr56a"       , "16cr56a"         }, 0xD56A,  2,    1, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 }, 0x001F, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x000400, 0x000403 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p16cr56a.inc"     , "16cr56a_g.lkr"     , 0 },
179   { PROC_CLASS_PIC12    , "__16CR57A"     , { "pic16cr57a"     , "p16cr57a"       , "16cr57a"         }, 0xD57A,  4,    4, 0x0060, { 0x08, 0x0F }, 0x00F, {     -1,     -1 }, 0x007F, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x000800, 0x000803 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p16cr57a.inc"     , "16cr57a_g.lkr"     , 0 },
180   { PROC_CLASS_PIC12    , "__16CR57B"     , { "pic16cr57b"     , "p16cr57b"       , "16cr57b"         }, 0xD57B,  4,    4, 0x0060, { 0x08, 0x0F }, 0x00F, {     -1,     -1 }, 0x007F, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x000800, 0x000803 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p16cr57b.inc"     , "16cr57b_g.lkr"     , 0 },
181   { PROC_CLASS_PIC12    , "__16CR57C"     , { "pic16cr57c"     , "p16cr57c"       , "16cr57c"         }, 0xD57C,  4,    4, 0x0060, { 0x08, 0x0F }, 0x00F, {     -1,     -1 }, 0x007F, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x000800, 0x000803 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p16cr57c.inc"     , "16cr57c_g.lkr"     , 0 },
182   { PROC_CLASS_PIC12    , "__16CR58A"     , { "pic16cr58a"     , "p16cr58a"       , "16cr58a"         }, 0xD58A,  4,    4, 0x0060, { 0x07, 0x0F }, 0x00F, {     -1,     -1 }, 0x007F, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x000800, 0x000803 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p16cr58a.inc"     , "16cr58a_g.lkr"     , 0 },
183   { PROC_CLASS_PIC12    , "__16CR58B"     , { "pic16cr58b"     , "p16cr58b"       , "16cr58b"         }, 0xD58B,  4,    4, 0x0060, { 0x07, 0x0F }, 0x00F, {     -1,     -1 }, 0x007F, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x000800, 0x000803 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p16cr58b.inc"     , "16cr58b_g.lkr"     , 0 },
184   { PROC_CLASS_PIC14    , "__16CR62"      , { "pic16cr62"      , "p16cr62"        , "16cr62"          }, 0xDC62,  1,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x00BF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16cr62.inc"      , "16cr62_g.lkr"      , 0 },
185   { PROC_CLASS_PIC14    , "__16CR63"      , { "pic16cr63"      , "p16cr63"        , "16cr63"          }, 0x6D63,  2,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x00FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16cr63.inc"      , "16cr63_g.lkr"      , 0 },
186   { PROC_CLASS_PIC14    , "__16CR64"      , { "pic16cr64"      , "p16cr64"        , "16cr64"          }, 0xDC64,  1,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x00BF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16cr64.inc"      , "16cr64_g.lkr"      , 0 },
187   { PROC_CLASS_PIC14    , "__16CR65"      , { "pic16cr65"      , "p16cr65"        , "16cr65"          }, 0x6D65,  2,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x00FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16cr65.inc"      , "16cr65_g.lkr"      , 0 },
188   { PROC_CLASS_PIC14    , "__16CR72"      , { "pic16cr72"      , "p16cr72"        , "16cr72"          }, 0x6D72,  1,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x00BF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16cr72.inc"      , "16cr72_g.lkr"      , 0 },
189   { PROC_CLASS_PIC14    , "__16CR83"      , { "pic16cr83"      , "p16cr83"        , "16cr83"          }, 0xDC83,  1,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x008B, 0x00213F, 0x000200, { 0x000200, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00213F }, 0x3F80, "p16cr83.inc"      , "16cr83_g.lkr"      , 0 },
190   { PROC_CLASS_PIC14    , "__16CR84"      , { "pic16cr84"      , "p16cr84"        , "16cr84"          }, 0xDC84,  1,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x008B, 0x00213F, 0x000400, { 0x000400, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00213F }, 0x3F80, "p16cr84.inc"      , "16cr84_g.lkr"      , 0 },
191   { PROC_CLASS_PIC14    , "__16CR620A"    , { "pic16cr620a"    , "p16cr620a"      , "16cr620a"        }, 0xD20A,  1,    2, 0x0080, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x00FF, 0x0001FF, 0x000200, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16cr620a.inc"    , "16cr620a_g.lkr"    , 0 },
192   { PROC_CLASS_PIC14    , "__16CXX"       , { "pic16cxx"       , "p16cxx"         , "16cxx"           }, 0x6C77,  4,    4, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 },     -1,       -1,       -1, {       -1,       -1 }, { 0x002000, 0x002003 }, {       -1,       -1 }, {       -1,       -1 }, 0x3F80, NULL               , NULL                , 0 },
193   { PROC_CLASS_PIC12    , "__16F54"       , { "pic16f54"       , "p16f54"         , "16f54"           }, 0x6F54,  1,    1, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 }, 0x001F, 0x0001FF, 0x000200, {       -1,       -1 }, { 0x000200, 0x000203 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p16f54.inc"       , "16f54_g.lkr"       , 0 },
194   { PROC_CLASS_PIC12    , "__16F57"       , { "pic16f57"       , "p16f57"         , "16f57"           }, 0x6F57,  4,    4, 0x0060, { 0x08, 0x0F }, 0x00F, {     -1,     -1 }, 0x007F, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x000800, 0x000803 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p16f57.inc"       , "16f57_g.lkr"       , 0 },
195   { PROC_CLASS_PIC12    , "__16F59"       , { "pic16f59"       , "p16f59"         , "16f59"           }, 0x6F59,  4,    8, 0x00E0, { 0x0A, 0x0F }, 0x00F, {     -1,     -1 }, 0x00FF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x000800, 0x000803 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p16f59.inc"       , "16f59_g.lkr"       , 0 },
196   { PROC_CLASS_PIC14    , "__16F72"       , { "pic16f72"       , "p16f72"         , "16f72"           }, 0x672F,  1,    4, 0x0180, { 0x40, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16f72.inc"       , "16f72_g.lkr"       , 0 },
197   { PROC_CLASS_PIC14    , "__16F73"       , { "pic16f73"       , "p16f73"         , "16f73"           }, 0x673F,  2,    4, 0x0180, {   -1,   -1 },    -1, {     -1,     -1 }, 0x01FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16f73.inc"       , "16f73_g.lkr"       , 0 },
198   { PROC_CLASS_PIC14    , "__16F74"       , { "pic16f74"       , "p16f74"         , "16f74"           }, 0x674F,  2,    4, 0x0180, {   -1,   -1 },    -1, {     -1,     -1 }, 0x01FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16f74.inc"       , "16f74_g.lkr"       , 0 },
199   { PROC_CLASS_PIC14    , "__16F76"       , { "pic16f76"       , "p16f76"         , "16f76"           }, 0x676F,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16f76.inc"       , "16f76_g.lkr"       , 0 },
200   { PROC_CLASS_PIC14    , "__16F77"       , { "pic16f77"       , "p16f77"         , "16f77"           }, 0x677F,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16f77.inc"       , "16f77_g.lkr"       , 0 },
201   { PROC_CLASS_PIC14    , "__16F83"       , { "pic16f83"       , "p16f83"         , "16f83"           }, 0x6C83,  1,    2, 0x0080, { 0x0C, 0x2F },    -1, {     -1,     -1 }, 0x00AF, 0x00213F, 0x000200, { 0x000200, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00213F }, 0x3F80, "p16f83.inc"       , "16f83_g.lkr"       , 0 },
202   { PROC_CLASS_PIC14    , "__16F84"       , { "pic16f84"       , "p16f84"         , "16f84"           }, 0x684A,  1,    2, 0x0080, { 0x0C, 0x4F },    -1, {     -1,     -1 }, 0x00CF, 0x00213F, 0x000400, { 0x000400, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00213F }, 0x3F80, "p16f84.inc"       , "16f84_g.lkr"       , 0 },
203   { PROC_CLASS_PIC14    , "__16F84A"      , { "pic16f84a"      , "p16f84a"        , "16f84a"          }, 0x6F84,  1,    2, 0x0080, { 0x0C, 0x4F },    -1, {     -1,     -1 }, 0x00CF, 0x00213F, 0x000400, { 0x000400, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00213F }, 0x3F80, "p16f84a.inc"      , "16f84a_g.lkr"      , 0 },
204   { PROC_CLASS_PIC14    , "__16F87"       , { "pic16f87"       , "p16f87"         , "16f87"           }, 0x687F,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x001000, { 0x001000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, { 0x002100, 0x0021FF }, 0x3F80, "p16f87.inc"       , "16f87_g.lkr"       , 0 },
205   { PROC_CLASS_PIC14    , "__16F88"       , { "pic16f88"       , "p16f88"         , "16f88"           }, 0x688F,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x001000, { 0x001000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, { 0x002100, 0x0021FF }, 0x3F80, "p16f88.inc"       , "16f88_g.lkr"       , 0 },
206   { PROC_CLASS_PIC12    , "__16F505"      , { "pic16f505"      , "p16f505"        , "16f505"          }, 0xF505,  2,    4, 0x0060, { 0x08, 0x0F }, 0x00F, {     -1,     -1 }, 0x007F, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x000400, 0x000403 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p16f505.inc"      , "16f505_g.lkr"      , 0 },
207   { PROC_CLASS_PIC12    , "__16F506"      , { "pic16f506"      , "p16f506"        , "16f506"          }, 0xF506,  2,    4, 0x0060, { 0x0D, 0x0F }, 0x00F, {     -1,     -1 }, 0x007F, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x000400, 0x000403 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p16f506.inc"      , "16f506_g.lkr"      , 0 },
208   { PROC_CLASS_PIC12    , "__16F526"      , { "pic16f526"      , "p16f526"        , "16f526"          }, 0xF526,  2,    4, 0x0060, { 0x0D, 0x0F },    -1, {     -1,     -1 }, 0x007F, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x000440, 0x000443 }, { 0x000FFF, 0x000FFF }, { 0x000400, 0x00043F }, 0x0FF0, "p16f526.inc"      , "16f526_g.lkr"      , 0 },
209   { PROC_CLASS_PIC12I   , "__16F527"      , { "pic16f527"      , "p16f527"        , "16f527"          }, 0xF527,  2,    4, 0x0060, { 0x0C, 0x0F },    -1, {     -1,     -1 }, 0x007F, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x000440, 0x000443 }, { 0x000FFF, 0x000FFF }, { 0x000400, 0x00043F }, 0x0FF0, "p16f527.inc"      , "16f527_g.lkr"      , 0 },
210   { PROC_CLASS_PIC12I   , "__16F570"      , { "pic16f570"      , "p16f570"        , "16f570"          }, 0xF570,  4,    8, 0x00E0, { 0x0C, 0x0F },    -1, {     -1,     -1 }, 0x00FF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x000840, 0x000843 }, { 0x000FFF, 0x000FFF }, { 0x000800, 0x00083F }, 0x0FF0, "p16f570.inc"      , "16f570_g.lkr"      , 0 },
211   { PROC_CLASS_PIC14    , "__16F610"      , { "pic16f610"      , "p16f610"        , "16f610"          }, 0xF610,  1,    2, 0x0080, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x00FF, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16f610.inc"      , "16f610_g.lkr"      , 0 },
212   { PROC_CLASS_PIC14    , "__16F616"      , { "pic16f616"      , "p16f616"        , "16f616"          }, 0xF616,  1,    2, 0x0080, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x00FF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16f616.inc"      , "16f616_g.lkr"      , 0 },
213   { PROC_CLASS_PIC14    , "__16F627"      , { "pic16f627"      , "p16f627"        , "16f627"          }, 0x6627,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x00217F, 0x000400, { 0x000400, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00217F }, 0x3F80, "p16f627.inc"      , "16f627_g.lkr"      , 0 },
214   { PROC_CLASS_PIC14    , "__16F627A"     , { "pic16f627a"     , "p16f627a"       , "16f627a"         }, 0x627A,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x00217F, 0x000400, { 0x000400, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00217F }, 0x3F80, "p16f627a.inc"     , "16f627a_g.lkr"     , 0 },
215   { PROC_CLASS_PIC14    , "__16F628"      , { "pic16f628"      , "p16f628"        , "16f628"          }, 0x6628,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x00217F, 0x000800, { 0x000800, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00217F }, 0x3F80, "p16f628.inc"      , "16f628_g.lkr"      , 0 },
216   { PROC_CLASS_PIC14    , "__16F628A"     , { "pic16f628a"     , "p16f628a"       , "16f628a"         }, 0x628A,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x00217F, 0x000800, { 0x000800, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00217F }, 0x3F80, "p16f628a.inc"     , "16f628a_g.lkr"     , 0 },
217   { PROC_CLASS_PIC14    , "__16F630"      , { "pic16f630"      , "p16f630"        , "16f630"          }, 0x6630,  1,    2, 0x0080, { 0x20, 0x5F },    -1, {     -1,     -1 }, 0x00DF, 0x00217F, 0x000400, { 0x0003FF, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00217F }, 0x3F80, "p16f630.inc"      , "16f630_g.lkr"      , 0 },
218   { PROC_CLASS_PIC14    , "__16F631"      , { "pic16f631"      , "p16f631"        , "16f631"          }, 0x6631,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x00217F, 0x000400, { 0x000400, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00217F }, 0x3F80, "p16f631.inc"      , "16f631_g.lkr"      , 0 },
219   { PROC_CLASS_PIC14    , "__16F636"      , { "pic16f636"      , "p16f636"        , "16f636"          }, 0xF636,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x000800, { 0x000800, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x0021FF }, 0x3F80, "p16f636.inc"      , "16f636_g.lkr"      , 0 },
220   { PROC_CLASS_PIC14    , "__16F639"      , { "pic16f639"      , "p16f639"        , "16f639"          }, 0xF639,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x000800, { 0x000800, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x0021FF }, 0x3F80, "p16f639.inc"      , "16f639_g.lkr"      , 0 },
221   { PROC_CLASS_PIC14    , "__16F648A"     , { "pic16f648a"     , "p16f648a"       , "16f648a"         }, 0x648A,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x001000, { 0x001000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x0021FF }, 0x3F80, "p16f648a.inc"     , "16f648a_g.lkr"     , 0 },
222   { PROC_CLASS_PIC14    , "__16F676"      , { "pic16f676"      , "p16f676"        , "16f676"          }, 0x6676,  1,    2, 0x0080, { 0x20, 0x5F },    -1, {     -1,     -1 }, 0x00DF, 0x00217F, 0x000400, { 0x0003FF, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00217F }, 0x3F80, "p16f676.inc"      , "16f676_g.lkr"      , 0 },
223   { PROC_CLASS_PIC14    , "__16F677"      , { "pic16f677"      , "p16f677"        , "16f677"          }, 0x6677,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x000800, { 0x000800, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x0021FF }, 0x3F80, "p16f677.inc"      , "16f677_g.lkr"      , 0 },
224   { PROC_CLASS_PIC14    , "__16F684"      , { "pic16f684"      , "p16f684"        , "16f684"          }, 0x6684,  1,    2, 0x0080, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x00FF, 0x0021FF, 0x000800, { 0x000800, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x0021FF }, 0x3F80, "p16f684.inc"      , "16f684_g.lkr"      , 0 },
225   { PROC_CLASS_PIC14    , "__16F685"      , { "pic16f685"      , "p16f685"        , "16f685"          }, 0x6685,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x001000, { 0x001000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x0021FF }, 0x3F80, "p16f685.inc"      , "16f685_g.lkr"      , 0 },
226   { PROC_CLASS_PIC14    , "__16F687"      , { "pic16f687"      , "p16f687"        , "16f687"          }, 0x6687,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x000800, { 0x000800, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x0021FF }, 0x3F80, "p16f687.inc"      , "16f687_g.lkr"      , 0 },
227   { PROC_CLASS_PIC14    , "__16F688"      , { "pic16f688"      , "p16f688"        , "16f688"          }, 0x6688,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x001000, { 0x001000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x0021FF }, 0x3F80, "p16f688.inc"      , "16f688_g.lkr"      , 0 },
228   { PROC_CLASS_PIC14    , "__16F689"      , { "pic16f689"      , "p16f689"        , "16f689"          }, 0x6689,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x001000, { 0x001000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x0021FF }, 0x3F80, "p16f689.inc"      , "16f689_g.lkr"      , 0 },
229   { PROC_CLASS_PIC14    , "__16F690"      , { "pic16f690"      , "p16f690"        , "16f690"          }, 0x6690,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x001000, { 0x001000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x0021FF }, 0x3F80, "p16f690.inc"      , "16f690_g.lkr"      , 0 },
230   { PROC_CLASS_PIC14    , "__16F707"      , { "pic16f707"      , "p16f707"        , "16f707"          }, 0xF707,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, {       -1,       -1 }, 0x3F80, "p16f707.inc"      , "16f707_g.lkr"      , 0 },
231   { PROC_CLASS_PIC14    , "__16F716"      , { "pic16f716"      , "p16f716"        , "16f716"          }, 0xF716,  1,    2, 0x0080, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x00FF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16f716.inc"      , "16f716_g.lkr"      , 0 },
232   { PROC_CLASS_PIC14    , "__16F720"      , { "pic16f720"      , "p16f720"        , "16f720"          }, 0xF720,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, {       -1,       -1 }, 0x3F80, "p16f720.inc"      , "16f720_g.lkr"      , 0 },
233   { PROC_CLASS_PIC14    , "__16F721"      , { "pic16f721"      , "p16f721"        , "16f721"          }, 0xF721,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, {       -1,       -1 }, 0x3F80, "p16f721.inc"      , "16f721_g.lkr"      , 0 },
234   { PROC_CLASS_PIC14    , "__16F722"      , { "pic16f722"      , "p16f722"        , "16f722"          }, 0xF722,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, {       -1,       -1 }, 0x3F80, "p16f722.inc"      , "16f722_g.lkr"      , 0 },
235   { PROC_CLASS_PIC14    , "__16F722A"     , { "pic16f722a"     , "p16f722a"       , "16f722a"         }, 0xA722,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, {       -1,       -1 }, 0x3F80, "p16f722a.inc"     , "16f722a_g.lkr"     , 0 },
236   { PROC_CLASS_PIC14    , "__16F723"      , { "pic16f723"      , "p16f723"        , "16f723"          }, 0xF723,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, {       -1,       -1 }, 0x3F80, "p16f723.inc"      , "16f723_g.lkr"      , 0 },
237   { PROC_CLASS_PIC14    , "__16F723A"     , { "pic16f723a"     , "p16f723a"       , "16f723a"         }, 0xA723,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, {       -1,       -1 }, 0x3F80, "p16f723a.inc"     , "16f723a_g.lkr"     , 0 },
238   { PROC_CLASS_PIC14    , "__16F724"      , { "pic16f724"      , "p16f724"        , "16f724"          }, 0xF724,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, {       -1,       -1 }, 0x3F80, "p16f724.inc"      , "16f724_g.lkr"      , 0 },
239   { PROC_CLASS_PIC14    , "__16F726"      , { "pic16f726"      , "p16f726"        , "16f726"          }, 0xF726,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, {       -1,       -1 }, 0x3F80, "p16f726.inc"      , "16f726_g.lkr"      , 0 },
240   { PROC_CLASS_PIC14    , "__16F727"      , { "pic16f727"      , "p16f727"        , "16f727"          }, 0xF727,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, {       -1,       -1 }, 0x3F80, "p16f727.inc"      , "16f727_g.lkr"      , 0 },
241   { PROC_CLASS_PIC14    , "__16F737"      , { "pic16f737"      , "p16f737"        , "16f737"          }, 0x6737,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, {       -1,       -1 }, 0x3F80, "p16f737.inc"      , "16f737_g.lkr"      , 0 },
242   { PROC_CLASS_PIC14    , "__16F747"      , { "pic16f747"      , "p16f747"        , "16f747"          }, 0x6747,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, {       -1,       -1 }, 0x3F80, "p16f747.inc"      , "16f747_g.lkr"      , 0 },
243   { PROC_CLASS_PIC14    , "__16F753"      , { "pic16f753"      , "p16f753"        , "16f753"          }, 0xF753,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16f753.inc"      , "16f753_g.lkr"      , 0 },
244   { PROC_CLASS_PIC14    , "__16F767"      , { "pic16f767"      , "p16f767"        , "16f767"          }, 0x6767,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, {       -1,       -1 }, 0x3F80, "p16f767.inc"      , "16f767_g.lkr"      , 0 },
245   { PROC_CLASS_PIC14    , "__16F777"      , { "pic16f777"      , "p16f777"        , "16f777"          }, 0x6777,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, {       -1,       -1 }, 0x3F80, "p16f777.inc"      , "16f777_g.lkr"      , 0 },
246   { PROC_CLASS_PIC14    , "__16F785"      , { "pic16f785"      , "p16f785"        , "16f785"          }, 0xF785,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x000800, { 0x000800, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x0021FF }, 0x3F80, "p16f785.inc"      , "16f785_g.lkr"      , 0 },
247   { PROC_CLASS_PIC14    , "__16F818"      , { "pic16f818"      , "p16f818"        , "16f818"          }, 0x818F,  1,    4, 0x0180, { 0x40, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x00217F, 0x000400, { 0x000400, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00217F }, 0x3F80, "p16f818.inc"      , "16f818_g.lkr"      , 0 },
248   { PROC_CLASS_PIC14    , "__16F819"      , { "pic16f819"      , "p16f819"        , "16f819"          }, 0x819F,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x000800, { 0x000800, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x0021FF }, 0x3F80, "p16f819.inc"      , "16f819_g.lkr"      , 0 },
249   { PROC_CLASS_PIC14    , "__16F870"      , { "pic16f870"      , "p16f870"        , "16f870"          }, 0x870F,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x00213F, 0x000800, { 0x000800, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00213F }, 0x3F80, "p16f870.inc"      , "16f870_g.lkr"      , 0 },
250   { PROC_CLASS_PIC14    , "__16F871"      , { "pic16f871"      , "p16f871"        , "16f871"          }, 0x871F,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x00213F, 0x000800, { 0x000800, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00213F }, 0x3F80, "p16f871.inc"      , "16f871_g.lkr"      , 0 },
251   { PROC_CLASS_PIC14    , "__16F872"      , { "pic16f872"      , "p16f872"        , "16f872"          }, 0x872F,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x00213F, 0x000800, { 0x000800, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00213F }, 0x3F80, "p16f872.inc"      , "16f872_g.lkr"      , 0 },
252   { PROC_CLASS_PIC14    , "__16F873"      , { "pic16f873"      , "p16f873"        , "16f873"          }, 0x873F,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x00217F, 0x001000, { 0x001000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00217F }, 0x3F80, "p16f873.inc"      , "16f873_g.lkr"      , 0 },
253   { PROC_CLASS_PIC14    , "__16F873A"     , { "pic16f873a"     , "p16f873a"       , "16f873a"         }, 0x873A,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x00217F, 0x001000, { 0x001000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00217F }, 0x3F80, "p16f873a.inc"     , "16f873a_g.lkr"     , 0 },
254   { PROC_CLASS_PIC14    , "__16F874"      , { "pic16f874"      , "p16f874"        , "16f874"          }, 0x874F,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x00217F, 0x001000, { 0x001000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00217F }, 0x3F80, "p16f874.inc"      , "16f874_g.lkr"      , 0 },
255   { PROC_CLASS_PIC14    , "__16F874A"     , { "pic16f874a"     , "p16f874a"       , "16f874a"         }, 0x874A,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x00217F, 0x001000, { 0x001000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00217F }, 0x3F80, "p16f874a.inc"     , "16f874a_g.lkr"     , 0 },
256   { PROC_CLASS_PIC14    , "__16F876"      , { "pic16f876"      , "p16f876"        , "16f876"          }, 0x876F,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x002000, { 0x002000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x0021FF }, 0x3F80, "p16f876.inc"      , "16f876_g.lkr"      , 0 },
257   { PROC_CLASS_PIC14    , "__16F876A"     , { "pic16f876a"     , "p16f876a"       , "16f876a"         }, 0x876A,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x002000, { 0x002000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x0021FF }, 0x3F80, "p16f876a.inc"     , "16f876a_g.lkr"     , 0 },
258   { PROC_CLASS_PIC14    , "__16F877"      , { "pic16f877"      , "p16f877"        , "16f877"          }, 0x877F,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x002000, { 0x002000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x0021FF }, 0x3F80, "p16f877.inc"      , "16f877_g.lkr"      , 0 },
259   { PROC_CLASS_PIC14    , "__16F877A"     , { "pic16f877a"     , "p16f877a"       , "16f877a"         }, 0x877A,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x002000, { 0x002000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x0021FF }, 0x3F80, "p16f877a.inc"     , "16f877a_g.lkr"     , 0 },
260   { PROC_CLASS_PIC14    , "__16F882"      , { "pic16f882"      , "p16f882"        , "16f882"          }, 0x882F,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x00217F, 0x000800, { 0x000800, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, { 0x002100, 0x00217F }, 0x3F80, "p16f882.inc"      , "16f882_g.lkr"      , 0 },
261   { PROC_CLASS_PIC14    , "__16F883"      , { "pic16f883"      , "p16f883"        , "16f883"          }, 0x883F,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x001000, { 0x001000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, { 0x002100, 0x0021FF }, 0x3F80, "p16f883.inc"      , "16f883_g.lkr"      , 0 },
262   { PROC_CLASS_PIC14    , "__16F884"      , { "pic16f884"      , "p16f884"        , "16f884"          }, 0x884F,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x001000, { 0x001000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, { 0x002100, 0x0021FF }, 0x3F80, "p16f884.inc"      , "16f884_g.lkr"      , 0 },
263   { PROC_CLASS_PIC14    , "__16F886"      , { "pic16f886"      , "p16f886"        , "16f886"          }, 0x886F,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x002000, { 0x002000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, { 0x002100, 0x0021FF }, 0x3F80, "p16f886.inc"      , "16f886_g.lkr"      , 0 },
264   { PROC_CLASS_PIC14    , "__16F887"      , { "pic16f887"      , "p16f887"        , "16f887"          }, 0x887F,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x002000, { 0x002000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, { 0x002100, 0x0021FF }, 0x3F80, "p16f887.inc"      , "16f887_g.lkr"      , 0 },
265   { PROC_CLASS_PIC14    , "__16F913"      , { "pic16f913"      , "p16f913"        , "16f913"          }, 0xF913,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x001000, { 0x001000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x0021FF }, 0x3F80, "p16f913.inc"      , "16f913_g.lkr"      , 0 },
266   { PROC_CLASS_PIC14    , "__16F914"      , { "pic16f914"      , "p16f914"        , "16f914"          }, 0xF914,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x001000, { 0x001000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x0021FF }, 0x3F80, "p16f914.inc"      , "16f914_g.lkr"      , 0 },
267   { PROC_CLASS_PIC14    , "__16F916"      , { "pic16f916"      , "p16f916"        , "16f916"          }, 0xF916,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x002000, { 0x002000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x0021FF }, 0x3F80, "p16f916.inc"      , "16f916_g.lkr"      , 0 },
268   { PROC_CLASS_PIC14    , "__16F917"      , { "pic16f917"      , "p16f917"        , "16f917"          }, 0xF917,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x002000, { 0x002000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x0021FF }, 0x3F80, "p16f917.inc"      , "16f917_g.lkr"      , 0 },
269   { PROC_CLASS_PIC14    , "__16F946"      , { "pic16f946"      , "p16f946"        , "16f946"          }, 0xF946,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x002000, { 0x002000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x0021FF }, 0x3F80, "p16f946.inc"      , "16f946_g.lkr"      , 0 },
270   { PROC_CLASS_PIC14E   , "__16F1454"     , { "pic16f1454"     , "p16f1454"       , "16f1454"         }, 0x1454,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1454.inc"     , "16f1454_g.lkr"     , 0 },
271   { PROC_CLASS_PIC14E   , "__16F1455"     , { "pic16f1455"     , "p16f1455"       , "16f1455"         }, 0x1455,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1455.inc"     , "16f1455_g.lkr"     , 0 },
272   { PROC_CLASS_PIC14E   , "__16F1458"     , { "pic16f1458"     , "p16f1458"       , "16f1458"         }, 0x1458,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1458.inc"     , "16f1458_g.lkr"     , 0 },
273   { PROC_CLASS_PIC14E   , "__16F1459"     , { "pic16f1459"     , "p16f1459"       , "16f1459"         }, 0x1459,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1459.inc"     , "16f1459_g.lkr"     , 0 },
274   { PROC_CLASS_PIC14E   , "__16F1503"     , { "pic16f1503"     , "p16f1503"       , "16f1503"         }, 0x1503,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x206F }, 0x0FFF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1503.inc"     , "16f1503_g.lkr"     , 0 },
275   { PROC_CLASS_PIC14E   , "__16F1507"     , { "pic16f1507"     , "p16f1507"       , "16f1507"         }, 0x1507,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x206F }, 0x0FFF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1507.inc"     , "16f1507_g.lkr"     , 0 },
276   { PROC_CLASS_PIC14E   , "__16F1508"     , { "pic16f1508"     , "p16f1508"       , "16f1508"         }, 0x1508,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1508.inc"     , "16f1508_g.lkr"     , 0 },
277   { PROC_CLASS_PIC14E   , "__16F1509"     , { "pic16f1509"     , "p16f1509"       , "16f1509"         }, 0x1509,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1509.inc"     , "16f1509_g.lkr"     , 0 },
278   { PROC_CLASS_PIC14E   , "__16F1512"     , { "pic16f1512"     , "p16f1512"       , "16f1512"         }, 0x1512,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x206F }, 0x0FFF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1512.inc"     , "16f1512_g.lkr"     , 0 },
279   { PROC_CLASS_PIC14E   , "__16F1513"     , { "pic16f1513"     , "p16f1513"       , "16f1513"         }, 0x1513,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1513.inc"     , "16f1513_g.lkr"     , 0 },
280   { PROC_CLASS_PIC14E   , "__16F1516"     , { "pic16f1516"     , "p16f1516"       , "16f1516"         }, 0x1516,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1516.inc"     , "16f1516_g.lkr"     , 0 },
281   { PROC_CLASS_PIC14E   , "__16F1517"     , { "pic16f1517"     , "p16f1517"       , "16f1517"         }, 0x1517,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1517.inc"     , "16f1517_g.lkr"     , 0 },
282   { PROC_CLASS_PIC14E   , "__16F1518"     , { "pic16f1518"     , "p16f1518"       , "16f1518"         }, 0x1518,  8,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1518.inc"     , "16f1518_g.lkr"     , 0 },
283   { PROC_CLASS_PIC14E   , "__16F1519"     , { "pic16f1519"     , "p16f1519"       , "16f1519"         }, 0x1519,  8,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1519.inc"     , "16f1519_g.lkr"     , 0 },
284   { PROC_CLASS_PIC14E   , "__16F1526"     , { "pic16f1526"     , "p16f1526"       , "16f1526"         }, 0x1526,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x22EF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1526.inc"     , "16f1526_g.lkr"     , 0 },
285   { PROC_CLASS_PIC14E   , "__16F1527"     , { "pic16f1527"     , "p16f1527"       , "16f1527"         }, 0x1527,  8,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x25EF }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1527.inc"     , "16f1527_g.lkr"     , 0 },
286   { PROC_CLASS_PIC14E   , "__16F1574"     , { "pic16f1574"     , "p16f1574"       , "16f1574"         }, 0x1574,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1574.inc"     , "16f1574_g.lkr"     , 0 },
287   { PROC_CLASS_PIC14E   , "__16F1575"     , { "pic16f1575"     , "p16f1575"       , "16f1575"         }, 0x1575,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23DF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1575.inc"     , "16f1575_g.lkr"     , 0 },
288   { PROC_CLASS_PIC14E   , "__16F1578"     , { "pic16f1578"     , "p16f1578"       , "16f1578"         }, 0x1578,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1578.inc"     , "16f1578_g.lkr"     , 0 },
289   { PROC_CLASS_PIC14E   , "__16F1579"     , { "pic16f1579"     , "p16f1579"       , "16f1579"         }, 0x1579,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23DF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1579.inc"     , "16f1579_g.lkr"     , 0 },
290   { PROC_CLASS_PIC14E   , "__16F1613"     , { "pic16f1613"     , "p16f1613"       , "16f1613"         }, 0x1613,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008009 }, {       -1,       -1 }, 0x3F80, "p16f1613.inc"     , "16f1613_g.lkr"     , 0 },
291   { PROC_CLASS_PIC14E   , "__16F1614"     , { "pic16f1614"     , "p16f1614"       , "16f1614"         }, 0x1614,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008009 }, {       -1,       -1 }, 0x3F80, "p16f1614.inc"     , "16f1614_g.lkr"     , 0 },
292   { PROC_CLASS_PIC14E   , "__16F1615"     , { "pic16f1615"     , "p16f1615"       , "16f1615"         }, 0x1615,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23DF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008009 }, {       -1,       -1 }, 0x3F80, "p16f1615.inc"     , "16f1615_g.lkr"     , 0 },
293   { PROC_CLASS_PIC14E   , "__16F1618"     , { "pic16f1618"     , "p16f1618"       , "16f1618"         }, 0x1618,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008009 }, {       -1,       -1 }, 0x3F80, "p16f1618.inc"     , "16f1618_g.lkr"     , 0 },
294   { PROC_CLASS_PIC14E   , "__16F1619"     , { "pic16f1619"     , "p16f1619"       , "16f1619"         }, 0x1619,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23DF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008009 }, {       -1,       -1 }, 0x3F80, "p16f1619.inc"     , "16f1619_g.lkr"     , 0 },
295   { PROC_CLASS_PIC14E   , "__16F1703"     , { "pic16f1703"     , "p16f1703"       , "16f1703"         }, 0x1703,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1703.inc"     , "16f1703_g.lkr"     , 0 },
296   { PROC_CLASS_PIC14E   , "__16F1704"     , { "pic16f1704"     , "p16f1704"       , "16f1704"         }, 0x1704,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1704.inc"     , "16f1704_g.lkr"     , 0 },
297   { PROC_CLASS_PIC14E   , "__16F1705"     , { "pic16f1705"     , "p16f1705"       , "16f1705"         }, 0x1705,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1705.inc"     , "16f1705_g.lkr"     , 0 },
298   { PROC_CLASS_PIC14E   , "__16F1707"     , { "pic16f1707"     , "p16f1707"       , "16f1707"         }, 0x1707,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1707.inc"     , "16f1707_g.lkr"     , 0 },
299   { PROC_CLASS_PIC14E   , "__16F1708"     , { "pic16f1708"     , "p16f1708"       , "16f1708"         }, 0x1708,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1708.inc"     , "16f1708_g.lkr"     , 0 },
300   { PROC_CLASS_PIC14E   , "__16F1709"     , { "pic16f1709"     , "p16f1709"       , "16f1709"         }, 0x1709,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1709.inc"     , "16f1709_g.lkr"     , 0 },
301   { PROC_CLASS_PIC14E   , "__16F1713"     , { "pic16f1713"     , "p16f1713"       , "16f1713"         }, 0x1713,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1713.inc"     , "16f1713_g.lkr"     , 0 },
302   { PROC_CLASS_PIC14E   , "__16F1716"     , { "pic16f1716"     , "p16f1716"       , "16f1716"         }, 0x1716,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1716.inc"     , "16f1716_g.lkr"     , 0 },
303   { PROC_CLASS_PIC14E   , "__16F1717"     , { "pic16f1717"     , "p16f1717"       , "16f1717"         }, 0x1717,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1717.inc"     , "16f1717_g.lkr"     , 0 },
304   { PROC_CLASS_PIC14E   , "__16F1718"     , { "pic16f1718"     , "p16f1718"       , "16f1718"         }, 0x1718,  8,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x27EF }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1718.inc"     , "16f1718_g.lkr"     , 0 },
305   { PROC_CLASS_PIC14E   , "__16F1719"     , { "pic16f1719"     , "p16f1719"       , "16f1719"         }, 0x1719,  8,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x27EF }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1719.inc"     , "16f1719_g.lkr"     , 0 },
306   { PROC_CLASS_PIC14E   , "__16F1764"     , { "pic16f1764"     , "p16f1764"       , "16f1764"         }, 0x1764,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1764.inc"     , "16f1764_g.lkr"     , 0 },
307   { PROC_CLASS_PIC14E   , "__16F1765"     , { "pic16f1765"     , "p16f1765"       , "16f1765"         }, 0x1765,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23AF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1765.inc"     , "16f1765_g.lkr"     , 0 },
308   { PROC_CLASS_PIC14E   , "__16F1768"     , { "pic16f1768"     , "p16f1768"       , "16f1768"         }, 0x1768,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1768.inc"     , "16f1768_g.lkr"     , 0 },
309   { PROC_CLASS_PIC14E   , "__16F1769"     , { "pic16f1769"     , "p16f1769"       , "16f1769"         }, 0x1769,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1769.inc"     , "16f1769_g.lkr"     , 0 },
310   { PROC_CLASS_PIC14E   , "__16F1773"     , { "pic16f1773"     , "p16f1773"       , "16f1773"         }, 0x1773,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1773.inc"     , "16f1773_g.lkr"     , 0 },
311   { PROC_CLASS_PIC14E   , "__16F1776"     , { "pic16f1776"     , "p16f1776"       , "16f1776"         }, 0x1776,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1776.inc"     , "16f1776_g.lkr"     , 0 },
312   { PROC_CLASS_PIC14E   , "__16F1777"     , { "pic16f1777"     , "p16f1777"       , "16f1777"         }, 0x1777,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1777.inc"     , "16f1777_g.lkr"     , 0 },
313   { PROC_CLASS_PIC14E   , "__16F1778"     , { "pic16f1778"     , "p16f1778"       , "16f1778"         }, 0x1778,  8,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x27CF }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1778.inc"     , "16f1778_g.lkr"     , 0 },
314   { PROC_CLASS_PIC14E   , "__16F1779"     , { "pic16f1779"     , "p16f1779"       , "16f1779"         }, 0x1779,  8,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x27EF }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16f1779.inc"     , "16f1779_g.lkr"     , 0 },
315   { PROC_CLASS_PIC14E   , "__16F1782"     , { "pic16f1782"     , "p16f1782"       , "16f1782"         }, 0x1782,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x00F0FF, 0x000800, { 0x000800, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f1782.inc"     , "16f1782_g.lkr"     , 0 },
316   { PROC_CLASS_PIC14E   , "__16F1783"     , { "pic16f1783"     , "p16f1783"       , "16f1783"         }, 0x1783,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x00F0FF, 0x001000, { 0x001000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f1783.inc"     , "16f1783_g.lkr"     , 0 },
317   { PROC_CLASS_PIC14E   , "__16F1784"     , { "pic16f1784"     , "p16f1784"       , "16f1784"         }, 0x1784,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x00F0FF, 0x001000, { 0x001000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f1784.inc"     , "16f1784_g.lkr"     , 0 },
318   { PROC_CLASS_PIC14E   , "__16F1786"     , { "pic16f1786"     , "p16f1786"       , "16f1786"         }, 0x1786,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x00F0FF, 0x002000, { 0x002000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f1786.inc"     , "16f1786_g.lkr"     , 0 },
319   { PROC_CLASS_PIC14E   , "__16F1787"     , { "pic16f1787"     , "p16f1787"       , "16f1787"         }, 0x1787,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x00F0FF, 0x002000, { 0x002000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f1787.inc"     , "16f1787_g.lkr"     , 0 },
320   { PROC_CLASS_PIC14E   , "__16F1788"     , { "pic16f1788"     , "p16f1788"       , "16f1788"         }, 0x1788,  8,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x27EF }, 0x0FFF, 0x00F0FF, 0x004000, { 0x004000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f1788.inc"     , "16f1788_g.lkr"     , 0 },
321   { PROC_CLASS_PIC14E   , "__16F1789"     , { "pic16f1789"     , "p16f1789"       , "16f1789"         }, 0x1789,  8,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x27EF }, 0x0FFF, 0x00F0FF, 0x004000, { 0x004000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f1789.inc"     , "16f1789_g.lkr"     , 0 },
322   { PROC_CLASS_PIC14E   , "__16F1823"     , { "pic16f1823"     , "p16f1823"       , "16f1823"         }, 0x1823,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x206F }, 0x0FFF, 0x00F0FF, 0x000800, { 0x000800, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f1823.inc"     , "16f1823_g.lkr"     , 0 },
323   { PROC_CLASS_PIC14E   , "__16F1824"     , { "pic16f1824"     , "p16f1824"       , "16f1824"         }, 0x1824,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x00F0FF, 0x001000, { 0x001000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f1824.inc"     , "16f1824_g.lkr"     , 0 },
324   { PROC_CLASS_PIC14E   , "__16F1825"     , { "pic16f1825"     , "p16f1825"       , "16f1825"         }, 0x1825,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x00F0FF, 0x002000, { 0x002000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f1825.inc"     , "16f1825_g.lkr"     , 0 },
325   { PROC_CLASS_PIC14E   , "__16F1826"     , { "pic16f1826"     , "p16f1826"       , "16f1826"         }, 0x1826,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x00F0FF, 0x000800, { 0x000800, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f1826.inc"     , "16f1826_g.lkr"     , 0 },
326   { PROC_CLASS_PIC14E   , "__16F1827"     , { "pic16f1827"     , "p16f1827"       , "16f1827"         }, 0x1827,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x216F }, 0x0FFF, 0x00F0FF, 0x001000, { 0x001000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f1827.inc"     , "16f1827_g.lkr"     , 0 },
327   { PROC_CLASS_PIC14E   , "__16F1828"     , { "pic16f1828"     , "p16f1828"       , "16f1828"         }, 0x1828,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x00F0FF, 0x001000, { 0x001000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f1828.inc"     , "16f1828_g.lkr"     , 0 },
328   { PROC_CLASS_PIC14E   , "__16F1829"     , { "pic16f1829"     , "p16f1829"       , "16f1829"         }, 0x1829,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x00F0FF, 0x002000, { 0x002000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f1829.inc"     , "16f1829_g.lkr"     , 0 },
329   { PROC_CLASS_PIC14E   , "__16F1829LIN"  , { "pic16f1829lin"  , "p16f1829lin"    , "16f1829lin"      }, 0xB829,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x00F0FF, 0x002000, { 0x002000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f1829lin.inc"  , "16f1829lin_g.lkr"  , 0 },
330   { PROC_CLASS_PIC14E   , "__16F1847"     , { "pic16f1847"     , "p16f1847"       , "16f1847"         }, 0x1847,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x00F0FF, 0x002000, { 0x002000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f1847.inc"     , "16f1847_g.lkr"     , 0 },
331   { PROC_CLASS_PIC14E   , "__16F1933"     , { "pic16f1933"     , "p16f1933"       , "16f1933"         }, 0x1933,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x00F0FF, 0x001000, { 0x001000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f1933.inc"     , "16f1933_g.lkr"     , 0 },
332   { PROC_CLASS_PIC14E   , "__16F1934"     , { "pic16f1934"     , "p16f1934"       , "16f1934"         }, 0x1934,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x00F0FF, 0x001000, { 0x001000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f1934.inc"     , "16f1934_g.lkr"     , 0 },
333   { PROC_CLASS_PIC14E   , "__16F1936"     , { "pic16f1936"     , "p16f1936"       , "16f1936"         }, 0x1936,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x00F0FF, 0x002000, { 0x002000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f1936.inc"     , "16f1936_g.lkr"     , 0 },
334   { PROC_CLASS_PIC14E   , "__16F1937"     , { "pic16f1937"     , "p16f1937"       , "16f1937"         }, 0x1937,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x00F0FF, 0x002000, { 0x002000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f1937.inc"     , "16f1937_g.lkr"     , 0 },
335   { PROC_CLASS_PIC14E   , "__16F1938"     , { "pic16f1938"     , "p16f1938"       , "16f1938"         }, 0x1938,  8,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x00F0FF, 0x004000, { 0x004000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f1938.inc"     , "16f1938_g.lkr"     , 0 },
336   { PROC_CLASS_PIC14E   , "__16F1939"     , { "pic16f1939"     , "p16f1939"       , "16f1939"         }, 0x1939,  8,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x00F0FF, 0x004000, { 0x004000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f1939.inc"     , "16f1939_g.lkr"     , 0 },
337   { PROC_CLASS_PIC14E   , "__16F1946"     , { "pic16f1946"     , "p16f1946"       , "16f1946"         }, 0x1946,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x00F0FF, 0x002000, { 0x002000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f1946.inc"     , "16f1946_g.lkr"     , 0 },
338   { PROC_CLASS_PIC14E   , "__16F1947"     , { "pic16f1947"     , "p16f1947"       , "16f1947"         }, 0x1947,  8,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x00F0FF, 0x004000, { 0x004000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f1947.inc"     , "16f1947_g.lkr"     , 0 },
339   { PROC_CLASS_PIC14EX  , "__16F15354"    , { "pic16f15354"    , "p16f15354"      , "16f15354"        }, 0xA280,  2,   64, 0x1F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x1FFF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x00800B }, {       -1,       -1 }, 0x3F80, "p16f15354.inc"    , "16f15354_g.lkr"    , 0 },
340   { PROC_CLASS_PIC14EX  , "__16F15355"    , { "pic16f15355"    , "p16f15355"      , "16f15355"        }, 0xA27F,  4,   64, 0x1F80, { 0x70, 0x7F },    -1, { 0x2000, 0x25EF }, 0x1FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x00800B }, {       -1,       -1 }, 0x3F80, "p16f15355.inc"    , "16f15355_g.lkr"    , 0 },
341   { PROC_CLASS_PIC14E   , "__16F18313"    , { "pic16f18313"    , "p16f18313"      , "16f18313"        }, 0x1832,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x00F0FF, 0x000800, { 0x000800, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x00800A }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f18313.inc"    , "16f18313_g.lkr"    , 0 },
342   { PROC_CLASS_PIC14E   , "__16F18323"    , { "pic16f18323"    , "p16f18323"      , "16f18323"        }, 0x1833,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x00F0FF, 0x000800, { 0x000800, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x00800A }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f18323.inc"    , "16f18323_g.lkr"    , 0 },
343   { PROC_CLASS_PIC14E   , "__16F18324"    , { "pic16f18324"    , "p16f18324"      , "16f18324"        }, 0x8324,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x00F0FF, 0x001000, { 0x001000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x00800A }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f18324.inc"    , "16f18324_g.lkr"    , 0 },
344   { PROC_CLASS_PIC14E   , "__16F18325"    , { "pic16f18325"    , "p16f18325"      , "16f18325"        }, 0x1835,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x00F0FF, 0x002000, { 0x002000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x00800A }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f18325.inc"    , "16f18325_g.lkr"    , 0 },
345   { PROC_CLASS_PIC14E   , "__16F18326"    , { "pic16f18326"    , "p16f18326"      , "16f18326"        }, 0x8326,  8,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x00F0FF, 0x004000, { 0x004000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x00800A }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f18326.inc"    , "16f18326_g.lkr"    , 0 },
346   { PROC_CLASS_PIC14E   , "__16F18344"    , { "pic16f18344"    , "p16f18344"      , "16f18344"        }, 0x8344,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x00F0FF, 0x001000, { 0x001000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x00800A }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f18344.inc"    , "16f18344_g.lkr"    , 0 },
347   { PROC_CLASS_PIC14E   , "__16F18345"    , { "pic16f18345"    , "p16f18345"      , "16f18345"        }, 0x1834,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x00F0FF, 0x002000, { 0x002000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x00800A }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f18345.inc"    , "16f18345_g.lkr"    , 0 },
348   { PROC_CLASS_PIC14E   , "__16F18346"    , { "pic16f18346"    , "p16f18346"      , "16f18346"        }, 0x8346,  8,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x00F0FF, 0x004000, { 0x004000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x00800A }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f18346.inc"    , "16f18346_g.lkr"    , 0 },
349   { PROC_CLASS_PIC14E   , "__16F18854"    , { "pic16f18854"    , "p16f18854"      , "16f18854"        }, 0x8854,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x00F0FF, 0x001000, { 0x001000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x00800B }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f18854.inc"    , "16f18854_g.lkr"    , 0 },
350   { PROC_CLASS_PIC14E   , "__16F18855"    , { "pic16f18855"    , "p16f18855"      , "16f18855"        }, 0x8855,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x00F0FF, 0x002000, { 0x002000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x00800B }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f18855.inc"    , "16f18855_g.lkr"    , 0 },
351   { PROC_CLASS_PIC14E   , "__16F18856"    , { "pic16f18856"    , "p16f18856"      , "16f18856"        }, 0x8856,  8,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x27EF }, 0x0FFF, 0x00F0FF, 0x004000, { 0x004000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x00800B }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f18856.inc"    , "16f18856_g.lkr"    , 0 },
352   { PROC_CLASS_PIC14EX  , "__16F18857"    , { "pic16f18857"    , "p16f18857"      , "16f18857"        }, 0x8857, 16,   64, 0x1F80, { 0x70, 0x7F },    -1, { 0x2000, 0x30BF }, 0x1FFF, 0x00F0FF, 0x008000, { 0x008000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x00800B }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f18857.inc"    , "16f18857_g.lkr"    , 0 },
353   { PROC_CLASS_PIC14E   , "__16F18875"    , { "pic16f18875"    , "p16f18875"      , "16f18875"        }, 0x8875,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x00F0FF, 0x002000, { 0x002000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x00800B }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f18875.inc"    , "16f18875_g.lkr"    , 0 },
354   { PROC_CLASS_PIC14E   , "__16F18876"    , { "pic16f18876"    , "p16f18876"      , "16f18876"        }, 0x8876,  8,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x27EF }, 0x0FFF, 0x00F0FF, 0x004000, { 0x004000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x00800B }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f18876.inc"    , "16f18876_g.lkr"    , 0 },
355   { PROC_CLASS_PIC14EX  , "__16F18877"    , { "pic16f18877"    , "p16f18877"      , "16f18877"        }, 0x8877, 16,   64, 0x1F80, { 0x70, 0x7F },    -1, { 0x2000, 0x31EF }, 0x1FFF, 0x00F0FF, 0x008000, { 0x008000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x00800B }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f18877.inc"    , "16f18877_g.lkr"    , 0 },
356   { PROC_CLASS_PIC14EX  , "__16F19197"    , { "pic16f19197"    , "p16f19197"      , "16f19197"        }, 0xA27E, 16,   64, 0x1F80, { 0x70, 0x7F },    -1, { 0x2000, 0x31EF }, 0x1FFF, 0x00F0FF, 0x008000, { 0x008000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x00800B }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16f19197.inc"    , "16f19197_g.lkr"    , 0 },
357   { PROC_CLASS_PIC12    , "__16HV540"     , { "pic16hv540"     , "p16hv540"       , "16hv540"         }, 0x6540,  1,    1, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 }, 0x001F, 0x0001FF, 0x000200, {       -1,       -1 }, { 0x000200, 0x000203 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "p16hv540.inc"     , "16hv540_g.lkr"     , 0 },
358   { PROC_CLASS_PIC14    , "__16HV610"     , { "pic16hv610"     , "p16hv610"       , "16hv610"         }, 0x6610,  1,    2, 0x0080, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x00FF, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16hv610.inc"     , "16hv610_g.lkr"     , 0 },
359   { PROC_CLASS_PIC14    , "__16HV616"     , { "pic16hv616"     , "p16hv616"       , "16hv616"         }, 0x6616,  1,    2, 0x0080, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x00FF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16hv616.inc"     , "16hv616_g.lkr"     , 0 },
360   { PROC_CLASS_PIC14    , "__16HV753"     , { "pic16hv753"     , "p16hv753"       , "16hv753"         }, 0x6753,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16hv753.inc"     , "16hv753_g.lkr"     , 0 },
361   { PROC_CLASS_PIC14    , "__16HV785"     , { "pic16hv785"     , "p16hv785"       , "16hv785"         }, 0x6785,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x000800, { 0x000800, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x0021FF }, 0x3F80, "p16hv785.inc"     , "16hv785_g.lkr"     , 0 },
362   { PROC_CLASS_PIC14    , "__16LF74"      , { "pic16lf74"      , "p16lf74"        , "16lf74"          }, 0xA674,  2,    4, 0x0180, {   -1,   -1 },    -1, {     -1,     -1 }, 0x01FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16lf74.inc"      , "16lf74_g.lkr"      , 0 },
363   { PROC_CLASS_PIC14    , "__16LF76"      , { "pic16lf76"      , "p16lf76"        , "16lf76"          }, 0xA676,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16lf76.inc"      , "16lf76_g.lkr"      , 0 },
364   { PROC_CLASS_PIC14    , "__16LF77"      , { "pic16lf77"      , "p16lf77"        , "16lf77"          }, 0xA677,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p16lf77.inc"      , "16lf77_g.lkr"      , 0 },
365   { PROC_CLASS_PIC14    , "__16LF83"      , { "pic16lf83"      , "p16lf83"        , "16lf83"          }, 0xA683,  1,    2, 0x0080, { 0x0C, 0x2F },    -1, {     -1,     -1 }, 0x00AF, 0x00213F, 0x000200, { 0x000200, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00213F }, 0x3F80, "p16lf83.inc"      , "16lf83_g.lkr"      , 0 },
366   { PROC_CLASS_PIC14    , "__16LF84"      , { "pic16lf84"      , "p16lf84"        , "16lf84"          }, 0xA684,  1,    2, 0x0080, { 0x0C, 0x4F },    -1, {     -1,     -1 }, 0x00CF, 0x00213F, 0x000400, { 0x000400, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00213F }, 0x3F80, "p16lf84.inc"      , "16lf84_g.lkr"      , 0 },
367   { PROC_CLASS_PIC14    , "__16LF84A"     , { "pic16lf84a"     , "p16lf84a"       , "16lf84a"         }, 0xA685,  1,    2, 0x0080, { 0x0C, 0x4F },    -1, {     -1,     -1 }, 0x00CF, 0x00213F, 0x000400, { 0x000400, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00213F }, 0x3F80, "p16lf84a.inc"     , "16lf84a_g.lkr"     , 0 },
368   { PROC_CLASS_PIC14    , "__16LF87"      , { "pic16lf87"      , "p16lf87"        , "16lf87"          }, 0xA807,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x001000, { 0x001000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, { 0x002100, 0x0021FF }, 0x3F80, "p16lf87.inc"      , "16lf87_g.lkr"      , 0 },
369   { PROC_CLASS_PIC14    , "__16LF88"      , { "pic16lf88"      , "p16lf88"        , "16lf88"          }, 0xA808,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x001000, { 0x001000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, { 0x002100, 0x0021FF }, 0x3F80, "p16lf88.inc"      , "16lf88_g.lkr"      , 0 },
370   { PROC_CLASS_PIC14    , "__16LF627"     , { "pic16lf627"     , "p16lf627"       , "16lf627"         }, 0xA627,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x00217F, 0x000400, { 0x000400, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00217F }, 0x3F80, "p16lf627.inc"     , "16lf627_g.lkr"     , 0 },
371   { PROC_CLASS_PIC14    , "__16LF627A"    , { "pic16lf627a"    , "p16lf627a"      , "16lf627a"        }, 0xC627,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x00217F, 0x000400, { 0x000400, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00217F }, 0x3F80, "p16lf627a.inc"    , "16lf627a_g.lkr"    , 0 },
372   { PROC_CLASS_PIC14    , "__16LF628"     , { "pic16lf628"     , "p16lf628"       , "16lf628"         }, 0xB628,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x00217F, 0x000800, { 0x000800, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00217F }, 0x3F80, "p16lf628.inc"     , "16lf628_g.lkr"     , 0 },
373   { PROC_CLASS_PIC14    , "__16LF628A"    , { "pic16lf628a"    , "p16lf628a"      , "16lf628a"        }, 0xC628,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x00217F, 0x000800, { 0x000800, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00217F }, 0x3F80, "p16lf628a.inc"    , "16lf628a_g.lkr"    , 0 },
374   { PROC_CLASS_PIC14    , "__16LF648A"    , { "pic16lf648a"    , "p16lf648a"      , "16lf648a"        }, 0xC648,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x001000, { 0x001000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x0021FF }, 0x3F80, "p16lf648a.inc"    , "16lf648a_g.lkr"    , 0 },
375   { PROC_CLASS_PIC14    , "__16LF707"     , { "pic16lf707"     , "p16lf707"       , "16lf707"         }, 0xD707,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, {       -1,       -1 }, 0x3F80, "p16lf707.inc"     , "16lf707_g.lkr"     , 0 },
376   { PROC_CLASS_PIC14    , "__16LF720"     , { "pic16lf720"     , "p16lf720"       , "16lf720"         }, 0xD720,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, {       -1,       -1 }, 0x3F80, "p16lf720.inc"     , "16lf720_g.lkr"     , 0 },
377   { PROC_CLASS_PIC14    , "__16LF721"     , { "pic16lf721"     , "p16lf721"       , "16lf721"         }, 0xD721,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, {       -1,       -1 }, 0x3F80, "p16lf721.inc"     , "16lf721_g.lkr"     , 0 },
378   { PROC_CLASS_PIC14    , "__16LF722"     , { "pic16lf722"     , "p16lf722"       , "16lf722"         }, 0xD722,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, {       -1,       -1 }, 0x3F80, "p16lf722.inc"     , "16lf722_g.lkr"     , 0 },
379   { PROC_CLASS_PIC14    , "__16LF722A"    , { "pic16lf722a"    , "p16lf722a"      , "16lf722a"        }, 0xB722,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, {       -1,       -1 }, 0x3F80, "p16lf722a.inc"    , "16lf722a_g.lkr"    , 0 },
380   { PROC_CLASS_PIC14    , "__16LF723"     , { "pic16lf723"     , "p16lf723"       , "16lf723"         }, 0xD723,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, {       -1,       -1 }, 0x3F80, "p16lf723.inc"     , "16lf723_g.lkr"     , 0 },
381   { PROC_CLASS_PIC14    , "__16LF723A"    , { "pic16lf723a"    , "p16lf723a"      , "16lf723a"        }, 0xB723,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, {       -1,       -1 }, 0x3F80, "p16lf723a.inc"    , "16lf723a_g.lkr"    , 0 },
382   { PROC_CLASS_PIC14    , "__16LF724"     , { "pic16lf724"     , "p16lf724"       , "16lf724"         }, 0xD724,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, {       -1,       -1 }, 0x3F80, "p16lf724.inc"     , "16lf724_g.lkr"     , 0 },
383   { PROC_CLASS_PIC14    , "__16LF726"     , { "pic16lf726"     , "p16lf726"       , "16lf726"         }, 0xD726,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, {       -1,       -1 }, 0x3F80, "p16lf726.inc"     , "16lf726_g.lkr"     , 0 },
384   { PROC_CLASS_PIC14    , "__16LF727"     , { "pic16lf727"     , "p16lf727"       , "16lf727"         }, 0xD727,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, {       -1,       -1 }, 0x3F80, "p16lf727.inc"     , "16lf727_g.lkr"     , 0 },
385   { PROC_CLASS_PIC14    , "__16LF747"     , { "pic16lf747"     , "p16lf747"       , "16lf747"         }, 0xA747,  2,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, {       -1,       -1 }, 0x3F80, "p16lf747.inc"     , "16lf747_g.lkr"     , 0 },
386   { PROC_CLASS_PIC14    , "__16LF767"     , { "pic16lf767"     , "p16lf767"       , "16lf767"         }, 0xA767,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, {       -1,       -1 }, 0x3F80, "p16lf767.inc"     , "16lf767_g.lkr"     , 0 },
387   { PROC_CLASS_PIC14    , "__16LF777"     , { "pic16lf777"     , "p16lf777"       , "16lf777"         }, 0xA777,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002008 }, {       -1,       -1 }, 0x3F80, "p16lf777.inc"     , "16lf777_g.lkr"     , 0 },
388   { PROC_CLASS_PIC14    , "__16LF818"     , { "pic16lf818"     , "p16lf818"       , "16lf818"         }, 0xA818,  1,    4, 0x0180, { 0x40, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x00217F, 0x000400, { 0x000400, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00217F }, 0x3F80, "p16lf818.inc"     , "16lf818_g.lkr"     , 0 },
389   { PROC_CLASS_PIC14    , "__16LF819"     , { "pic16lf819"     , "p16lf819"       , "16lf819"         }, 0xA819,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x000800, { 0x000800, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x0021FF }, 0x3F80, "p16lf819.inc"     , "16lf819_g.lkr"     , 0 },
390   { PROC_CLASS_PIC14    , "__16LF870"     , { "pic16lf870"     , "p16lf870"       , "16lf870"         }, 0xA870,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x00213F, 0x000800, { 0x000800, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00213F }, 0x3F80, "p16lf870.inc"     , "16lf870_g.lkr"     , 0 },
391   { PROC_CLASS_PIC14    , "__16LF871"     , { "pic16lf871"     , "p16lf871"       , "16lf871"         }, 0xA871,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x00213F, 0x000800, { 0x000800, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00213F }, 0x3F80, "p16lf871.inc"     , "16lf871_g.lkr"     , 0 },
392   { PROC_CLASS_PIC14    , "__16LF872"     , { "pic16lf872"     , "p16lf872"       , "16lf872"         }, 0xA800,  1,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x00213F, 0x000800, { 0x000800, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00213F }, 0x3F80, "p16lf872.inc"     , "16lf872_g.lkr"     , 0 },
393   { PROC_CLASS_PIC14    , "__16LF873"     , { "pic16lf873"     , "p16lf873"       , "16lf873"         }, 0xA873,  2,    4, 0x0180, {   -1,   -1 },    -1, {     -1,     -1 }, 0x01FF, 0x00217F, 0x001000, { 0x001000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00217F }, 0x3F80, "p16lf873.inc"     , "16lf873_g.lkr"     , 0 },
394   { PROC_CLASS_PIC14    , "__16LF873A"    , { "pic16lf873a"    , "p16lf873a"      , "16lf873a"        }, 0xA803,  2,    4, 0x0180, {   -1,   -1 },    -1, {     -1,     -1 }, 0x01FF, 0x00217F, 0x001000, { 0x001000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00217F }, 0x3F80, "p16lf873a.inc"    , "16lf873a_g.lkr"    , 0 },
395   { PROC_CLASS_PIC14    , "__16LF874"     , { "pic16lf874"     , "p16lf874"       , "16lf874"         }, 0xA874,  2,    4, 0x0180, {   -1,   -1 },    -1, {     -1,     -1 }, 0x01FF, 0x00217F, 0x001000, { 0x001000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00217F }, 0x3F80, "p16lf874.inc"     , "16lf874_g.lkr"     , 0 },
396   { PROC_CLASS_PIC14    , "__16LF874A"    , { "pic16lf874a"    , "p16lf874a"      , "16lf874a"        }, 0xA804,  2,    4, 0x0180, {   -1,   -1 },    -1, {     -1,     -1 }, 0x01FF, 0x00217F, 0x001000, { 0x001000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00217F }, 0x3F80, "p16lf874a.inc"    , "16lf874a_g.lkr"    , 0 },
397   { PROC_CLASS_PIC14    , "__16LF876"     , { "pic16lf876"     , "p16lf876"       , "16lf876"         }, 0xA801,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x002000, { 0x002000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x0021FF }, 0x3F80, "p16lf876.inc"     , "16lf876_g.lkr"     , 0 },
398   { PROC_CLASS_PIC14    , "__16LF876A"    , { "pic16lf876a"    , "p16lf876a"      , "16lf876a"        }, 0xA805,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x002000, { 0x002000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x0021FF }, 0x3F80, "p16lf876a.inc"    , "16lf876a_g.lkr"    , 0 },
399   { PROC_CLASS_PIC14    , "__16LF877"     , { "pic16lf877"     , "p16lf877"       , "16lf877"         }, 0xA802,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x002000, { 0x002000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x0021FF }, 0x3F80, "p16lf877.inc"     , "16lf877_g.lkr"     , 0 },
400   { PROC_CLASS_PIC14    , "__16LF877A"    , { "pic16lf877a"    , "p16lf877a"      , "16lf877a"        }, 0xA806,  4,    4, 0x0180, { 0x70, 0x7F },    -1, {     -1,     -1 }, 0x01FF, 0x0021FF, 0x002000, { 0x002000, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x0021FF }, 0x3F80, "p16lf877a.inc"    , "16lf877a_g.lkr"    , 0 },
401   { PROC_CLASS_PIC14E   , "__16LF1454"    , { "pic16lf1454"    , "p16lf1454"      , "16lf1454"        }, 0xA454,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1454.inc"    , "16lf1454_g.lkr"    , 0 },
402   { PROC_CLASS_PIC14E   , "__16LF1455"    , { "pic16lf1455"    , "p16lf1455"      , "16lf1455"        }, 0xA455,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1455.inc"    , "16lf1455_g.lkr"    , 0 },
403   { PROC_CLASS_PIC14E   , "__16LF1458"    , { "pic16lf1458"    , "p16lf1458"      , "16lf1458"        }, 0xA458,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1458.inc"    , "16lf1458_g.lkr"    , 0 },
404   { PROC_CLASS_PIC14E   , "__16LF1459"    , { "pic16lf1459"    , "p16lf1459"      , "16lf1459"        }, 0xA459,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1459.inc"    , "16lf1459_g.lkr"    , 0 },
405   { PROC_CLASS_PIC14E   , "__16LF1503"    , { "pic16lf1503"    , "p16lf1503"      , "16lf1503"        }, 0xA503,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x206F }, 0x0FFF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1503.inc"    , "16lf1503_g.lkr"    , 0 },
406   { PROC_CLASS_PIC14E   , "__16LF1507"    , { "pic16lf1507"    , "p16lf1507"      , "16lf1507"        }, 0xA507,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x206F }, 0x0FFF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1507.inc"    , "16lf1507_g.lkr"    , 0 },
407   { PROC_CLASS_PIC14E   , "__16LF1508"    , { "pic16lf1508"    , "p16lf1508"      , "16lf1508"        }, 0xA508,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1508.inc"    , "16lf1508_g.lkr"    , 0 },
408   { PROC_CLASS_PIC14E   , "__16LF1509"    , { "pic16lf1509"    , "p16lf1509"      , "16lf1509"        }, 0xA509,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1509.inc"    , "16lf1509_g.lkr"    , 0 },
409   { PROC_CLASS_PIC14E   , "__16LF1512"    , { "pic16lf1512"    , "p16lf1512"      , "16lf1512"        }, 0xA512,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x206F }, 0x0FFF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1512.inc"    , "16lf1512_g.lkr"    , 0 },
410   { PROC_CLASS_PIC14E   , "__16LF1513"    , { "pic16lf1513"    , "p16lf1513"      , "16lf1513"        }, 0xA513,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1513.inc"    , "16lf1513_g.lkr"    , 0 },
411   { PROC_CLASS_PIC14E   , "__16LF1516"    , { "pic16lf1516"    , "p16lf1516"      , "16lf1516"        }, 0xA516,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1516.inc"    , "16lf1516_g.lkr"    , 0 },
412   { PROC_CLASS_PIC14E   , "__16LF1517"    , { "pic16lf1517"    , "p16lf1517"      , "16lf1517"        }, 0xA517,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1517.inc"    , "16lf1517_g.lkr"    , 0 },
413   { PROC_CLASS_PIC14E   , "__16LF1518"    , { "pic16lf1518"    , "p16lf1518"      , "16lf1518"        }, 0xA518,  8,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1518.inc"    , "16lf1518_g.lkr"    , 0 },
414   { PROC_CLASS_PIC14E   , "__16LF1519"    , { "pic16lf1519"    , "p16lf1519"      , "16lf1519"        }, 0xA519,  8,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1519.inc"    , "16lf1519_g.lkr"    , 0 },
415   { PROC_CLASS_PIC14E   , "__16LF1526"    , { "pic16lf1526"    , "p16lf1526"      , "16lf1526"        }, 0xA526,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x22EF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1526.inc"    , "16lf1526_g.lkr"    , 0 },
416   { PROC_CLASS_PIC14E   , "__16LF1527"    , { "pic16lf1527"    , "p16lf1527"      , "16lf1527"        }, 0xA527,  8,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x25EF }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1527.inc"    , "16lf1527_g.lkr"    , 0 },
417   { PROC_CLASS_PIC14E   , "__16LF1554"    , { "pic16lf1554"    , "p16lf1554"      , "16lf1554"        }, 0xA554,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1554.inc"    , "16lf1554_g.lkr"    , 0 },
418   { PROC_CLASS_PIC14E   , "__16LF1559"    , { "pic16lf1559"    , "p16lf1559"      , "16lf1559"        }, 0xA559,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1559.inc"    , "16lf1559_g.lkr"    , 0 },
419   { PROC_CLASS_PIC14E   , "__16LF1566"    , { "pic16lf1566"    , "p16lf1566"      , "16lf1566"        }, 0xA566,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1566.inc"    , "16lf1566_g.lkr"    , 0 },
420   { PROC_CLASS_PIC14E   , "__16LF1567"    , { "pic16lf1567"    , "p16lf1567"      , "16lf1567"        }, 0xA567,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1567.inc"    , "16lf1567_g.lkr"    , 0 },
421   { PROC_CLASS_PIC14E   , "__16LF1574"    , { "pic16lf1574"    , "p16lf1574"      , "16lf1574"        }, 0xA574,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1574.inc"    , "16lf1574_g.lkr"    , 0 },
422   { PROC_CLASS_PIC14E   , "__16LF1575"    , { "pic16lf1575"    , "p16lf1575"      , "16lf1575"        }, 0xA575,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23DF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1575.inc"    , "16lf1575_g.lkr"    , 0 },
423   { PROC_CLASS_PIC14E   , "__16LF1578"    , { "pic16lf1578"    , "p16lf1578"      , "16lf1578"        }, 0xA578,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1578.inc"    , "16lf1578_g.lkr"    , 0 },
424   { PROC_CLASS_PIC14E   , "__16LF1579"    , { "pic16lf1579"    , "p16lf1579"      , "16lf1579"        }, 0xA579,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23DF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1579.inc"    , "16lf1579_g.lkr"    , 0 },
425   { PROC_CLASS_PIC14E   , "__16LF1613"    , { "pic16lf1613"    , "p16lf1613"      , "16lf1613"        }, 0xA613,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008009 }, {       -1,       -1 }, 0x3F80, "p16lf1613.inc"    , "16lf1613_g.lkr"    , 0 },
426   { PROC_CLASS_PIC14E   , "__16LF1614"    , { "pic16lf1614"    , "p16lf1614"      , "16lf1614"        }, 0xA614,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008009 }, {       -1,       -1 }, 0x3F80, "p16lf1614.inc"    , "16lf1614_g.lkr"    , 0 },
427   { PROC_CLASS_PIC14E   , "__16LF1615"    , { "pic16lf1615"    , "p16lf1615"      , "16lf1615"        }, 0xA615,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23DF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008009 }, {       -1,       -1 }, 0x3F80, "p16lf1615.inc"    , "16lf1615_g.lkr"    , 0 },
428   { PROC_CLASS_PIC14E   , "__16LF1618"    , { "pic16lf1618"    , "p16lf1618"      , "16lf1618"        }, 0xA618,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008009 }, {       -1,       -1 }, 0x3F80, "p16lf1618.inc"    , "16lf1618_g.lkr"    , 0 },
429   { PROC_CLASS_PIC14E   , "__16LF1619"    , { "pic16lf1619"    , "p16lf1619"      , "16lf1619"        }, 0xA619,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23DF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008009 }, {       -1,       -1 }, 0x3F80, "p16lf1619.inc"    , "16lf1619_g.lkr"    , 0 },
430   { PROC_CLASS_PIC14E   , "__16LF1703"    , { "pic16lf1703"    , "p16lf1703"      , "16lf1703"        }, 0xA703,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1703.inc"    , "16lf1703_g.lkr"    , 0 },
431   { PROC_CLASS_PIC14E   , "__16LF1704"    , { "pic16lf1704"    , "p16lf1704"      , "16lf1704"        }, 0xA704,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1704.inc"    , "16lf1704_g.lkr"    , 0 },
432   { PROC_CLASS_PIC14E   , "__16LF1705"    , { "pic16lf1705"    , "p16lf1705"      , "16lf1705"        }, 0xA705,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1705.inc"    , "16lf1705_g.lkr"    , 0 },
433   { PROC_CLASS_PIC14E   , "__16LF1707"    , { "pic16lf1707"    , "p16lf1707"      , "16lf1707"        }, 0xA707,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1707.inc"    , "16lf1707_g.lkr"    , 0 },
434   { PROC_CLASS_PIC14E   , "__16LF1708"    , { "pic16lf1708"    , "p16lf1708"      , "16lf1708"        }, 0xA708,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1708.inc"    , "16lf1708_g.lkr"    , 0 },
435   { PROC_CLASS_PIC14E   , "__16LF1709"    , { "pic16lf1709"    , "p16lf1709"      , "16lf1709"        }, 0xA709,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1709.inc"    , "16lf1709_g.lkr"    , 0 },
436   { PROC_CLASS_PIC14E   , "__16LF1713"    , { "pic16lf1713"    , "p16lf1713"      , "16lf1713"        }, 0xA713,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1713.inc"    , "16lf1713_g.lkr"    , 0 },
437   { PROC_CLASS_PIC14E   , "__16LF1716"    , { "pic16lf1716"    , "p16lf1716"      , "16lf1716"        }, 0xB716,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1716.inc"    , "16lf1716_g.lkr"    , 0 },
438   { PROC_CLASS_PIC14E   , "__16LF1717"    , { "pic16lf1717"    , "p16lf1717"      , "16lf1717"        }, 0xA717,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1717.inc"    , "16lf1717_g.lkr"    , 0 },
439   { PROC_CLASS_PIC14E   , "__16LF1718"    , { "pic16lf1718"    , "p16lf1718"      , "16lf1718"        }, 0xA718,  8,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x27EF }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1718.inc"    , "16lf1718_g.lkr"    , 0 },
440   { PROC_CLASS_PIC14E   , "__16LF1719"    , { "pic16lf1719"    , "p16lf1719"      , "16lf1719"        }, 0xA719,  8,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x27EF }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1719.inc"    , "16lf1719_g.lkr"    , 0 },
441   { PROC_CLASS_PIC14E   , "__16LF1764"    , { "pic16lf1764"    , "p16lf1764"      , "16lf1764"        }, 0xA764,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1764.inc"    , "16lf1764_g.lkr"    , 0 },
442   { PROC_CLASS_PIC14E   , "__16LF1765"    , { "pic16lf1765"    , "p16lf1765"      , "16lf1765"        }, 0xA765,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23AF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1765.inc"    , "16lf1765_g.lkr"    , 0 },
443   { PROC_CLASS_PIC14E   , "__16LF1768"    , { "pic16lf1768"    , "p16lf1768"      , "16lf1768"        }, 0xA768,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1768.inc"    , "16lf1768_g.lkr"    , 0 },
444   { PROC_CLASS_PIC14E   , "__16LF1769"    , { "pic16lf1769"    , "p16lf1769"      , "16lf1769"        }, 0xA769,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1769.inc"    , "16lf1769_g.lkr"    , 0 },
445   { PROC_CLASS_PIC14E   , "__16LF1773"    , { "pic16lf1773"    , "p16lf1773"      , "16lf1773"        }, 0xA773,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1773.inc"    , "16lf1773_g.lkr"    , 0 },
446   { PROC_CLASS_PIC14E   , "__16LF1776"    , { "pic16lf1776"    , "p16lf1776"      , "16lf1776"        }, 0xA776,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1776.inc"    , "16lf1776_g.lkr"    , 0 },
447   { PROC_CLASS_PIC14E   , "__16LF1777"    , { "pic16lf1777"    , "p16lf1777"      , "16lf1777"        }, 0xA26D,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1777.inc"    , "16lf1777_g.lkr"    , 0 },
448   { PROC_CLASS_PIC14E   , "__16LF1778"    , { "pic16lf1778"    , "p16lf1778"      , "16lf1778"        }, 0xA778,  8,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x27CF }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1778.inc"    , "16lf1778_g.lkr"    , 0 },
449   { PROC_CLASS_PIC14E   , "__16LF1779"    , { "pic16lf1779"    , "p16lf1779"      , "16lf1779"        }, 0xA779,  8,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x27EF }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1779.inc"    , "16lf1779_g.lkr"    , 0 },
450   { PROC_CLASS_PIC14E   , "__16LF1782"    , { "pic16lf1782"    , "p16lf1782"      , "16lf1782"        }, 0xA782,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x00F0FF, 0x000800, { 0x000800, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf1782.inc"    , "16lf1782_g.lkr"    , 0 },
451   { PROC_CLASS_PIC14E   , "__16LF1783"    , { "pic16lf1783"    , "p16lf1783"      , "16lf1783"        }, 0xA783,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x00F0FF, 0x001000, { 0x001000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf1783.inc"    , "16lf1783_g.lkr"    , 0 },
452   { PROC_CLASS_PIC14E   , "__16LF1784"    , { "pic16lf1784"    , "p16lf1784"      , "16lf1784"        }, 0xA784,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x00F0FF, 0x001000, { 0x001000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf1784.inc"    , "16lf1784_g.lkr"    , 0 },
453   { PROC_CLASS_PIC14E   , "__16LF1786"    , { "pic16lf1786"    , "p16lf1786"      , "16lf1786"        }, 0xA786,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x00F0FF, 0x002000, { 0x002000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf1786.inc"    , "16lf1786_g.lkr"    , 0 },
454   { PROC_CLASS_PIC14E   , "__16LF1787"    , { "pic16lf1787"    , "p16lf1787"      , "16lf1787"        }, 0xA787,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x00F0FF, 0x002000, { 0x002000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf1787.inc"    , "16lf1787_g.lkr"    , 0 },
455   { PROC_CLASS_PIC14E   , "__16LF1788"    , { "pic16lf1788"    , "p16lf1788"      , "16lf1788"        }, 0xA788,  8,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x27EF }, 0x0FFF, 0x00F0FF, 0x004000, { 0x004000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf1788.inc"    , "16lf1788_g.lkr"    , 0 },
456   { PROC_CLASS_PIC14E   , "__16LF1789"    , { "pic16lf1789"    , "p16lf1789"      , "16lf1789"        }, 0xA789,  8,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x27EF }, 0x0FFF, 0x00F0FF, 0x004000, { 0x004000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf1789.inc"    , "16lf1789_g.lkr"    , 0 },
457   { PROC_CLASS_PIC14E   , "__16LF1823"    , { "pic16lf1823"    , "p16lf1823"      , "16lf1823"        }, 0xA823,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x206F }, 0x0FFF, 0x00F0FF, 0x000800, { 0x000800, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf1823.inc"    , "16lf1823_g.lkr"    , 0 },
458   { PROC_CLASS_PIC14E   , "__16LF1824"    , { "pic16lf1824"    , "p16lf1824"      , "16lf1824"        }, 0xA824,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x00F0FF, 0x001000, { 0x001000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf1824.inc"    , "16lf1824_g.lkr"    , 0 },
459   { PROC_CLASS_PIC14E   , "__16LF1824T39A", { "pic16lf1824t39a", "p16lf1824t39a"  , "16lf1824t39a"    }, 0xC824,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x00F0FF, 0x001000, { 0x001000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf1824t39a.inc", "16lf1824t39a_g.lkr", 0 },
460   { PROC_CLASS_PIC14E   , "__16LF1825"    , { "pic16lf1825"    , "p16lf1825"      , "16lf1825"        }, 0xA825,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x00F0FF, 0x002000, { 0x002000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf1825.inc"    , "16lf1825_g.lkr"    , 0 },
461   { PROC_CLASS_PIC14E   , "__16LF1826"    , { "pic16lf1826"    , "p16lf1826"      , "16lf1826"        }, 0xA826,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x00F0FF, 0x000800, { 0x000800, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf1826.inc"    , "16lf1826_g.lkr"    , 0 },
462   { PROC_CLASS_PIC14E   , "__16LF1827"    , { "pic16lf1827"    , "p16lf1827"      , "16lf1827"        }, 0xA827,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x216F }, 0x0FFF, 0x00F0FF, 0x001000, { 0x001000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf1827.inc"    , "16lf1827_g.lkr"    , 0 },
463   { PROC_CLASS_PIC14E   , "__16LF1828"    , { "pic16lf1828"    , "p16lf1828"      , "16lf1828"        }, 0xA828,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x00F0FF, 0x001000, { 0x001000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf1828.inc"    , "16lf1828_g.lkr"    , 0 },
464   { PROC_CLASS_PIC14E   , "__16LF1829"    , { "pic16lf1829"    , "p16lf1829"      , "16lf1829"        }, 0xA829,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x00F0FF, 0x002000, { 0x002000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf1829.inc"    , "16lf1829_g.lkr"    , 0 },
465   { PROC_CLASS_PIC14E   , "__16LF1847"    , { "pic16lf1847"    , "p16lf1847"      , "16lf1847"        }, 0xA847,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x00F0FF, 0x002000, { 0x002000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf1847.inc"    , "16lf1847_g.lkr"    , 0 },
466   { PROC_CLASS_PIC14E   , "__16LF1902"    , { "pic16lf1902"    , "p16lf1902"      , "16lf1902"        }, 0xA902,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x206F }, 0x0FFF, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1902.inc"    , "16lf1902_g.lkr"    , 0 },
467   { PROC_CLASS_PIC14E   , "__16LF1903"    , { "pic16lf1903"    , "p16lf1903"      , "16lf1903"        }, 0xA903,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1903.inc"    , "16lf1903_g.lkr"    , 0 },
468   { PROC_CLASS_PIC14E   , "__16LF1904"    , { "pic16lf1904"    , "p16lf1904"      , "16lf1904"        }, 0xA904,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1904.inc"    , "16lf1904_g.lkr"    , 0 },
469   { PROC_CLASS_PIC14E   , "__16LF1906"    , { "pic16lf1906"    , "p16lf1906"      , "16lf1906"        }, 0xA906,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1906.inc"    , "16lf1906_g.lkr"    , 0 },
470   { PROC_CLASS_PIC14E   , "__16LF1907"    , { "pic16lf1907"    , "p16lf1907"      , "16lf1907"        }, 0xA907,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, {       -1,       -1 }, 0x3F80, "p16lf1907.inc"    , "16lf1907_g.lkr"    , 0 },
471   { PROC_CLASS_PIC14E   , "__16LF1933"    , { "pic16lf1933"    , "p16lf1933"      , "16lf1933"        }, 0xA933,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x00F0FF, 0x001000, { 0x001000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf1933.inc"    , "16lf1933_g.lkr"    , 0 },
472   { PROC_CLASS_PIC14E   , "__16LF1934"    , { "pic16lf1934"    , "p16lf1934"      , "16lf1934"        }, 0xA934,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x00F0FF, 0x001000, { 0x001000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf1934.inc"    , "16lf1934_g.lkr"    , 0 },
473   { PROC_CLASS_PIC14E   , "__16LF1936"    , { "pic16lf1936"    , "p16lf1936"      , "16lf1936"        }, 0xA936,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x00F0FF, 0x002000, { 0x002000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf1936.inc"    , "16lf1936_g.lkr"    , 0 },
474   { PROC_CLASS_PIC14E   , "__16LF1937"    , { "pic16lf1937"    , "p16lf1937"      , "16lf1937"        }, 0xA937,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x00F0FF, 0x002000, { 0x002000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf1937.inc"    , "16lf1937_g.lkr"    , 0 },
475   { PROC_CLASS_PIC14E   , "__16LF1938"    , { "pic16lf1938"    , "p16lf1938"      , "16lf1938"        }, 0xA938,  8,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x00F0FF, 0x004000, { 0x004000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf1938.inc"    , "16lf1938_g.lkr"    , 0 },
476   { PROC_CLASS_PIC14E   , "__16LF1939"    , { "pic16lf1939"    , "p16lf1939"      , "16lf1939"        }, 0xA939,  8,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x00F0FF, 0x004000, { 0x004000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf1939.inc"    , "16lf1939_g.lkr"    , 0 },
477   { PROC_CLASS_PIC14E   , "__16LF1946"    , { "pic16lf1946"    , "p16lf1946"      , "16lf1946"        }, 0xA946,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x00F0FF, 0x002000, { 0x002000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf1946.inc"    , "16lf1946_g.lkr"    , 0 },
478   { PROC_CLASS_PIC14E   , "__16LF1947"    , { "pic16lf1947"    , "p16lf1947"      , "16lf1947"        }, 0xA947,  8,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x00F0FF, 0x004000, { 0x004000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x008008 }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf1947.inc"    , "16lf1947_g.lkr"    , 0 },
479   { PROC_CLASS_PIC14EX  , "__16LF15354"   , { "pic16lf15354"   , "p16lf15354"     , "16lf15354"       }, 0xA282,  2,   64, 0x1F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x1FFF, 0x000FFF, 0x001000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x00800B }, {       -1,       -1 }, 0x3F80, "p16lf15354.inc"   , "16lf15354_g.lkr"   , 0 },
480   { PROC_CLASS_PIC14EX  , "__16LF15355"   , { "pic16lf15355"   , "p16lf15355"     , "16lf15355"       }, 0xA281,  4,   64, 0x1F80, { 0x70, 0x7F },    -1, { 0x2000, 0x25EF }, 0x1FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x008000, 0x008003 }, { 0x008007, 0x00800B }, {       -1,       -1 }, 0x3F80, "p16lf15355.inc"   , "16lf15355_g.lkr"   , 0 },
481   { PROC_CLASS_PIC14E   , "__16LF18313"   , { "pic16lf18313"   , "p16lf18313"     , "16lf18313"       }, 0xA832,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x00F0FF, 0x000800, { 0x000800, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x00800A }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf18313.inc"   , "16lf18313_g.lkr"   , 0 },
482   { PROC_CLASS_PIC14E   , "__16LF18323"   , { "pic16lf18323"   , "p16lf18323"     , "16lf18323"       }, 0xA833,  1,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x20EF }, 0x0FFF, 0x00F0FF, 0x000800, { 0x000800, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x00800A }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf18323.inc"   , "16lf18323_g.lkr"   , 0 },
483   { PROC_CLASS_PIC14E   , "__16LF18324"   , { "pic16lf18324"   , "p16lf18324"     , "16lf18324"       }, 0xA324,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x00F0FF, 0x001000, { 0x001000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x00800A }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf18324.inc"   , "16lf18324_g.lkr"   , 0 },
484   { PROC_CLASS_PIC14E   , "__16LF18325"   , { "pic16lf18325"   , "p16lf18325"     , "16lf18325"       }, 0xA325,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x00F0FF, 0x002000, { 0x002000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x00800A }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf18325.inc"   , "16lf18325_g.lkr"   , 0 },
485   { PROC_CLASS_PIC14E   , "__16LF18326"   , { "pic16lf18326"   , "p16lf18326"     , "16lf18326"       }, 0xA274,  8,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x00F0FF, 0x004000, { 0x004000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x00800A }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf18326.inc"   , "16lf18326_g.lkr"   , 0 },
486   { PROC_CLASS_PIC14E   , "__16LF18344"   , { "pic16lf18344"   , "p16lf18344"     , "16lf18344"       }, 0xA344,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x00F0FF, 0x001000, { 0x001000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x00800A }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf18344.inc"   , "16lf18344_g.lkr"   , 0 },
487   { PROC_CLASS_PIC14E   , "__16LF18345"   , { "pic16lf18345"   , "p16lf18345"     , "16lf18345"       }, 0xA345,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x00F0FF, 0x002000, { 0x002000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x00800A }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf18345.inc"   , "16lf18345_g.lkr"   , 0 },
488   { PROC_CLASS_PIC14E   , "__16LF18346"   , { "pic16lf18346"   , "p16lf18346"     , "16lf18346"       }, 0xA275,  8,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x00F0FF, 0x004000, { 0x004000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x00800A }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf18346.inc"   , "16lf18346_g.lkr"   , 0 },
489   { PROC_CLASS_PIC14E   , "__16LF18854"   , { "pic16lf18854"   , "p16lf18854"     , "16lf18854"       }, 0xA854,  2,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x21EF }, 0x0FFF, 0x00F0FF, 0x001000, { 0x001000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x00800B }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf18854.inc"   , "16lf18854_g.lkr"   , 0 },
490   { PROC_CLASS_PIC14E   , "__16LF18855"   , { "pic16lf18855"   , "p16lf18855"     , "16lf18855"       }, 0xA855,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x00F0FF, 0x002000, { 0x002000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x00800B }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf18855.inc"   , "16lf18855_g.lkr"   , 0 },
491   { PROC_CLASS_PIC14E   , "__16LF18856"   , { "pic16lf18856"   , "p16lf18856"     , "16lf18856"       }, 0xA856,  8,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x27EF }, 0x0FFF, 0x00F0FF, 0x004000, { 0x004000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x00800B }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf18856.inc"   , "16lf18856_g.lkr"   , 0 },
492   { PROC_CLASS_PIC14EX  , "__16LF18857"   , { "pic16lf18857"   , "p16lf18857"     , "16lf18857"       }, 0xA857, 16,   64, 0x1F80, { 0x70, 0x7F },    -1, { 0x2000, 0x31CF }, 0x1FFF, 0x00F0FF, 0x008000, { 0x008000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x00800B }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf18857.inc"   , "16lf18857_g.lkr"   , 0 },
493   { PROC_CLASS_PIC14E   , "__16LF18875"   , { "pic16lf18875"   , "p16lf18875"     , "16lf18875"       }, 0xA875,  4,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x23EF }, 0x0FFF, 0x00F0FF, 0x002000, { 0x002000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x00800B }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf18875.inc"   , "16lf18875_g.lkr"   , 0 },
494   { PROC_CLASS_PIC14E   , "__16LF18876"   , { "pic16lf18876"   , "p16lf18876"     , "16lf18876"       }, 0xA876,  8,   32, 0x0F80, { 0x70, 0x7F },    -1, { 0x2000, 0x27CF }, 0x0FFF, 0x00F0FF, 0x004000, { 0x004000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x00800B }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf18876.inc"   , "16lf18876_g.lkr"   , 0 },
495   { PROC_CLASS_PIC14EX  , "__16LF18877"   , { "pic16lf18877"   , "p16lf18877"     , "16lf18877"       }, 0xA877, 16,   64, 0x1F80, { 0x70, 0x7F },    -1, { 0x2000, 0x25EF }, 0x1FEF, 0x00F0FF, 0x008000, { 0x008000, 0x00EFFF }, { 0x008000, 0x008003 }, { 0x008007, 0x00800B }, { 0x00F000, 0x00F0FF }, 0x3F80, "p16lf18877.inc"   , "16lf18877_g.lkr"   , 0 },
496   { PROC_CLASS_PIC16    , "__17C42"       , { "pic17c42"       , "p17c42"         , "17c42"           }, 0x7C42,  0,    4, 0x0300, { 0x18, 0x1F },    -1, {     -1,     -1 }, 0x03FF, 0x0007FF, 0x000800, {       -1,       -1 }, {       -1,       -1 }, { 0x00FE00, 0x00FE0F }, {       -1,       -1 }, 0x0000, "p17c42.inc"       , "17c42_g.lkr"       , 0 },
497   { PROC_CLASS_PIC16    , "__17C42A"      , { "pic17c42a"      , "p17c42a"        , "17c42a"          }, 0x742A,  0,    4, 0x0300, { 0x1A, 0x1F },    -1, {     -1,     -1 }, 0x031F, 0x0007FF, 0x000800, {       -1,       -1 }, {       -1,       -1 }, { 0x00FE00, 0x00FE0F }, {       -1,       -1 }, 0x0000, "p17c42a.inc"      , "17c42a_g.lkr"      , 0 },
498   { PROC_CLASS_PIC16    , "__17C43"       , { "pic17c43"       , "p17c43"         , "17c43"           }, 0x7C43,  0,    4, 0x0300, { 0x1A, 0x1F },    -1, {     -1,     -1 }, 0x031F, 0x000FFF, 0x001000, {       -1,       -1 }, {       -1,       -1 }, { 0x00FE00, 0x00FE0F }, {       -1,       -1 }, 0x0000, "p17c43.inc"       , "17c43_g.lkr"       , 0 },
499   { PROC_CLASS_PIC16    , "__17C44"       , { "pic17c44"       , "p17c44"         , "17c44"           }, 0x7C44,  0,    4, 0x0300, { 0x1A, 0x1F },    -1, {     -1,     -1 }, 0x031F, 0x001FFF, 0x002000, {       -1,       -1 }, {       -1,       -1 }, { 0x00FE00, 0x00FE0F }, {       -1,       -1 }, 0x0000, "p17c44.inc"       , "17c44_g.lkr"       , 0 },
500   { PROC_CLASS_PIC16    , "__17C752"      , { "pic17c752"      , "p17c752"        , "17c752"          }, 0x7752,  0,    8, 0x0700, { 0x1A, 0x1F },    -1, {     -1,     -1 }, 0x071F, 0x001FFF, 0x002000, {       -1,       -1 }, {       -1,       -1 }, { 0x00FE00, 0x00FE0F }, {       -1,       -1 }, 0x0000, "p17c752.inc"      , "17c752_g.lkr"      , 0 },
501   { PROC_CLASS_PIC16    , "__17C756"      , { "pic17c756"      , "p17c756"        , "17c756"          }, 0x7756,  0,    8, 0x0700, { 0x1A, 0x1F },    -1, {     -1,     -1 }, 0x071F, 0x003FFF, 0x004000, {       -1,       -1 }, {       -1,       -1 }, { 0x00FE00, 0x00FE0F }, {       -1,       -1 }, 0x0000, "p17c756.inc"      , "17c756_g.lkr"      , 0 },
502   { PROC_CLASS_PIC16    , "__17C756A"     , { "pic17c756a"     , "p17c756a"       , "17c756a"         }, 0x756A,  0,    8, 0x0700, { 0x1A, 0x1F },    -1, {     -1,     -1 }, 0x071F, 0x003FFF, 0x004000, {       -1,       -1 }, {       -1,       -1 }, { 0x00FE00, 0x00FE0F }, {       -1,       -1 }, 0x0000, "p17c756a.inc"     , "17c756a_g.lkr"     , 0 },
503   { PROC_CLASS_PIC16    , "__17C762"      , { "pic17c762"      , "p17c762"        , "17c762"          }, 0x7762,  0,    9, 0x0F00, { 0x1A, 0x1F },    -1, {     -1,     -1 }, 0x081F, 0x001FFF, 0x002000, {       -1,       -1 }, {       -1,       -1 }, { 0x00FE00, 0x00FE0F }, {       -1,       -1 }, 0x0000, "p17c762.inc"      , "17c762_g.lkr"      , 0 },
504   { PROC_CLASS_PIC16    , "__17C766"      , { "pic17c766"      , "p17c766"        , "17c766"          }, 0x7766,  0,    9, 0x0F00, { 0x1A, 0x1F },    -1, {     -1,     -1 }, 0x081F, 0x003FFF, 0x004000, {       -1,       -1 }, {       -1,       -1 }, { 0x00FE00, 0x00FE0F }, {       -1,       -1 }, 0x0000, "p17c766.inc"      , "17c766_g.lkr"      , 0 },
505   { PROC_CLASS_PIC16    , "__17CR42"      , { "pic17cr42"      , "p17cr42"        , "17cr42"          }, 0xE42A,  0,    4, 0x0300, { 0x1A, 0x1F },    -1, {     -1,     -1 }, 0x031F, 0x0007FF, 0x000800, {       -1,       -1 }, {       -1,       -1 }, { 0x00FE00, 0x00FE0F }, {       -1,       -1 }, 0x0000, "p17cr42.inc"      , "17cr42_g.lkr"      , 0 },
506   { PROC_CLASS_PIC16    , "__17CR43"      , { "pic17cr43"      , "p17cr43"        , "17cr43"          }, 0xEC43,  0,    4, 0x0300, { 0x1A, 0x1F },    -1, {     -1,     -1 }, 0x031F, 0x000FFF, 0x001000, {       -1,       -1 }, {       -1,       -1 }, { 0x00FE00, 0x00FE0F }, {       -1,       -1 }, 0x0000, "p17cr43.inc"      , "17cr43_g.lkr"      , 0 },
507   { PROC_CLASS_PIC16    , "__17CXX"       , { "pic17cxx"       , "p17cxx"         , "17cxx"           }, 0x7756,  0,    4, 0x0000, { 0x1A, 0x1F },    -1, {     -1,     -1 },     -1,       -1,       -1, {       -1,       -1 }, {       -1,       -1 }, {       -1,       -1 }, {       -1,       -1 }, 0x0000, NULL               , NULL                , 0 },
508   { PROC_CLASS_PIC16E   , "__18C242"      , { "pic18c242"      , "p18c242"        , "18c242"          }, 0x8242,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x300007 }, {       -1,       -1 }, 0x0000, "p18c242.inc"      , "18c242_g.lkr"      , 0 },
509   { PROC_CLASS_PIC16E   , "__18C252"      , { "pic18c252"      , "p18c252"        , "18c252"          }, 0x8252,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0x007FFF, 0x008000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x300007 }, {       -1,       -1 }, 0x0000, "p18c252.inc"      , "18c252_g.lkr"      , 0 },
510   { PROC_CLASS_PIC16E   , "__18C442"      , { "pic18c442"      , "p18c442"        , "18c442"          }, 0x8442,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x300007 }, {       -1,       -1 }, 0x0000, "p18c442.inc"      , "18c442_g.lkr"      , 0 },
511   { PROC_CLASS_PIC16E   , "__18C452"      , { "pic18c452"      , "p18c452"        , "18c452"          }, 0x8452,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0x007FFF, 0x008000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x300007 }, {       -1,       -1 }, 0x0000, "p18c452.inc"      , "18c452_g.lkr"      , 0 },
512   { PROC_CLASS_PIC16E   , "__18C601"      , { "pic18c601"      , "p18c601"        , "18c601"          }, 0x8601,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0x03FFFF, 0x040000, {       -1,       -1 }, {       -1,       -1 }, { 0x300000, 0x300007 }, {       -1,       -1 }, 0x0000, "p18c601.inc"      , "18c601_g.lkr"      , 0 },
513   { PROC_CLASS_PIC16E   , "__18C658"      , { "pic18c658"      , "p18c658"        , "18c658"          }, 0x8658,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x007FFF, 0x008000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x300007 }, {       -1,       -1 }, 0x0000, "p18c658.inc"      , "18c658_g.lkr"      , 0 },
514   { PROC_CLASS_PIC16E   , "__18C801"      , { "pic18c801"      , "p18c801"        , "18c801"          }, 0x8801,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0x1FFFFF, 0x200000, {       -1,       -1 }, {       -1,       -1 }, { 0x300000, 0x300007 }, {       -1,       -1 }, 0x0000, "p18c801.inc"      , "18c801_g.lkr"      , 0 },
515   { PROC_CLASS_PIC16E   , "__18C858"      , { "pic18c858"      , "p18c858"        , "18c858"          }, 0x8858,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x007FFF, 0x008000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x300007 }, {       -1,       -1 }, 0x0000, "p18c858.inc"      , "18c858_g.lkr"      , 0 },
516   { PROC_CLASS_PIC16E   , "__18CXX"       , { "pic18cxx"       , "p18cxx"         , "18cxx"           }, 0x8452,  0,   16, 0x0000, { 0x00, 0x7F },    -1, {     -1,     -1 },     -1,       -1,       -1, {       -1,       -1 }, { 0x200000, 0x200007 }, {       -1,       -1 }, {       -1,       -1 }, 0x0000, NULL               , NULL                , 0 },
517   { PROC_CLASS_PIC16E   , "__18F13K22"    , { "pic18f13k22"    , "p18f13k22"      , "18f13k22"        }, 0xB132,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x002000, { 0x002000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f13k22.inc"    , "18f13k22_g.lkr"    , 1 },
518   { PROC_CLASS_PIC16E   , "__18F13K50"    , { "pic18f13k50"    , "p18f13k50"      , "18f13k50"        }, 0xA135,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x002000, { 0x002000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f13k50.inc"    , "18f13k50_g.lkr"    , 1 },
519   { PROC_CLASS_PIC16E   , "__18F14K22"    , { "pic18f14k22"    , "p18f14k22"      , "18f14k22"        }, 0xB142,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f14k22.inc"    , "18f14k22_g.lkr"    , 1 },
520   { PROC_CLASS_PIC16E   , "__18F14K22LIN" , { "pic18f14k22lin" , "p18f14k22lin"   , "18f14k22lin"     }, 0xC142,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f14k22lin.inc" , "18f14k22lin_g.lkr" , 1 },
521   { PROC_CLASS_PIC16E   , "__18F14K50"    , { "pic18f14k50"    , "p18f14k50"      , "18f14k50"        }, 0xA145,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f14k50.inc"    , "18f14k50_g.lkr"    , 1 },
522   { PROC_CLASS_PIC16E   , "__18F23K20"    , { "pic18f23k20"    , "p18f23k20"      , "18f23k20"        }, 0xD320,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x002000, { 0x002000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f23k20.inc"    , "18f23k20_g.lkr"    , 1 },
523   { PROC_CLASS_PIC16E   , "__18F23K22"    , { "pic18f23k22"    , "p18f23k22"      , "18f23k22"        }, 0xD322,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x002000, { 0x002000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f23k22.inc"    , "18f23k22_g.lkr"    , 1 },
524   { PROC_CLASS_PIC16E   , "__18F24J10"    , { "pic18f24j10"    , "p18f24j10"      , "18f24j10"        }, 0xD410,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FF7, 0x003FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x003FF8, 0x003FFD }, {       -1,       -1 }, 0x0000, "p18f24j10.inc"    , "18f24j10_g.lkr"    , 3 },
525   { PROC_CLASS_PIC16E   , "__18F24J11"    , { "pic18f24j11"    , "p18f24j11"      , "18f24j11"        }, 0xD411,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FF7, 0x003FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x003FF8, 0x003FFF }, {       -1,       -1 }, 0x0000, "p18f24j11.inc"    , "18f24j11_g.lkr"    , 3 },
526   { PROC_CLASS_PIC16E   , "__18F24J50"    , { "pic18f24j50"    , "p18f24j50"      , "18f24j50"        }, 0xD450,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FF7, 0x003FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x003FF8, 0x003FFF }, {       -1,       -1 }, 0x0000, "p18f24j50.inc"    , "18f24j50_g.lkr"    , 3 },
527   { PROC_CLASS_PIC16E   , "__18F24K20"    , { "pic18f24k20"    , "p18f24k20"      , "18f24k20"        }, 0xD420,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f24k20.inc"    , "18f24k20_g.lkr"    , 1 },
528   { PROC_CLASS_PIC16E   , "__18F24K22"    , { "pic18f24k22"    , "p18f24k22"      , "18f24k22"        }, 0xD422,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f24k22.inc"    , "18f24k22_g.lkr"    , 1 },
529   { PROC_CLASS_PIC16E   , "__18F24K40"    , { "pic18f24k40"    , "p18f24k40"      , "18f24k40"        }, 0x2440,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x3100FF, 0x004000, { 0x004000, 0x30FFFF }, { 0x200000, 0x20000F }, { 0x300000, 0x30000B }, { 0x310000, 0x3100FF }, 0x0000, "p18f24k40.inc"    , "18f24k40_g.lkr"    , 1 },
530   { PROC_CLASS_PIC16E   , "__18F24K50"    , { "pic18f24k50"    , "p18f24k50"      , "18f24k50"        }, 0xD451,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f24k50.inc"    , "18f24k50_g.lkr"    , 1 },
531   { PROC_CLASS_PIC16E   , "__18F25J10"    , { "pic18f25j10"    , "p18f25j10"      , "18f25j10"        }, 0xD510,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0x007FF7, 0x007FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x007FF8, 0x007FFD }, {       -1,       -1 }, 0x0000, "p18f25j10.inc"    , "18f25j10_g.lkr"    , 3 },
532   { PROC_CLASS_PIC16E   , "__18F25J11"    , { "pic18f25j11"    , "p18f25j11"      , "18f25j11"        }, 0xD511,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x007FF7, 0x007FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x007FF8, 0x007FFF }, {       -1,       -1 }, 0x0000, "p18f25j11.inc"    , "18f25j11_g.lkr"    , 3 },
533   { PROC_CLASS_PIC16E   , "__18F25J50"    , { "pic18f25j50"    , "p18f25j50"      , "18f25j50"        }, 0xD550,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x007FF7, 0x007FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x007FF8, 0x007FFF }, {       -1,       -1 }, 0x0000, "p18f25j50.inc"    , "18f25j50_g.lkr"    , 3 },
534   { PROC_CLASS_PIC16E   , "__18F25K20"    , { "pic18f25k20"    , "p18f25k20"      , "18f25k20"        }, 0xD520,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f25k20.inc"    , "18f25k20_g.lkr"    , 1 },
535   { PROC_CLASS_PIC16E   , "__18F25K22"    , { "pic18f25k22"    , "p18f25k22"      , "18f25k22"        }, 0xD522,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f25k22.inc"    , "18f25k22_g.lkr"    , 1 },
536   { PROC_CLASS_PIC16E   , "__18F25K40"    , { "pic18f25k40"    , "p18f25k40"      , "18f25k40"        }, 0x2540,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x3100FF, 0x008000, { 0x008000, 0x30FFFF }, { 0x200000, 0x20000F }, { 0x300000, 0x30000B }, { 0x310000, 0x3100FF }, 0x0000, "p18f25k40.inc"    , "18f25k40_g.lkr"    , 1 },
537   { PROC_CLASS_PIC16E   , "__18F25K50"    , { "pic18f25k50"    , "p18f25k50"      , "18f25k50"        }, 0xD551,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f25k50.inc"    , "18f25k50_g.lkr"    , 1 },
538   { PROC_CLASS_PIC16E   , "__18F25K80"    , { "pic18f25k80"    , "p18f25k80"      , "18f25k80"        }, 0xA580,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f25k80.inc"    , "18f25k80_g.lkr"    , 1 },
539   { PROC_CLASS_PIC16E   , "__18F26J11"    , { "pic18f26j11"    , "p18f26j11"      , "18f26j11"        }, 0xD611,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFF7, 0x00FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x00FFF8, 0x00FFFF }, {       -1,       -1 }, 0x0000, "p18f26j11.inc"    , "18f26j11_g.lkr"    , 3 },
540   { PROC_CLASS_PIC16E   , "__18F26J13"    , { "pic18f26j13"    , "p18f26j13"      , "18f26j13"        }, 0xD616,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFF7, 0x00FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x00FFF8, 0x00FFFF }, {       -1,       -1 }, 0x0000, "p18f26j13.inc"    , "18f26j13_g.lkr"    , 3 },
541   { PROC_CLASS_PIC16E   , "__18F26J50"    , { "pic18f26j50"    , "p18f26j50"      , "18f26j50"        }, 0xD650,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFF7, 0x00FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x00FFF8, 0x00FFFF }, {       -1,       -1 }, 0x0000, "p18f26j50.inc"    , "18f26j50_g.lkr"    , 3 },
542   { PROC_CLASS_PIC16E   , "__18F26J53"    , { "pic18f26j53"    , "p18f26j53"      , "18f26j53"        }, 0xD655,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFF7, 0x00FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x00FFF8, 0x00FFFF }, {       -1,       -1 }, 0x0000, "p18f26j53.inc"    , "18f26j53_g.lkr"    , 3 },
543   { PROC_CLASS_PIC16E   , "__18F26K20"    , { "pic18f26k20"    , "p18f26k20"      , "18f26k20"        }, 0xD620,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f26k20.inc"    , "18f26k20_g.lkr"    , 1 },
544   { PROC_CLASS_PIC16E   , "__18F26K22"    , { "pic18f26k22"    , "p18f26k22"      , "18f26k22"        }, 0xD622,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f26k22.inc"    , "18f26k22_g.lkr"    , 1 },
545   { PROC_CLASS_PIC16E   , "__18F26K40"    , { "pic18f26k40"    , "p18f26k40"      , "18f26k40"        }, 0x2640,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x3103FF, 0x010000, { 0x010000, 0x30FFFF }, { 0x200000, 0x20000F }, { 0x300000, 0x30000B }, { 0x310000, 0x3103FF }, 0x0000, "p18f26k40.inc"    , "18f26k40_g.lkr"    , 1 },
546   { PROC_CLASS_PIC16E   , "__18F26K80"    , { "pic18f26k80"    , "p18f26k80"      , "18f26k80"        }, 0xA680,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f26k80.inc"    , "18f26k80_g.lkr"    , 1 },
547   { PROC_CLASS_PIC16E   , "__18F27J13"    , { "pic18f27j13"    , "p18f27j13"      , "18f27j13"        }, 0xD711,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x01FFF7, 0x01FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x01FFF8, 0x01FFFF }, {       -1,       -1 }, 0x0000, "p18f27j13.inc"    , "18f27j13_g.lkr"    , 3 },
548   { PROC_CLASS_PIC16E   , "__18F27J53"    , { "pic18f27j53"    , "p18f27j53"      , "18f27j53"        }, 0xD750,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x01FFF7, 0x01FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x01FFF8, 0x01FFFF }, {       -1,       -1 }, 0x0000, "p18f27j53.inc"    , "18f27j53_g.lkr"    , 3 },
549   { PROC_CLASS_PIC16E   , "__18F27K40"    , { "pic18f27k40"    , "p18f27k40"      , "18f27k40"        }, 0x2740,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x3103FF, 0x020000, { 0x020000, 0x30FFFF }, { 0x200000, 0x20000F }, { 0x300000, 0x30000B }, { 0x310000, 0x3103FF }, 0x0000, "p18f27k40.inc"    , "18f27k40_g.lkr"    , 1 },
550   { PROC_CLASS_PIC16E   , "__18F43K20"    , { "pic18f43k20"    , "p18f43k20"      , "18f43k20"        }, 0xE320,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x002000, { 0x002000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f43k20.inc"    , "18f43k20_g.lkr"    , 1 },
551   { PROC_CLASS_PIC16E   , "__18F43K22"    , { "pic18f43k22"    , "p18f43k22"      , "18f43k22"        }, 0xE322,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x002000, { 0x002000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f43k22.inc"    , "18f43k22_g.lkr"    , 1 },
552   { PROC_CLASS_PIC16E   , "__18F44J10"    , { "pic18f44j10"    , "p18f44j10"      , "18f44j10"        }, 0xE410,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FF7, 0x003FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x003FF8, 0x003FFD }, {       -1,       -1 }, 0x0000, "p18f44j10.inc"    , "18f44j10_g.lkr"    , 3 },
553   { PROC_CLASS_PIC16E   , "__18F44J11"    , { "pic18f44j11"    , "p18f44j11"      , "18f44j11"        }, 0xE411,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FF7, 0x003FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x003FF8, 0x003FFF }, {       -1,       -1 }, 0x0000, "p18f44j11.inc"    , "18f44j11_g.lkr"    , 3 },
554   { PROC_CLASS_PIC16E   , "__18F44J50"    , { "pic18f44j50"    , "p18f44j50"      , "18f44j50"        }, 0xE450,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FF7, 0x003FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x003FF8, 0x003FFF }, {       -1,       -1 }, 0x0000, "p18f44j50.inc"    , "18f44j50_g.lkr"    , 3 },
555   { PROC_CLASS_PIC16E   , "__18F44K20"    , { "pic18f44k20"    , "p18f44k20"      , "18f44k20"        }, 0xE420,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f44k20.inc"    , "18f44k20_g.lkr"    , 1 },
556   { PROC_CLASS_PIC16E   , "__18F44K22"    , { "pic18f44k22"    , "p18f44k22"      , "18f44k22"        }, 0xE422,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f44k22.inc"    , "18f44k22_g.lkr"    , 1 },
557   { PROC_CLASS_PIC16E   , "__18F45J10"    , { "pic18f45j10"    , "p18f45j10"      , "18f45j10"        }, 0xE510,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0x007FF7, 0x007FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x007FF8, 0x007FFD }, {       -1,       -1 }, 0x0000, "p18f45j10.inc"    , "18f45j10_g.lkr"    , 3 },
558   { PROC_CLASS_PIC16E   , "__18F45J11"    , { "pic18f45j11"    , "p18f45j11"      , "18f45j11"        }, 0xE511,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x007FF7, 0x007FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x007FF8, 0x007FFF }, {       -1,       -1 }, 0x0000, "p18f45j11.inc"    , "18f45j11_g.lkr"    , 3 },
559   { PROC_CLASS_PIC16E   , "__18F45J50"    , { "pic18f45j50"    , "p18f45j50"      , "18f45j50"        }, 0xE550,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x007FF7, 0x007FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x007FF8, 0x007FFF }, {       -1,       -1 }, 0x0000, "p18f45j50.inc"    , "18f45j50_g.lkr"    , 3 },
560   { PROC_CLASS_PIC16E   , "__18F45K20"    , { "pic18f45k20"    , "p18f45k20"      , "18f45k20"        }, 0xE520,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f45k20.inc"    , "18f45k20_g.lkr"    , 1 },
561   { PROC_CLASS_PIC16E   , "__18F45K22"    , { "pic18f45k22"    , "p18f45k22"      , "18f45k22"        }, 0xE522,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f45k22.inc"    , "18f45k22_g.lkr"    , 1 },
562   { PROC_CLASS_PIC16E   , "__18F45K40"    , { "pic18f45k40"    , "p18f45k40"      , "18f45k40"        }, 0x4540,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x3100FF, 0x008000, { 0x008000, 0x30FFFF }, { 0x200000, 0x20000F }, { 0x300000, 0x30000B }, { 0x310000, 0x3100FF }, 0x0000, "p18f45k40.inc"    , "18f45k40_g.lkr"    , 1 },
563   { PROC_CLASS_PIC16E   , "__18F45K50"    , { "pic18f45k50"    , "p18f45k50"      , "18f45k50"        }, 0xE551,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f45k50.inc"    , "18f45k50_g.lkr"    , 1 },
564   { PROC_CLASS_PIC16E   , "__18F45K80"    , { "pic18f45k80"    , "p18f45k80"      , "18f45k80"        }, 0xB580,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f45k80.inc"    , "18f45k80_g.lkr"    , 1 },
565   { PROC_CLASS_PIC16E   , "__18F46J11"    , { "pic18f46j11"    , "p18f46j11"      , "18f46j11"        }, 0xE611,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFF7, 0x00FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x00FFF8, 0x00FFFF }, {       -1,       -1 }, 0x0000, "p18f46j11.inc"    , "18f46j11_g.lkr"    , 3 },
566   { PROC_CLASS_PIC16E   , "__18F46J13"    , { "pic18f46j13"    , "p18f46j13"      , "18f46j13"        }, 0xE616,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFF7, 0x00FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x00FFF8, 0x00FFFF }, {       -1,       -1 }, 0x0000, "p18f46j13.inc"    , "18f46j13_g.lkr"    , 3 },
567   { PROC_CLASS_PIC16E   , "__18F46J50"    , { "pic18f46j50"    , "p18f46j50"      , "18f46j50"        }, 0xE650,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFF7, 0x00FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x00FFF8, 0x00FFFF }, {       -1,       -1 }, 0x0000, "p18f46j50.inc"    , "18f46j50_g.lkr"    , 3 },
568   { PROC_CLASS_PIC16E   , "__18F46J53"    , { "pic18f46j53"    , "p18f46j53"      , "18f46j53"        }, 0xE655,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFF7, 0x00FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x00FFF8, 0x00FFFF }, {       -1,       -1 }, 0x0000, "p18f46j53.inc"    , "18f46j53_g.lkr"    , 3 },
569   { PROC_CLASS_PIC16E   , "__18F46K20"    , { "pic18f46k20"    , "p18f46k20"      , "18f46k20"        }, 0xE620,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f46k20.inc"    , "18f46k20_g.lkr"    , 1 },
570   { PROC_CLASS_PIC16E   , "__18F46K22"    , { "pic18f46k22"    , "p18f46k22"      , "18f46k22"        }, 0xE622,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f46k22.inc"    , "18f46k22_g.lkr"    , 1 },
571   { PROC_CLASS_PIC16E   , "__18F46K40"    , { "pic18f46k40"    , "p18f46k40"      , "18f46k40"        }, 0x4640,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x3103FF, 0x010000, { 0x010000, 0x30FFFF }, { 0x200000, 0x20000F }, { 0x300000, 0x30000B }, { 0x310000, 0x3103FF }, 0x0000, "p18f46k40.inc"    , "18f46k40_g.lkr"    , 1 },
572   { PROC_CLASS_PIC16E   , "__18F46K80"    , { "pic18f46k80"    , "p18f46k80"      , "18f46k80"        }, 0xB680,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f46k80.inc"    , "18f46k80_g.lkr"    , 1 },
573   { PROC_CLASS_PIC16E   , "__18F47J13"    , { "pic18f47j13"    , "p18f47j13"      , "18f47j13"        }, 0xE711,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x01FFF7, 0x01FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x01FFF8, 0x01FFFF }, {       -1,       -1 }, 0x0000, "p18f47j13.inc"    , "18f47j13_g.lkr"    , 3 },
574   { PROC_CLASS_PIC16E   , "__18F47J53"    , { "pic18f47j53"    , "p18f47j53"      , "18f47j53"        }, 0xE750,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x01FFF7, 0x01FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x01FFF8, 0x01FFFF }, {       -1,       -1 }, 0x0000, "p18f47j53.inc"    , "18f47j53_g.lkr"    , 3 },
575   { PROC_CLASS_PIC16E   , "__18F47K40"    , { "pic18f47k40"    , "p18f47k40"      , "18f47k40"        }, 0x4740,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x3103FF, 0x020000, { 0x020000, 0x30FFFF }, { 0x200000, 0x20000F }, { 0x300000, 0x30000B }, { 0x310000, 0x3103FF }, 0x0000, "p18f47k40.inc"    , "18f47k40_g.lkr"    , 1 },
576   { PROC_CLASS_PIC16E   , "__18F63J11"    , { "pic18f63j11"    , "p18f63j11"      , "18f63j11"        }, 0x6311,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x001FF7, 0x001FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x001FF8, 0x001FFD }, {       -1,       -1 }, 0x0000, "p18f63j11.inc"    , "18f63j11_g.lkr"    , 3 },
577   { PROC_CLASS_PIC16E   , "__18F63J90"    , { "pic18f63j90"    , "p18f63j90"      , "18f63j90"        }, 0xB390,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x001FF7, 0x001FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x001FF8, 0x001FFD }, {       -1,       -1 }, 0x0000, "p18f63j90.inc"    , "18f63j90_g.lkr"    , 3 },
578   { PROC_CLASS_PIC16E   , "__18F64J11"    , { "pic18f64j11"    , "p18f64j11"      , "18f64j11"        }, 0x6411,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FF7, 0x003FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x003FF8, 0x003FFD }, {       -1,       -1 }, 0x0000, "p18f64j11.inc"    , "18f64j11_g.lkr"    , 3 },
579   { PROC_CLASS_PIC16E   , "__18F64J15"    , { "pic18f64j15"    , "p18f64j15"      , "18f64j15"        }, 0xB415,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 },     -1,       -1,       -1, {       -1,       -1 }, {       -1,       -1 }, {       -1,       -1 }, {       -1,       -1 }, 0x0000, "p18f64j15.inc"    , "18f64j15_g.lkr"    , 3 }, /* not documented by Microchip, added in svn rev. #378, see http://osdir.com/ml/hardware.microcontrollers.gnupic/2008-05/msg00013.html */
580   { PROC_CLASS_PIC16E   , "__18F64J90"    , { "pic18f64j90"    , "p18f64j90"      , "18f64j90"        }, 0xB490,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FF7, 0x003FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x003FF8, 0x003FFD }, {       -1,       -1 }, 0x0000, "p18f64j90.inc"    , "18f64j90_g.lkr"    , 3 },
581   { PROC_CLASS_PIC16E   , "__18F65J10"    , { "pic18f65j10"    , "p18f65j10"      , "18f65j10"        }, 0xB510,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x007FF7, 0x007FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x007FF8, 0x007FFD }, {       -1,       -1 }, 0x0000, "p18f65j10.inc"    , "18f65j10_g.lkr"    , 3 },
582   { PROC_CLASS_PIC16E   , "__18F65J11"    , { "pic18f65j11"    , "p18f65j11"      , "18f65j11"        }, 0x6511,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x007FF7, 0x007FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x007FF8, 0x007FFD }, {       -1,       -1 }, 0x0000, "p18f65j11.inc"    , "18f65j11_g.lkr"    , 3 },
583   { PROC_CLASS_PIC16E   , "__18F65J15"    , { "pic18f65j15"    , "p18f65j15"      , "18f65j15"        }, 0xB515,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00BFF7, 0x00BFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x00BFF8, 0x00BFFD }, {       -1,       -1 }, 0x0000, "p18f65j15.inc"    , "18f65j15_g.lkr"    , 3 },
584   { PROC_CLASS_PIC16E   , "__18F65J50"    , { "pic18f65j50"    , "p18f65j50"      , "18f65j50"        }, 0xB550,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x007FF7, 0x007FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x007FF8, 0x007FFD }, {       -1,       -1 }, 0x0000, "p18f65j50.inc"    , "18f65j50_g.lkr"    , 3 },
585   { PROC_CLASS_PIC16E   , "__18F65J90"    , { "pic18f65j90"    , "p18f65j90"      , "18f65j90"        }, 0xB590,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x007FF7, 0x007FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x007FF8, 0x007FFD }, {       -1,       -1 }, 0x0000, "p18f65j90.inc"    , "18f65j90_g.lkr"    , 3 },
586   { PROC_CLASS_PIC16E   , "__18F65J94"    , { "pic18f65j94"    , "p18f65j94"      , "18f65j94"        }, 0x6594,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x007FEF, 0x007FF0, {       -1,       -1 }, {       -1,       -1 }, { 0x007FF0, 0x007FFF }, {       -1,       -1 }, 0x0000, "p18f65j94.inc"    , "18f65j94_g.lkr"    , 3 },
587   { PROC_CLASS_PIC16E   , "__18F65K22"    , { "pic18f65k22"    , "p18f65k22"      , "18f65k22"        }, 0x6522,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f65k22.inc"    , "18f65k22_g.lkr"    , 1 },
588   { PROC_CLASS_PIC16E   , "__18F65K40"    , { "pic18f65k40"    , "p18f65k40"      , "18f65k40"        }, 0xA26F,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x3103FF, 0x008000, { 0x008000, 0x30FFFF }, { 0x200000, 0x20000F }, { 0x300000, 0x30000B }, { 0x310000, 0x3103FF }, 0x0000, "p18f65k40.inc"    , "18f65k40_g.lkr"    , 1 },
589   { PROC_CLASS_PIC16E   , "__18F65K80"    , { "pic18f65k80"    , "p18f65k80"      , "18f65k80"        }, 0xC580,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f65k80.inc"    , "18f65k80_g.lkr"    , 1 },
590   { PROC_CLASS_PIC16E   , "__18F65K90"    , { "pic18f65k90"    , "p18f65k90"      , "18f65k90"        }, 0xB591,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f65k90.inc"    , "18f65k90_g.lkr"    , 1 },
591   { PROC_CLASS_PIC16E   , "__18F66J10"    , { "pic18f66j10"    , "p18f66j10"      , "18f66j10"        }, 0xB610,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFF7, 0x00FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x00FFF8, 0x00FFFD }, {       -1,       -1 }, 0x0000, "p18f66j10.inc"    , "18f66j10_g.lkr"    , 3 },
592   { PROC_CLASS_PIC16E   , "__18F66J11"    , { "pic18f66j11"    , "p18f66j11"      , "18f66j11"        }, 0xB611,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFF7, 0x00FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x00FFF8, 0x00FFFD }, {       -1,       -1 }, 0x0000, "p18f66j11.inc"    , "18f66j11_g.lkr"    , 3 },
593   { PROC_CLASS_PIC16E   , "__18F66J15"    , { "pic18f66j15"    , "p18f66j15"      , "18f66j15"        }, 0xB615,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x017FF7, 0x017FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x017FF8, 0x017FFD }, {       -1,       -1 }, 0x0000, "p18f66j15.inc"    , "18f66j15_g.lkr"    , 3 },
594   { PROC_CLASS_PIC16E   , "__18F66J16"    , { "pic18f66j16"    , "p18f66j16"      , "18f66j16"        }, 0xB616,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x017FF7, 0x017FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x017FF8, 0x017FFD }, {       -1,       -1 }, 0x0000, "p18f66j16.inc"    , "18f66j16_g.lkr"    , 3 },
595   { PROC_CLASS_PIC16E   , "__18F66J50"    , { "pic18f66j50"    , "p18f66j50"      , "18f66j50"        }, 0xB650,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFF7, 0x00FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x00FFF8, 0x00FFFD }, {       -1,       -1 }, 0x0000, "p18f66j50.inc"    , "18f66j50_g.lkr"    , 3 },
596   { PROC_CLASS_PIC16E   , "__18F66J55"    , { "pic18f66j55"    , "p18f66j55"      , "18f66j55"        }, 0xB655,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x017FF7, 0x017FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x017FF8, 0x017FFD }, {       -1,       -1 }, 0x0000, "p18f66j55.inc"    , "18f66j55_g.lkr"    , 3 },
597   { PROC_CLASS_PIC16E   , "__18F66J60"    , { "pic18f66j60"    , "p18f66j60"      , "18f66j60"        }, 0xB660,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFF7, 0x00FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x00FFF8, 0x00FFFD }, {       -1,       -1 }, 0x0000, "p18f66j60.inc"    , "18f66j60_g.lkr"    , 3 },
598   { PROC_CLASS_PIC16E   , "__18F66J65"    , { "pic18f66j65"    , "p18f66j65"      , "18f66j65"        }, 0xB665,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x017FF7, 0x017FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x017FF8, 0x017FFD }, {       -1,       -1 }, 0x0000, "p18f66j65.inc"    , "18f66j65_g.lkr"    , 3 },
599   { PROC_CLASS_PIC16E   , "__18F66J90"    , { "pic18f66j90"    , "p18f66j90"      , "18f66j90"        }, 0xB690,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFF7, 0x00FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x00FFF8, 0x00FFFF }, {       -1,       -1 }, 0x0000, "p18f66j90.inc"    , "18f66j90_g.lkr"    , 3 },
600   { PROC_CLASS_PIC16E   , "__18F66J93"    , { "pic18f66j93"    , "p18f66j93"      , "18f66j93"        }, 0x6693,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFF7, 0x00FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x00FFF8, 0x00FFFF }, {       -1,       -1 }, 0x0000, "p18f66j93.inc"    , "18f66j93_g.lkr"    , 3 },
601   { PROC_CLASS_PIC16E   , "__18F66J94"    , { "pic18f66j94"    , "p18f66j94"      , "18f66j94"        }, 0x6694,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFEF, 0x00FFF0, {       -1,       -1 }, {       -1,       -1 }, { 0x00FFF0, 0x00FFFF }, {       -1,       -1 }, 0x0000, "p18f66j94.inc"    , "18f66j94_g.lkr"    , 3 },
602   { PROC_CLASS_PIC16E   , "__18F66J99"    , { "pic18f66j99"    , "p18f66j99"      , "18f66j99"        }, 0x6699,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x017FEF, 0x017FF0, {       -1,       -1 }, {       -1,       -1 }, { 0x017FF0, 0x017FFF }, {       -1,       -1 }, 0x0000, "p18f66j99.inc"    , "18f66j99_g.lkr"    , 3 },
603   { PROC_CLASS_PIC16E   , "__18F66K22"    , { "pic18f66k22"    , "p18f66k22"      , "18f66k22"        }, 0xB622,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f66k22.inc"    , "18f66k22_g.lkr"    , 1 },
604   { PROC_CLASS_PIC16E   , "__18F66K40"    , { "pic18f66k40"    , "p18f66k40"      , "18f66k40"        }, 0x6640,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x3103FF, 0x010000, { 0x010000, 0x30FFFF }, { 0x200000, 0x20000F }, { 0x300000, 0x30000B }, { 0x310000, 0x3103FF }, 0x0000, "p18f66k40.inc"    , "18f66k40_g.lkr"    , 1 },
605   { PROC_CLASS_PIC16E   , "__18F66K80"    , { "pic18f66k80"    , "p18f66k80"      , "18f66k80"        }, 0xC680,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f66k80.inc"    , "18f66k80_g.lkr"    , 1 },
606   { PROC_CLASS_PIC16E   , "__18F66K90"    , { "pic18f66k90"    , "p18f66k90"      , "18f66k90"        }, 0xB691,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f66k90.inc"    , "18f66k90_g.lkr"    , 1 },
607   { PROC_CLASS_PIC16E   , "__18F67J10"    , { "pic18f67j10"    , "p18f67j10"      , "18f67j10"        }, 0xB710,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x01FFF7, 0x01FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x01FFF8, 0x01FFFD }, {       -1,       -1 }, 0x0000, "p18f67j10.inc"    , "18f67j10_g.lkr"    , 3 },
608   { PROC_CLASS_PIC16E   , "__18F67J11"    , { "pic18f67j11"    , "p18f67j11"      , "18f67j11"        }, 0xB711,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x01FFF7, 0x01FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x01FFF8, 0x01FFFD }, {       -1,       -1 }, 0x0000, "p18f67j11.inc"    , "18f67j11_g.lkr"    , 3 },
609   { PROC_CLASS_PIC16E   , "__18F67J50"    , { "pic18f67j50"    , "p18f67j50"      , "18f67j50"        }, 0xB750,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x01FFF7, 0x01FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x01FFF8, 0x01FFFD }, {       -1,       -1 }, 0x0000, "p18f67j50.inc"    , "18f67j50_g.lkr"    , 3 },
610   { PROC_CLASS_PIC16E   , "__18F67J60"    , { "pic18f67j60"    , "p18f67j60"      , "18f67j60"        }, 0xB760,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x01FFF7, 0x01FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x01FFF8, 0x01FFFD }, {       -1,       -1 }, 0x0000, "p18f67j60.inc"    , "18f67j60_g.lkr"    , 3 },
611   { PROC_CLASS_PIC16E   , "__18F67J90"    , { "pic18f67j90"    , "p18f67j90"      , "18f67j90"        }, 0x6790,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x01FFF7, 0x01FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x01FFF8, 0x01FFFF }, {       -1,       -1 }, 0x0000, "p18f67j90.inc"    , "18f67j90_g.lkr"    , 3 },
612   { PROC_CLASS_PIC16E   , "__18F67J93"    , { "pic18f67j93"    , "p18f67j93"      , "18f67j93"        }, 0x6793,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x01FFF7, 0x01FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x01FFF8, 0x01FFFF }, {       -1,       -1 }, 0x0000, "p18f67j93.inc"    , "18f67j93_g.lkr"    , 3 },
613   { PROC_CLASS_PIC16E   , "__18F67J94"    , { "pic18f67j94"    , "p18f67j94"      , "18f67j94"        }, 0x6794,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x01FFEF, 0x01FFF0, {       -1,       -1 }, {       -1,       -1 }, { 0x01FFF0, 0x01FFFF }, {       -1,       -1 }, 0x0000, "p18f67j94.inc"    , "18f67j94_g.lkr"    , 3 },
614   { PROC_CLASS_PIC16E   , "__18F67K22"    , { "pic18f67k22"    , "p18f67k22"      , "18f67k22"        }, 0x6722,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x020000, { 0x020000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f67k22.inc"    , "18f67k22_g.lkr"    , 1 },
615   { PROC_CLASS_PIC16E   , "__18F67K40"    , { "pic18f67k40"    , "p18f67k40"      , "18f67k40"        }, 0x6740,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x3103FF, 0x020000, { 0x020000, 0x30FFFF }, { 0x200000, 0x20000F }, { 0x300000, 0x30000B }, { 0x310000, 0x3103FF }, 0x0000, "p18f67k40.inc"    , "18f67k40_g.lkr"    , 1 },
616   { PROC_CLASS_PIC16E   , "__18F67K90"    , { "pic18f67k90"    , "p18f67k90"      , "18f67k90"        }, 0xB790,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x020000, { 0x020000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f67k90.inc"    , "18f67k90_g.lkr"    , 1 },
617   { PROC_CLASS_PIC16E   , "__18F83J11"    , { "pic18f83j11"    , "p18f83j11"      , "18f83j11"        }, 0x8311,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x001FF7, 0x001FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x001FF8, 0x001FFD }, {       -1,       -1 }, 0x0000, "p18f83j11.inc"    , "18f83j11_g.lkr"    , 3 },
618   { PROC_CLASS_PIC16E   , "__18F83J90"    , { "pic18f83j90"    , "p18f83j90"      , "18f83j90"        }, 0xC390,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x001FF7, 0x001FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x001FF8, 0x001FFD }, {       -1,       -1 }, 0x0000, "p18f83j90.inc"    , "18f83j90_g.lkr"    , 3 },
619   { PROC_CLASS_PIC16E   , "__18F84J11"    , { "pic18f84j11"    , "p18f84j11"      , "18f84j11"        }, 0x8411,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FF7, 0x003FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x003FF8, 0x003FFD }, {       -1,       -1 }, 0x0000, "p18f84j11.inc"    , "18f84j11_g.lkr"    , 3 },
620   { PROC_CLASS_PIC16E   , "__18F84J15"    , { "pic18f84j15"    , "p18f84j15"      , "18f84j15"        }, 0xC415,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 },     -1,       -1,       -1, {       -1,       -1 }, {       -1,       -1 }, {       -1,       -1 }, {       -1,       -1 }, 0x0000, "p18f84j15.inc"    , "18f84j15_g.lkr"    , 3 }, /* not documented by Microchip, added in svn rev. #378, see http://osdir.com/ml/hardware.microcontrollers.gnupic/2008-05/msg00013.html */
621   { PROC_CLASS_PIC16E   , "__18F84J90"    , { "pic18f84j90"    , "p18f84j90"      , "18f84j90"        }, 0xC490,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FF7, 0x003FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x003FF8, 0x003FFD }, {       -1,       -1 }, 0x0000, "p18f84j90.inc"    , "18f84j90_g.lkr"    , 3 },
622   { PROC_CLASS_PIC16E   , "__18F85J10"    , { "pic18f85j10"    , "p18f85j10"      , "18f85j10"        }, 0xC510,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x007FF7, 0x007FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x007FF8, 0x007FFD }, {       -1,       -1 }, 0x0000, "p18f85j10.inc"    , "18f85j10_g.lkr"    , 3 },
623   { PROC_CLASS_PIC16E   , "__18F85J11"    , { "pic18f85j11"    , "p18f85j11"      , "18f85j11"        }, 0x8511,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x007FF7, 0x007FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x007FF8, 0x007FFD }, {       -1,       -1 }, 0x0000, "p18f85j11.inc"    , "18f85j11_g.lkr"    , 3 },
624   { PROC_CLASS_PIC16E   , "__18F85J15"    , { "pic18f85j15"    , "p18f85j15"      , "18f85j15"        }, 0xC515,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00BFF7, 0x00BFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x00BFF8, 0x00BFFD }, {       -1,       -1 }, 0x0000, "p18f85j15.inc"    , "18f85j15_g.lkr"    , 3 },
625   { PROC_CLASS_PIC16E   , "__18F85J50"    , { "pic18f85j50"    , "p18f85j50"      , "18f85j50"        }, 0xC550,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x007FF7, 0x007FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x007FF8, 0x007FFD }, {       -1,       -1 }, 0x0000, "p18f85j50.inc"    , "18f85j50_g.lkr"    , 3 },
626   { PROC_CLASS_PIC16E   , "__18F85J90"    , { "pic18f85j90"    , "p18f85j90"      , "18f85j90"        }, 0xC590,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x007FF7, 0x007FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x007FF8, 0x007FFD }, {       -1,       -1 }, 0x0000, "p18f85j90.inc"    , "18f85j90_g.lkr"    , 3 },
627   { PROC_CLASS_PIC16E   , "__18F85J94"    , { "pic18f85j94"    , "p18f85j94"      , "18f85j94"        }, 0x8594,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x007FEF, 0x007FF0, {       -1,       -1 }, {       -1,       -1 }, { 0x007FF0, 0x007FFF }, {       -1,       -1 }, 0x0000, "p18f85j94.inc"    , "18f85j94_g.lkr"    , 3 },
628   { PROC_CLASS_PIC16E   , "__18F85K22"    , { "pic18f85k22"    , "p18f85k22"      , "18f85k22"        }, 0x8522,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f85k22.inc"    , "18f85k22_g.lkr"    , 1 },
629   { PROC_CLASS_PIC16E   , "__18F85K90"    , { "pic18f85k90"    , "p18f85k90"      , "18f85k90"        }, 0xC591,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f85k90.inc"    , "18f85k90_g.lkr"    , 1 },
630   { PROC_CLASS_PIC16E   , "__18F86J10"    , { "pic18f86j10"    , "p18f86j10"      , "18f86j10"        }, 0xC610,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFF7, 0x00FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x00FFF8, 0x00FFFD }, {       -1,       -1 }, 0x0000, "p18f86j10.inc"    , "18f86j10_g.lkr"    , 3 },
631   { PROC_CLASS_PIC16E   , "__18F86J11"    , { "pic18f86j11"    , "p18f86j11"      , "18f86j11"        }, 0xC611,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFF7, 0x00FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x00FFF8, 0x00FFFD }, {       -1,       -1 }, 0x0000, "p18f86j11.inc"    , "18f86j11_g.lkr"    , 3 },
632   { PROC_CLASS_PIC16E   , "__18F86J15"    , { "pic18f86j15"    , "p18f86j15"      , "18f86j15"        }, 0xC615,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x017FF7, 0x017FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x017FF8, 0x017FFD }, {       -1,       -1 }, 0x0000, "p18f86j15.inc"    , "18f86j15_g.lkr"    , 3 },
633   { PROC_CLASS_PIC16E   , "__18F86J16"    , { "pic18f86j16"    , "p18f86j16"      , "18f86j16"        }, 0xC616,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x017FF7, 0x017FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x017FF8, 0x017FFD }, {       -1,       -1 }, 0x0000, "p18f86j16.inc"    , "18f86j16_g.lkr"    , 3 },
634   { PROC_CLASS_PIC16E   , "__18F86J50"    , { "pic18f86j50"    , "p18f86j50"      , "18f86j50"        }, 0xC650,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFF7, 0x00FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x00FFF8, 0x00FFFD }, {       -1,       -1 }, 0x0000, "p18f86j50.inc"    , "18f86j50_g.lkr"    , 3 },
635   { PROC_CLASS_PIC16E   , "__18F86J55"    , { "pic18f86j55"    , "p18f86j55"      , "18f86j55"        }, 0xC655,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x017FF7, 0x017FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x017FF8, 0x017FFD }, {       -1,       -1 }, 0x0000, "p18f86j55.inc"    , "18f86j55_g.lkr"    , 3 },
636   { PROC_CLASS_PIC16E   , "__18F86J60"    , { "pic18f86j60"    , "p18f86j60"      , "18f86j60"        }, 0xC660,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFF7, 0x00FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x00FFF8, 0x00FFFD }, {       -1,       -1 }, 0x0000, "p18f86j60.inc"    , "18f86j60_g.lkr"    , 3 },
637   { PROC_CLASS_PIC16E   , "__18F86J65"    , { "pic18f86j65"    , "p18f86j65"      , "18f86j65"        }, 0xC665,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x017FF7, 0x017FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x017FF8, 0x017FFD }, {       -1,       -1 }, 0x0000, "p18f86j65.inc"    , "18f86j65_g.lkr"    , 3 },
638   { PROC_CLASS_PIC16E   , "__18F86J72"    , { "pic18f86j72"    , "p18f86j72"      , "18f86j72"        }, 0x8672,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFF7, 0x00FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x00FFF8, 0x00FFFF }, {       -1,       -1 }, 0x0000, "p18f86j72.inc"    , "18f86j72_g.lkr"    , 3 },
639   { PROC_CLASS_PIC16E   , "__18F86J90"    , { "pic18f86j90"    , "p18f86j90"      , "18f86j90"        }, 0x8690,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFF7, 0x00FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x00FFF8, 0x00FFFF }, {       -1,       -1 }, 0x0000, "p18f86j90.inc"    , "18f86j90_g.lkr"    , 3 },
640   { PROC_CLASS_PIC16E   , "__18F86J93"    , { "pic18f86j93"    , "p18f86j93"      , "18f86j93"        }, 0x8693,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFF7, 0x00FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x00FFF8, 0x00FFFF }, {       -1,       -1 }, 0x0000, "p18f86j93.inc"    , "18f86j93_g.lkr"    , 3 },
641   { PROC_CLASS_PIC16E   , "__18F86J94"    , { "pic18f86j94"    , "p18f86j94"      , "18f86j94"        }, 0x8694,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFEF, 0x00FFF0, {       -1,       -1 }, {       -1,       -1 }, { 0x00FFF0, 0x00FFFF }, {       -1,       -1 }, 0x0000, "p18f86j94.inc"    , "18f86j94_g.lkr"    , 3 },
642   { PROC_CLASS_PIC16E   , "__18F86J99"    , { "pic18f86j99"    , "p18f86j99"      , "18f86j99"        }, 0x8699,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x017FEF, 0x017FF0, {       -1,       -1 }, {       -1,       -1 }, { 0x017FF0, 0x017FFF }, {       -1,       -1 }, 0x0000, "p18f86j99.inc"    , "18f86j99_g.lkr"    , 3 },
643   { PROC_CLASS_PIC16E   , "__18F86K22"    , { "pic18f86k22"    , "p18f86k22"      , "18f86k22"        }, 0xC622,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f86k22.inc"    , "18f86k22_g.lkr"    , 1 },
644   { PROC_CLASS_PIC16E   , "__18F86K90"    , { "pic18f86k90"    , "p18f86k90"      , "18f86k90"        }, 0xC690,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f86k90.inc"    , "18f86k90_g.lkr"    , 1 },
645   { PROC_CLASS_PIC16E   , "__18F87J10"    , { "pic18f87j10"    , "p18f87j10"      , "18f87j10"        }, 0xC710,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x01FFF7, 0x01FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x01FFF8, 0x01FFFD }, {       -1,       -1 }, 0x0000, "p18f87j10.inc"    , "18f87j10_g.lkr"    , 3 },
646   { PROC_CLASS_PIC16E   , "__18F87J11"    , { "pic18f87j11"    , "p18f87j11"      , "18f87j11"        }, 0xC711,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x01FFF7, 0x01FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x01FFF8, 0x01FFFD }, {       -1,       -1 }, 0x0000, "p18f87j11.inc"    , "18f87j11_g.lkr"    , 3 },
647   { PROC_CLASS_PIC16E   , "__18F87J50"    , { "pic18f87j50"    , "p18f87j50"      , "18f87j50"        }, 0xC750,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x01FFF7, 0x01FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x01FFF8, 0x01FFFD }, {       -1,       -1 }, 0x0000, "p18f87j50.inc"    , "18f87j50_g.lkr"    , 3 },
648   { PROC_CLASS_PIC16E   , "__18F87J60"    , { "pic18f87j60"    , "p18f87j60"      , "18f87j60"        }, 0xC760,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x01FFF7, 0x01FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x01FFF8, 0x01FFFD }, {       -1,       -1 }, 0x0000, "p18f87j60.inc"    , "18f87j60_g.lkr"    , 3 },
649   { PROC_CLASS_PIC16E   , "__18F87J72"    , { "pic18f87j72"    , "p18f87j72"      , "18f87j72"        }, 0x8772,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x01FFF7, 0x01FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x01FFF8, 0x01FFFF }, {       -1,       -1 }, 0x0000, "p18f87j72.inc"    , "18f87j72_g.lkr"    , 3 },
650   { PROC_CLASS_PIC16E   , "__18F87J90"    , { "pic18f87j90"    , "p18f87j90"      , "18f87j90"        }, 0x8790,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x01FFF7, 0x01FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x01FFF8, 0x01FFFF }, {       -1,       -1 }, 0x0000, "p18f87j90.inc"    , "18f87j90_g.lkr"    , 3 },
651   { PROC_CLASS_PIC16E   , "__18F87J93"    , { "pic18f87j93"    , "p18f87j93"      , "18f87j93"        }, 0x8793,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x01FFF7, 0x01FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x01FFF8, 0x01FFFF }, {       -1,       -1 }, 0x0000, "p18f87j93.inc"    , "18f87j93_g.lkr"    , 3 },
652   { PROC_CLASS_PIC16E   , "__18F87J94"    , { "pic18f87j94"    , "p18f87j94"      , "18f87j94"        }, 0x8794,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x01FFEF, 0x01FFF0, {       -1,       -1 }, {       -1,       -1 }, { 0x01FFF0, 0x01FFFF }, {       -1,       -1 }, 0x0000, "p18f87j94.inc"    , "18f87j94_g.lkr"    , 3 },
653   { PROC_CLASS_PIC16E   , "__18F87K22"    , { "pic18f87k22"    , "p18f87k22"      , "18f87k22"        }, 0x8722,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x020000, { 0x020000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f87k22.inc"    , "18f87k22_g.lkr"    , 1 },
654   { PROC_CLASS_PIC16E   , "__18F87K90"    , { "pic18f87k90"    , "p18f87k90"      , "18f87k90"        }, 0xC790,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x020000, { 0x020000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f87k90.inc"    , "18f87k90_g.lkr"    , 1 },
655   { PROC_CLASS_PIC16E   , "__18F95J94"    , { "pic18f95j94"    , "p18f95j94"      , "18f95j94"        }, 0x9594,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x007FEF, 0x007FF0, {       -1,       -1 }, {       -1,       -1 }, { 0x007FF0, 0x007FFF }, {       -1,       -1 }, 0x0000, "p18f95j94.inc"    , "18f95j94_g.lkr"    , 3 },
656   { PROC_CLASS_PIC16E   , "__18F96J60"    , { "pic18f96j60"    , "p18f96j60"      , "18f96j60"        }, 0xD660,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFF7, 0x00FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x00FFF8, 0x00FFFD }, {       -1,       -1 }, 0x0000, "p18f96j60.inc"    , "18f96j60_g.lkr"    , 3 },
657   { PROC_CLASS_PIC16E   , "__18F96J65"    , { "pic18f96j65"    , "p18f96j65"      , "18f96j65"        }, 0xD665,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x017FF7, 0x017FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x017FF8, 0x017FFD }, {       -1,       -1 }, 0x0000, "p18f96j65.inc"    , "18f96j65_g.lkr"    , 3 },
658   { PROC_CLASS_PIC16E   , "__18F96J94"    , { "pic18f96j94"    , "p18f96j94"      , "18f96j94"        }, 0x9694,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFEF, 0x00FFF0, {       -1,       -1 }, {       -1,       -1 }, { 0x00FFF0, 0x00FFFF }, {       -1,       -1 }, 0x0000, "p18f96j94.inc"    , "18f96j94_g.lkr"    , 3 },
659   { PROC_CLASS_PIC16E   , "__18F96J99"    , { "pic18f96j99"    , "p18f96j99"      , "18f96j99"        }, 0x9699,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x017FEF, 0x017FF0, {       -1,       -1 }, {       -1,       -1 }, { 0x017FF0, 0x017FFF }, {       -1,       -1 }, 0x0000, "p18f96j99.inc"    , "18f96j99_g.lkr"    , 3 },
660   { PROC_CLASS_PIC16E   , "__18F97J60"    , { "pic18f97j60"    , "p18f97j60"      , "18f97j60"        }, 0xD760,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x01FFF7, 0x01FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x01FFF8, 0x01FFFD }, {       -1,       -1 }, 0x0000, "p18f97j60.inc"    , "18f97j60_g.lkr"    , 3 },
661   { PROC_CLASS_PIC16E   , "__18F97J94"    , { "pic18f97j94"    , "p18f97j94"      , "18f97j94"        }, 0x9794,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x01FFEF, 0x01FFF0, {       -1,       -1 }, {       -1,       -1 }, { 0x01FFF0, 0x01FFFF }, {       -1,       -1 }, 0x0000, "p18f97j94.inc"    , "18f97j94_g.lkr"    , 3 },
662   { PROC_CLASS_PIC16E   , "__18F242"      , { "pic18f242"      , "p18f242"        , "18f242"          }, 0x242F,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f242.inc"      , "18f242_g.lkr"      , 0 },
663   { PROC_CLASS_PIC16E   , "__18F248"      , { "pic18f248"      , "p18f248"        , "18f248"          }, 0x8248,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f248.inc"      , "18f248_g.lkr"      , 0 },
664   { PROC_CLASS_PIC16E   , "__18F252"      , { "pic18f252"      , "p18f252"        , "18f252"          }, 0x252F,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f252.inc"      , "18f252_g.lkr"      , 0 },
665   { PROC_CLASS_PIC16E   , "__18F258"      , { "pic18f258"      , "p18f258"        , "18f258"          }, 0x8258,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f258.inc"      , "18f258_g.lkr"      , 0 },
666   { PROC_CLASS_PIC16E   , "__18F442"      , { "pic18f442"      , "p18f442"        , "18f442"          }, 0x442F,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f442.inc"      , "18f442_g.lkr"      , 0 },
667   { PROC_CLASS_PIC16E   , "__18F448"      , { "pic18f448"      , "p18f448"        , "18f448"          }, 0x8448,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f448.inc"      , "18f448_g.lkr"      , 0 },
668   { PROC_CLASS_PIC16E   , "__18F452"      , { "pic18f452"      , "p18f452"        , "18f452"          }, 0x452F,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f452.inc"      , "18f452_g.lkr"      , 0 },
669   { PROC_CLASS_PIC16E   , "__18F458"      , { "pic18f458"      , "p18f458"        , "18f458"          }, 0x8458,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f458.inc"      , "18f458_g.lkr"      , 0 },
670   { PROC_CLASS_PIC16E   , "__18F1220"     , { "pic18f1220"     , "p18f1220"       , "18f1220"         }, 0xA122,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x001000, { 0x001000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f1220.inc"     , "18f1220_g.lkr"     , 0 },
671   { PROC_CLASS_PIC16E   , "__18F1230"     , { "pic18f1230"     , "p18f1230"       , "18f1230"         }, 0x1230,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF0007F, 0x001000, { 0x001000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF0007F }, 0x0000, "p18f1230.inc"     , "18f1230_g.lkr"     , 1 },
672   { PROC_CLASS_PIC16E   , "__18F1320"     , { "pic18f1320"     , "p18f1320"       , "18f1320"         }, 0xA132,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x002000, { 0x002000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f1320.inc"     , "18f1320_g.lkr"     , 0 },
673   { PROC_CLASS_PIC16E   , "__18F1330"     , { "pic18f1330"     , "p18f1330"       , "18f1330"         }, 0x1330,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF0007F, 0x002000, { 0x002000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF0007F }, 0x0000, "p18f1330.inc"     , "18f1330_g.lkr"     , 1 },
674   { PROC_CLASS_PIC16E   , "__18F2220"     , { "pic18f2220"     , "p18f2220"       , "18f2220"         }, 0xA222,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x001000, { 0x001000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f2220.inc"     , "18f2220_g.lkr"     , 0 },
675   { PROC_CLASS_PIC16E   , "__18F2221"     , { "pic18f2221"     , "p18f2221"       , "18f2221"         }, 0x2221,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x001000, { 0x001000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f2221.inc"     , "18f2221_g.lkr"     , 1 },
676   { PROC_CLASS_PIC16E   , "__18F2320"     , { "pic18f2320"     , "p18f2320"       , "18f2320"         }, 0xA232,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x002000, { 0x002000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f2320.inc"     , "18f2320_g.lkr"     , 0 },
677   { PROC_CLASS_PIC16E   , "__18F2321"     , { "pic18f2321"     , "p18f2321"       , "18f2321"         }, 0x2321,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x002000, { 0x002000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f2321.inc"     , "18f2321_g.lkr"     , 1 },
678   { PROC_CLASS_PIC16E   , "__18F2331"     , { "pic18f2331"     , "p18f2331"       , "18f2331"         }, 0x2331,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x002000, { 0x002000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f2331.inc"     , "18f2331_g.lkr"     , 0 },
679   { PROC_CLASS_PIC16E   , "__18F2410"     , { "pic18f2410"     , "p18f2410"       , "18f2410"         }, 0x2410,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18f2410.inc"     , "18f2410_g.lkr"     , 1 },
680   { PROC_CLASS_PIC16E   , "__18F2420"     , { "pic18f2420"     , "p18f2420"       , "18f2420"         }, 0x2420,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f2420.inc"     , "18f2420_g.lkr"     , 1 },
681   { PROC_CLASS_PIC16E   , "__18F2423"     , { "pic18f2423"     , "p18f2423"       , "18f2423"         }, 0x2423,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f2423.inc"     , "18f2423_g.lkr"     , 1 },
682   { PROC_CLASS_PIC16E   , "__18F2431"     , { "pic18f2431"     , "p18f2431"       , "18f2431"         }, 0x2431,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f2431.inc"     , "18f2431_g.lkr"     , 0 },
683   { PROC_CLASS_PIC16E   , "__18F2439"     , { "pic18f2439"     , "p18f2439"       , "18f2439"         }, 0x2439,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x003000, { 0x003000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f2439.inc"     , "18f2439_g.lkr"     , 0 },
684   { PROC_CLASS_PIC16E   , "__18F2450"     , { "pic18f2450"     , "p18f2450"       , "18f2450"         }, 0x2450,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18f2450.inc"     , "18f2450_g.lkr"     , 1 },
685   { PROC_CLASS_PIC16E   , "__18F2455"     , { "pic18f2455"     , "p18f2455"       , "18f2455"         }, 0x2455,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x006000, { 0x006000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f2455.inc"     , "18f2455_g.lkr"     , 1 },
686   { PROC_CLASS_PIC16E   , "__18F2458"     , { "pic18f2458"     , "p18f2458"       , "18f2458"         }, 0x2458,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x006000, { 0x006000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f2458.inc"     , "18f2458_g.lkr"     , 1 },
687   { PROC_CLASS_PIC16E   , "__18F2480"     , { "pic18f2480"     , "p18f2480"       , "18f2480"         }, 0x2480,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f2480.inc"     , "18f2480_g.lkr"     , 1 },
688   { PROC_CLASS_PIC16E   , "__18F2510"     , { "pic18f2510"     , "p18f2510"       , "18f2510"         }, 0x2510,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0x007FFF, 0x008000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18f2510.inc"     , "18f2510_g.lkr"     , 1 },
689   { PROC_CLASS_PIC16E   , "__18F2515"     , { "pic18f2515"     , "p18f2515"       , "18f2515"         }, 0x2515,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0x00BFFF, 0x00C000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18f2515.inc"     , "18f2515_g.lkr"     , 1 },
690   { PROC_CLASS_PIC16E   , "__18F2520"     , { "pic18f2520"     , "p18f2520"       , "18f2520"         }, 0x2520,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f2520.inc"     , "18f2520_g.lkr"     , 1 },
691   { PROC_CLASS_PIC16E   , "__18F2523"     , { "pic18f2523"     , "p18f2523"       , "18f2523"         }, 0x2523,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f2523.inc"     , "18f2523_g.lkr"     , 1 },
692   { PROC_CLASS_PIC16E   , "__18F2525"     , { "pic18f2525"     , "p18f2525"       , "18f2525"         }, 0x2525,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x00C000, { 0x00C000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f2525.inc"     , "18f2525_g.lkr"     , 1 },
693   { PROC_CLASS_PIC16E   , "__18F2539"     , { "pic18f2539"     , "p18f2539"       , "18f2539"         }, 0x2539,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x006000, { 0x006000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f2539.inc"     , "18f2539_g.lkr"     , 0 },
694   { PROC_CLASS_PIC16E   , "__18F2550"     , { "pic18f2550"     , "p18f2550"       , "18f2550"         }, 0x2550,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f2550.inc"     , "18f2550_g.lkr"     , 1 },
695   { PROC_CLASS_PIC16E   , "__18F2553"     , { "pic18f2553"     , "p18f2553"       , "18f2553"         }, 0x2553,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f2553.inc"     , "18f2553_g.lkr"     , 1 },
696   { PROC_CLASS_PIC16E   , "__18F2580"     , { "pic18f2580"     , "p18f2580"       , "18f2580"         }, 0x2580,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f2580.inc"     , "18f2580_g.lkr"     , 1 },
697   { PROC_CLASS_PIC16E   , "__18F2585"     , { "pic18f2585"     , "p18f2585"       , "18f2585"         }, 0x2585,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x00C000, { 0x00C000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f2585.inc"     , "18f2585_g.lkr"     , 1 },
698   { PROC_CLASS_PIC16E   , "__18F2610"     , { "pic18f2610"     , "p18f2610"       , "18f2610"         }, 0x2610,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFFF, 0x010000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18f2610.inc"     , "18f2610_g.lkr"     , 1 },
699   { PROC_CLASS_PIC16E   , "__18F2620"     , { "pic18f2620"     , "p18f2620"       , "18f2620"         }, 0x2620,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f2620.inc"     , "18f2620_g.lkr"     , 1 },
700   { PROC_CLASS_PIC16E   , "__18F2680"     , { "pic18f2680"     , "p18f2680"       , "18f2680"         }, 0x2680,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f2680.inc"     , "18f2680_g.lkr"     , 1 },
701   { PROC_CLASS_PIC16E   , "__18F2681"     , { "pic18f2681"     , "p18f2681"       , "18f2681"         }, 0x2681,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 },     -1,       -1,       -1, {       -1,       -1 }, { 0x200000, 0x200007 }, {       -1,       -1 }, { 0xF00000, 0xF003FF }, 0x0000, "p18f2681.inc"     , "18f2681.lkr"       , 1 }, /* not documented by Microchip, added in svn rev. #317, see http://osdir.com/ml/hardware.microcontrollers.gnupic/2008-05/msg00013.html */
702   { PROC_CLASS_PIC16E   , "__18F2682"     , { "pic18f2682"     , "p18f2682"       , "18f2682"         }, 0x2682,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x014000, { 0x014000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f2682.inc"     , "18f2682_g.lkr"     , 1 },
703   { PROC_CLASS_PIC16E   , "__18F2685"     , { "pic18f2685"     , "p18f2685"       , "18f2685"         }, 0x2685,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x018000, { 0x018000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f2685.inc"     , "18f2685_g.lkr"     , 1 },
704   { PROC_CLASS_PIC16E   , "__18F4220"     , { "pic18f4220"     , "p18f4220"       , "18f4220"         }, 0xA422,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x001000, { 0x001000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f4220.inc"     , "18f4220_g.lkr"     , 0 },
705   { PROC_CLASS_PIC16E   , "__18F4221"     , { "pic18f4221"     , "p18f4221"       , "18f4221"         }, 0x4221,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x001000, { 0x001000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f4221.inc"     , "18f4221_g.lkr"     , 1 },
706   { PROC_CLASS_PIC16E   , "__18F4320"     , { "pic18f4320"     , "p18f4320"       , "18f4320"         }, 0xA432,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x002000, { 0x002000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f4320.inc"     , "18f4320_g.lkr"     , 0 },
707   { PROC_CLASS_PIC16E   , "__18F4321"     , { "pic18f4321"     , "p18f4321"       , "18f4321"         }, 0x4321,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x002000, { 0x002000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f4321.inc"     , "18f4321_g.lkr"     , 1 },
708   { PROC_CLASS_PIC16E   , "__18F4331"     , { "pic18f4331"     , "p18f4331"       , "18f4331"         }, 0x4331,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x002000, { 0x002000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f4331.inc"     , "18f4331_g.lkr"     , 0 },
709   { PROC_CLASS_PIC16E   , "__18F4410"     , { "pic18f4410"     , "p18f4410"       , "18f4410"         }, 0x4410,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18f4410.inc"     , "18f4410_g.lkr"     , 1 },
710   { PROC_CLASS_PIC16E   , "__18F4420"     , { "pic18f4420"     , "p18f4420"       , "18f4420"         }, 0x4420,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f4420.inc"     , "18f4420_g.lkr"     , 1 },
711   { PROC_CLASS_PIC16E   , "__18F4423"     , { "pic18f4423"     , "p18f4423"       , "18f4423"         }, 0x4423,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f4423.inc"     , "18f4423_g.lkr"     , 1 },
712   { PROC_CLASS_PIC16E   , "__18F4431"     , { "pic18f4431"     , "p18f4431"       , "18f4431"         }, 0x4431,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f4431.inc"     , "18f4431_g.lkr"     , 0 },
713   { PROC_CLASS_PIC16E   , "__18F4439"     , { "pic18f4439"     , "p18f4439"       , "18f4439"         }, 0x4439,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x003000, { 0x003000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f4439.inc"     , "18f4439_g.lkr"     , 0 },
714   { PROC_CLASS_PIC16E   , "__18F4450"     , { "pic18f4450"     , "p18f4450"       , "18f4450"         }, 0x4450,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18f4450.inc"     , "18f4450_g.lkr"     , 1 },
715   { PROC_CLASS_PIC16E   , "__18F4455"     , { "pic18f4455"     , "p18f4455"       , "18f4455"         }, 0x4455,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x006000, { 0x006000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f4455.inc"     , "18f4455_g.lkr"     , 1 },
716   { PROC_CLASS_PIC16E   , "__18F4458"     , { "pic18f4458"     , "p18f4458"       , "18f4458"         }, 0x4458,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x006000, { 0x006000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f4458.inc"     , "18f4458_g.lkr"     , 1 },
717   { PROC_CLASS_PIC16E   , "__18F4480"     , { "pic18f4480"     , "p18f4480"       , "18f4480"         }, 0x4480,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f4480.inc"     , "18f4480_g.lkr"     , 1 },
718   { PROC_CLASS_PIC16E   , "__18F4510"     , { "pic18f4510"     , "p18f4510"       , "18f4510"         }, 0x4510,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0x007FFF, 0x008000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18f4510.inc"     , "18f4510_g.lkr"     , 1 },
719   { PROC_CLASS_PIC16E   , "__18F4515"     , { "pic18f4515"     , "p18f4515"       , "18f4515"         }, 0x4515,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0x00BFFF, 0x00C000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18f4515.inc"     , "18f4515_g.lkr"     , 1 },
720   { PROC_CLASS_PIC16E   , "__18F4520"     , { "pic18f4520"     , "p18f4520"       , "18f4520"         }, 0x4520,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f4520.inc"     , "18f4520_g.lkr"     , 1 },
721   { PROC_CLASS_PIC16E   , "__18F4523"     , { "pic18f4523"     , "p18f4523"       , "18f4523"         }, 0x4523,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f4523.inc"     , "18f4523_g.lkr"     , 1 },
722   { PROC_CLASS_PIC16E   , "__18F4525"     , { "pic18f4525"     , "p18f4525"       , "18f4525"         }, 0x4525,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x00C000, { 0x00C000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f4525.inc"     , "18f4525_g.lkr"     , 1 },
723   { PROC_CLASS_PIC16E   , "__18F4539"     , { "pic18f4539"     , "p18f4539"       , "18f4539"         }, 0x4539,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x006000, { 0x006000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f4539.inc"     , "18f4539_g.lkr"     , 0 },
724   { PROC_CLASS_PIC16E   , "__18F4550"     , { "pic18f4550"     , "p18f4550"       , "18f4550"         }, 0x4550,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f4550.inc"     , "18f4550_g.lkr"     , 1 },
725   { PROC_CLASS_PIC16E   , "__18F4553"     , { "pic18f4553"     , "p18f4553"       , "18f4553"         }, 0x4553,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f4553.inc"     , "18f4553_g.lkr"     , 1 },
726   { PROC_CLASS_PIC16E   , "__18F4580"     , { "pic18f4580"     , "p18f4580"       , "18f4580"         }, 0x4580,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18f4580.inc"     , "18f4580_g.lkr"     , 1 },
727   { PROC_CLASS_PIC16E   , "__18F4585"     , { "pic18f4585"     , "p18f4585"       , "18f4585"         }, 0x4585,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x00C000, { 0x00C000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f4585.inc"     , "18f4585_g.lkr"     , 1 },
728   { PROC_CLASS_PIC16E   , "__18F4610"     , { "pic18f4610"     , "p18f4610"       , "18f4610"         }, 0x4610,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFFF, 0x010000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18f4610.inc"     , "18f4610_g.lkr"     , 1 },
729   { PROC_CLASS_PIC16E   , "__18F4620"     , { "pic18f4620"     , "p18f4620"       , "18f4620"         }, 0x4620,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f4620.inc"     , "18f4620_g.lkr"     , 1 },
730   { PROC_CLASS_PIC16E   , "__18F4680"     , { "pic18f4680"     , "p18f4680"       , "18f4680"         }, 0x4680,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f4680.inc"     , "18f4680_g.lkr"     , 1 },
731   { PROC_CLASS_PIC16E   , "__18F4681"     , { "pic18f4681"     , "p18f4681"       , "18f4681"         }, 0x4681,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 },     -1,       -1,       -1, {       -1,       -1 }, { 0x200000, 0x200007 }, {       -1,       -1 }, { 0xF00000, 0xF003FF }, 0x0000, "p18f4681.inc"     , "18f4681.lkr"       , 1 }, /* not documented by Microchip, added in svn rev. #317, see http://osdir.com/ml/hardware.microcontrollers.gnupic/2008-05/msg00013.html */
732   { PROC_CLASS_PIC16E   , "__18F4682"     , { "pic18f4682"     , "p18f4682"       , "18f4682"         }, 0x4682,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x014000, { 0x014000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f4682.inc"     , "18f4682_g.lkr"     , 1 },
733   { PROC_CLASS_PIC16E   , "__18F4685"     , { "pic18f4685"     , "p18f4685"       , "18f4685"         }, 0x4685,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x018000, { 0x018000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f4685.inc"     , "18f4685_g.lkr"     , 1 },
734   { PROC_CLASS_PIC16E   , "__18F6310"     , { "pic18f6310"     , "p18f6310"       , "18f6310"         }, 0x6310,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18f6310.inc"     , "18f6310_g.lkr"     , 1 },
735   { PROC_CLASS_PIC16E   , "__18F6390"     , { "pic18f6390"     , "p18f6390"       , "18f6390"         }, 0x6390,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18f6390.inc"     , "18f6390_g.lkr"     , 1 },
736   { PROC_CLASS_PIC16E   , "__18F6393"     , { "pic18f6393"     , "p18f6393"       , "18f6393"         }, 0x6393,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18f6393.inc"     , "18f6393_g.lkr"     , 1 },
737   { PROC_CLASS_PIC16E   , "__18F6410"     , { "pic18f6410"     , "p18f6410"       , "18f6410"         }, 0x6410,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18f6410.inc"     , "18f6410_g.lkr"     , 1 },
738   { PROC_CLASS_PIC16E   , "__18F6490"     , { "pic18f6490"     , "p18f6490"       , "18f6490"         }, 0x6490,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18f6490.inc"     , "18f6490_g.lkr"     , 1 },
739   { PROC_CLASS_PIC16E   , "__18F6493"     , { "pic18f6493"     , "p18f6493"       , "18f6493"         }, 0x6493,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18f6493.inc"     , "18f6493_g.lkr"     , 1 },
740   { PROC_CLASS_PIC16E   , "__18F6520"     , { "pic18f6520"     , "p18f6520"       , "18f6520"         }, 0xA652,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f6520.inc"     , "18f6520_g.lkr"     , 0 },
741   { PROC_CLASS_PIC16E   , "__18F6525"     , { "pic18f6525"     , "p18f6525"       , "18f6525"         }, 0x6525,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x00C000, { 0x00C000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f6525.inc"     , "18f6525_g.lkr"     , 0 },
742   { PROC_CLASS_PIC16E   , "__18F6527"     , { "pic18f6527"     , "p18f6527"       , "18f6527"         }, 0x6527,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x00C000, { 0x00C000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f6527.inc"     , "18f6527_g.lkr"     , 1 },
743   { PROC_CLASS_PIC16E   , "__18F6585"     , { "pic18f6585"     , "p18f6585"       , "18f6585"         }, 0x6585,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x00C000, { 0x00C000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f6585.inc"     , "18f6585_g.lkr"     , 0 },
744   { PROC_CLASS_PIC16E   , "__18F6620"     , { "pic18f6620"     , "p18f6620"       , "18f6620"         }, 0xA662,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f6620.inc"     , "18f6620_g.lkr"     , 0 },
745   { PROC_CLASS_PIC16E   , "__18F6621"     , { "pic18f6621"     , "p18f6621"       , "18f6621"         }, 0xA621,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f6621.inc"     , "18f6621_g.lkr"     , 0 },
746   { PROC_CLASS_PIC16E   , "__18F6622"     , { "pic18f6622"     , "p18f6622"       , "18f6622"         }, 0xF622,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f6622.inc"     , "18f6622_g.lkr"     , 1 },
747   { PROC_CLASS_PIC16E   , "__18F6627"     , { "pic18f6627"     , "p18f6627"       , "18f6627"         }, 0xF625,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x018000, { 0x018000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f6627.inc"     , "18f6627_g.lkr"     , 1 },
748   { PROC_CLASS_PIC16E   , "__18F6628"     , { "pic18f6628"     , "p18f6628"       , "18f6628"         }, 0xA628,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x018000, { 0x018000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f6628.inc"     , "18f6628_g.lkr"     , 1 },
749   { PROC_CLASS_PIC16E   , "__18F6680"     , { "pic18f6680"     , "p18f6680"       , "18f6680"         }, 0x6680,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f6680.inc"     , "18f6680_g.lkr"     , 0 },
750   { PROC_CLASS_PIC16E   , "__18F6720"     , { "pic18f6720"     , "p18f6720"       , "18f6720"         }, 0xA672,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x020000, { 0x020000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f6720.inc"     , "18f6720_g.lkr"     , 0 },
751   { PROC_CLASS_PIC16E   , "__18F6722"     , { "pic18f6722"     , "p18f6722"       , "18f6722"         }, 0x6721,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x020000, { 0x020000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f6722.inc"     , "18f6722_g.lkr"     , 1 },
752   { PROC_CLASS_PIC16E   , "__18F6723"     , { "pic18f6723"     , "p18f6723"       , "18f6723"         }, 0x6723,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x020000, { 0x020000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f6723.inc"     , "18f6723_g.lkr"     , 1 },
753   { PROC_CLASS_PIC16E   , "__18F8310"     , { "pic18f8310"     , "p18f8310"       , "18f8310"         }, 0x8310,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18f8310.inc"     , "18f8310_g.lkr"     , 1 },
754   { PROC_CLASS_PIC16E   , "__18F8390"     , { "pic18f8390"     , "p18f8390"       , "18f8390"         }, 0x8390,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18f8390.inc"     , "18f8390_g.lkr"     , 1 },
755   { PROC_CLASS_PIC16E   , "__18F8393"     , { "pic18f8393"     , "p18f8393"       , "18f8393"         }, 0x8393,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18f8393.inc"     , "18f8393_g.lkr"     , 1 },
756   { PROC_CLASS_PIC16E   , "__18F8410"     , { "pic18f8410"     , "p18f8410"       , "18f8410"         }, 0x8410,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18f8410.inc"     , "18f8410_g.lkr"     , 1 },
757   { PROC_CLASS_PIC16E   , "__18F8490"     , { "pic18f8490"     , "p18f8490"       , "18f8490"         }, 0x8490,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18f8490.inc"     , "18f8490_g.lkr"     , 1 },
758   { PROC_CLASS_PIC16E   , "__18F8493"     , { "pic18f8493"     , "p18f8493"       , "18f8493"         }, 0x8493,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18f8493.inc"     , "18f8493_g.lkr"     , 1 },
759   { PROC_CLASS_PIC16E   , "__18F8520"     , { "pic18f8520"     , "p18f8520"       , "18f8520"         }, 0xA852,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f8520.inc"     , "18f8520_g.lkr"     , 0 },
760   { PROC_CLASS_PIC16E   , "__18F8525"     , { "pic18f8525"     , "p18f8525"       , "18f8525"         }, 0x8525,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x00C000, { 0x00C000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f8525.inc"     , "18f8525_g.lkr"     , 0 },
761   { PROC_CLASS_PIC16E   , "__18F8527"     , { "pic18f8527"     , "p18f8527"       , "18f8527"         }, 0x8527,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x00C000, { 0x00C000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f8527.inc"     , "18f8527_g.lkr"     , 1 },
762   { PROC_CLASS_PIC16E   , "__18F8585"     , { "pic18f8585"     , "p18f8585"       , "18f8585"         }, 0x8585,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x00C000, { 0x00C000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f8585.inc"     , "18f8585_g.lkr"     , 0 },
763   { PROC_CLASS_PIC16E   , "__18F8620"     , { "pic18f8620"     , "p18f8620"       , "18f8620"         }, 0xA862,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f8620.inc"     , "18f8620_g.lkr"     , 0 },
764   { PROC_CLASS_PIC16E   , "__18F8621"     , { "pic18f8621"     , "p18f8621"       , "18f8621"         }, 0x8621,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f8621.inc"     , "18f8621_g.lkr"     , 0 },
765   { PROC_CLASS_PIC16E   , "__18F8622"     , { "pic18f8622"     , "p18f8622"       , "18f8622"         }, 0x8622,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f8622.inc"     , "18f8622_g.lkr"     , 1 },
766   { PROC_CLASS_PIC16E   , "__18F8627"     , { "pic18f8627"     , "p18f8627"       , "18f8627"         }, 0x8625,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x018000, { 0x018000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f8627.inc"     , "18f8627_g.lkr"     , 1 },
767   { PROC_CLASS_PIC16E   , "__18F8628"     , { "pic18f8628"     , "p18f8628"       , "18f8628"         }, 0x8628,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x018000, { 0x018000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f8628.inc"     , "18f8628_g.lkr"     , 1 },
768   { PROC_CLASS_PIC16E   , "__18F8680"     , { "pic18f8680"     , "p18f8680"       , "18f8680"         }, 0x8680,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f8680.inc"     , "18f8680_g.lkr"     , 0 },
769   { PROC_CLASS_PIC16E   , "__18F8720"     , { "pic18f8720"     , "p18f8720"       , "18f8720"         }, 0xA872,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x020000, { 0x020000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f8720.inc"     , "18f8720_g.lkr"     , 0 },
770   { PROC_CLASS_PIC16E   , "__18F8722"     , { "pic18f8722"     , "p18f8722"       , "18f8722"         }, 0x8721,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x020000, { 0x020000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f8722.inc"     , "18f8722_g.lkr"     , 1 },
771   { PROC_CLASS_PIC16E   , "__18F8723"     , { "pic18f8723"     , "p18f8723"       , "18f8723"         }, 0x8723,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x020000, { 0x020000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18f8723.inc"     , "18f8723_g.lkr"     , 1 },
772   { PROC_CLASS_PIC16E   , "__18LF13K22"   , { "pic18lf13k22"   , "p18lf13k22"     , "18lf13k22"       }, 0xA133,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x002000, { 0x002000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf13k22.inc"   , "18lf13k22_g.lkr"   , 1 },
773   { PROC_CLASS_PIC16E   , "__18LF13K50"   , { "pic18lf13k50"   , "p18lf13k50"     , "18lf13k50"       }, 0xD135,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x002000, { 0x002000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf13k50.inc"   , "18lf13k50_g.lkr"   , 1 },
774   { PROC_CLASS_PIC16E   , "__18LF14K22"   , { "pic18lf14k22"   , "p18lf14k22"     , "18lf14k22"       }, 0xA142,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf14k22.inc"   , "18lf14k22_g.lkr"   , 1 },
775   { PROC_CLASS_PIC16E   , "__18LF14K50"   , { "pic18lf14k50"   , "p18lf14k50"     , "18lf14k50"       }, 0xD145,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf14k50.inc"   , "18lf14k50_g.lkr"   , 1 },
776   { PROC_CLASS_PIC16E   , "__18LF23K22"   , { "pic18lf23k22"   , "p18lf23k22"     , "18lf23k22"       }, 0xB322,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x002000, { 0x002000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf23k22.inc"   , "18lf23k22_g.lkr"   , 1 },
777   { PROC_CLASS_PIC16E   , "__18LF24J10"   , { "pic18lf24j10"   , "p18lf24j10"     , "18lf24j10"       }, 0xA241,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FF7, 0x003FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x003FF8, 0x003FFD }, {       -1,       -1 }, 0x0000, "p18lf24j10.inc"   , "18lf24j10_g.lkr"   , 3 },
778   { PROC_CLASS_PIC16E   , "__18LF24J11"   , { "pic18lf24j11"   , "p18lf24j11"     , "18lf24j11"       }, 0xB411,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FF7, 0x003FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x003FF8, 0x003FFF }, {       -1,       -1 }, 0x0000, "p18lf24j11.inc"   , "18lf24j11_g.lkr"   , 3 },
779   { PROC_CLASS_PIC16E   , "__18LF24J50"   , { "pic18lf24j50"   , "p18lf24j50"     , "18lf24j50"       }, 0xB450,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FF7, 0x003FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x003FF8, 0x003FFF }, {       -1,       -1 }, 0x0000, "p18lf24j50.inc"   , "18lf24j50_g.lkr"   , 3 },
780   { PROC_CLASS_PIC16E   , "__18LF24K22"   , { "pic18lf24k22"   , "p18lf24k22"     , "18lf24k22"       }, 0xB422,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf24k22.inc"   , "18lf24k22_g.lkr"   , 1 },
781   { PROC_CLASS_PIC16E   , "__18LF24K40"   , { "pic18lf24k40"   , "p18lf24k40"     , "18lf24k40"       }, 0xC244,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x3100FF, 0x004000, { 0x004000, 0x30FFFF }, { 0x200000, 0x20000F }, { 0x300000, 0x30000B }, { 0x310000, 0x3100FF }, 0x0000, "p18lf24k40.inc"   , "18lf24k40_g.lkr"   , 1 },
782   { PROC_CLASS_PIC16E   , "__18LF24K50"   , { "pic18lf24k50"   , "p18lf24k50"     , "18lf24k50"       }, 0xD452,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf24k50.inc"   , "18lf24k50_g.lkr"   , 1 },
783   { PROC_CLASS_PIC16E   , "__18LF25J10"   , { "pic18lf25j10"   , "p18lf25j10"     , "18lf25j10"       }, 0xA251,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0x007FF7, 0x007FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x007FF8, 0x007FFD }, {       -1,       -1 }, 0x0000, "p18lf25j10.inc"   , "18lf25j10_g.lkr"   , 3 },
784   { PROC_CLASS_PIC16E   , "__18LF25J11"   , { "pic18lf25j11"   , "p18lf25j11"     , "18lf25j11"       }, 0xB511,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x007FF7, 0x007FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x007FF8, 0x007FFF }, {       -1,       -1 }, 0x0000, "p18lf25j11.inc"   , "18lf25j11_g.lkr"   , 3 },
785   { PROC_CLASS_PIC16E   , "__18LF25J50"   , { "pic18lf25j50"   , "p18lf25j50"     , "18lf25j50"       }, 0xB551,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x007FF7, 0x007FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x007FF8, 0x007FFF }, {       -1,       -1 }, 0x0000, "p18lf25j50.inc"   , "18lf25j50_g.lkr"   , 3 },
786   { PROC_CLASS_PIC16E   , "__18LF25K22"   , { "pic18lf25k22"   , "p18lf25k22"     , "18lf25k22"       }, 0xB522,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf25k22.inc"   , "18lf25k22_g.lkr"   , 1 },
787   { PROC_CLASS_PIC16E   , "__18LF25K40"   , { "pic18lf25k40"   , "p18lf25k40"     , "18lf25k40"       }, 0xC254,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x3100FF, 0x008000, { 0x008000, 0x30FFFF }, { 0x200000, 0x20000F }, { 0x300000, 0x30000B }, { 0x310000, 0x3100FF }, 0x0000, "p18lf25k40.inc"   , "18lf25k40_g.lkr"   , 1 },
788   { PROC_CLASS_PIC16E   , "__18LF25K50"   , { "pic18lf25k50"   , "p18lf25k50"     , "18lf25k50"       }, 0xD552,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf25k50.inc"   , "18lf25k50_g.lkr"   , 1 },
789   { PROC_CLASS_PIC16E   , "__18LF25K80"   , { "pic18lf25k80"   , "p18lf25k80"     , "18lf25k80"       }, 0xD580,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf25k80.inc"   , "18lf25k80_g.lkr"   , 1 },
790   { PROC_CLASS_PIC16E   , "__18LF26J11"   , { "pic18lf26j11"   , "p18lf26j11"     , "18lf26j11"       }, 0xB612,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFF7, 0x00FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x00FFF8, 0x00FFFF }, {       -1,       -1 }, 0x0000, "p18lf26j11.inc"   , "18lf26j11_g.lkr"   , 3 },
791   { PROC_CLASS_PIC16E   , "__18LF26J13"   , { "pic18lf26j13"   , "p18lf26j13"     , "18lf26j13"       }, 0xB617,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFF7, 0x00FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x00FFF8, 0x00FFFF }, {       -1,       -1 }, 0x0000, "p18lf26j13.inc"   , "18lf26j13_g.lkr"   , 3 },
792   { PROC_CLASS_PIC16E   , "__18LF26J50"   , { "pic18lf26j50"   , "p18lf26j50"     , "18lf26j50"       }, 0xB651,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFF7, 0x00FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x00FFF8, 0x00FFFF }, {       -1,       -1 }, 0x0000, "p18lf26j50.inc"   , "18lf26j50_g.lkr"   , 3 },
793   { PROC_CLASS_PIC16E   , "__18LF26J53"   , { "pic18lf26j53"   , "p18lf26j53"     , "18lf26j53"       }, 0xB656,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFF7, 0x00FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x00FFF8, 0x00FFFF }, {       -1,       -1 }, 0x0000, "p18lf26j53.inc"   , "18lf26j53_g.lkr"   , 3 },
794   { PROC_CLASS_PIC16E   , "__18LF26K22"   , { "pic18lf26k22"   , "p18lf26k22"     , "18lf26k22"       }, 0xB623,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf26k22.inc"   , "18lf26k22_g.lkr"   , 1 },
795   { PROC_CLASS_PIC16E   , "__18LF26K40"   , { "pic18lf26k40"   , "p18lf26k40"     , "18lf26k40"       }, 0xA640,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x3103FF, 0x010000, { 0x010000, 0x30FFFF }, { 0x200000, 0x20000F }, { 0x300000, 0x30000B }, { 0x310000, 0x3103FF }, 0x0000, "p18lf26k40.inc"   , "18lf26k40_g.lkr"   , 1 },
796   { PROC_CLASS_PIC16E   , "__18LF26K80"   , { "pic18lf26k80"   , "p18lf26k80"     , "18lf26k80"       }, 0xD680,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf26k80.inc"   , "18lf26k80_g.lkr"   , 1 },
797   { PROC_CLASS_PIC16E   , "__18LF27J13"   , { "pic18lf27j13"   , "p18lf27j13"     , "18lf27j13"       }, 0xB712,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x01FFF7, 0x01FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x01FFF8, 0x01FFFF }, {       -1,       -1 }, 0x0000, "p18lf27j13.inc"   , "18lf27j13_g.lkr"   , 3 },
798   { PROC_CLASS_PIC16E   , "__18LF27J53"   , { "pic18lf27j53"   , "p18lf27j53"     , "18lf27j53"       }, 0xC753,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x01FFF7, 0x01FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x01FFF8, 0x01FFFF }, {       -1,       -1 }, 0x0000, "p18lf27j53.inc"   , "18lf27j53_g.lkr"   , 3 },
799   { PROC_CLASS_PIC16E   , "__18LF27K40"   , { "pic18lf27k40"   , "p18lf27k40"     , "18lf27k40"       }, 0xA277,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x3103FF, 0x020000, { 0x020000, 0x30FFFF }, { 0x200000, 0x20000F }, { 0x300000, 0x30000B }, { 0x310000, 0x3103FF }, 0x0000, "p18lf27k40.inc"   , "18lf27k40_g.lkr"   , 1 },
800   { PROC_CLASS_PIC16E   , "__18LF43K22"   , { "pic18lf43k22"   , "p18lf43k22"     , "18lf43k22"       }, 0xC322,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x002000, { 0x002000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf43k22.inc"   , "18lf43k22_g.lkr"   , 1 },
801   { PROC_CLASS_PIC16E   , "__18LF44J10"   , { "pic18lf44j10"   , "p18lf44j10"     , "18lf44j10"       }, 0xA441,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FF7, 0x003FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x003FF8, 0x003FFD }, {       -1,       -1 }, 0x0000, "p18lf44j10.inc"   , "18lf44j10_g.lkr"   , 3 },
802   { PROC_CLASS_PIC16E   , "__18LF44J11"   , { "pic18lf44j11"   , "p18lf44j11"     , "18lf44j11"       }, 0xC411,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FF7, 0x003FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x003FF8, 0x003FFF }, {       -1,       -1 }, 0x0000, "p18lf44j11.inc"   , "18lf44j11_g.lkr"   , 3 },
803   { PROC_CLASS_PIC16E   , "__18LF44J50"   , { "pic18lf44j50"   , "p18lf44j50"     , "18lf44j50"       }, 0xC450,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FF7, 0x003FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x003FF8, 0x003FFF }, {       -1,       -1 }, 0x0000, "p18lf44j50.inc"   , "18lf44j50_g.lkr"   , 3 },
804   { PROC_CLASS_PIC16E   , "__18LF44K22"   , { "pic18lf44k22"   , "p18lf44k22"     , "18lf44k22"       }, 0xC422,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf44k22.inc"   , "18lf44k22_g.lkr"   , 1 },
805   { PROC_CLASS_PIC16E   , "__18LF45J10"   , { "pic18lf45j10"   , "p18lf45j10"     , "18lf45j10"       }, 0xA451,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0x007FF7, 0x007FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x007FF8, 0x007FFD }, {       -1,       -1 }, 0x0000, "p18lf45j10.inc"   , "18lf45j10_g.lkr"   , 3 },
806   { PROC_CLASS_PIC16E   , "__18LF45J11"   , { "pic18lf45j11"   , "p18lf45j11"     , "18lf45j11"       }, 0xC511,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x007FF7, 0x007FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x007FF8, 0x007FFF }, {       -1,       -1 }, 0x0000, "p18lf45j11.inc"   , "18lf45j11_g.lkr"   , 3 },
807   { PROC_CLASS_PIC16E   , "__18LF45J50"   , { "pic18lf45j50"   , "p18lf45j50"     , "18lf45j50"       }, 0xC551,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x007FF7, 0x007FF8, {       -1,       -1 }, {       -1,       -1 }, { 0x007FF8, 0x007FFF }, {       -1,       -1 }, 0x0000, "p18lf45j50.inc"   , "18lf45j50_g.lkr"   , 3 },
808   { PROC_CLASS_PIC16E   , "__18LF45K22"   , { "pic18lf45k22"   , "p18lf45k22"     , "18lf45k22"       }, 0xC522,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf45k22.inc"   , "18lf45k22_g.lkr"   , 1 },
809   { PROC_CLASS_PIC16E   , "__18LF45K40"   , { "pic18lf45k40"   , "p18lf45k40"     , "18lf45k40"       }, 0xC454,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x3100FF, 0x008000, { 0x008000, 0x30FFFF }, { 0x200000, 0x20000F }, { 0x300000, 0x30000B }, { 0x310000, 0x3100FF }, 0x0000, "p18lf45k40.inc"   , "18lf45k40_g.lkr"   , 1 },
810   { PROC_CLASS_PIC16E   , "__18LF45K50"   , { "pic18lf45k50"   , "p18lf45k50"     , "18lf45k50"       }, 0xE552,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf45k50.inc"   , "18lf45k50_g.lkr"   , 1 },
811   { PROC_CLASS_PIC16E   , "__18LF45K80"   , { "pic18lf45k80"   , "p18lf45k80"     , "18lf45k80"       }, 0xE580,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf45k80.inc"   , "18lf45k80_g.lkr"   , 1 },
812   { PROC_CLASS_PIC16E   , "__18LF46J11"   , { "pic18lf46j11"   , "p18lf46j11"     , "18lf46j11"       }, 0xC612,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFF7, 0x00FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x00FFF8, 0x00FFFF }, {       -1,       -1 }, 0x0000, "p18lf46j11.inc"   , "18lf46j11_g.lkr"   , 3 },
813   { PROC_CLASS_PIC16E   , "__18LF46J13"   , { "pic18lf46j13"   , "p18lf46j13"     , "18lf46j13"       }, 0xC617,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFF7, 0x00FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x00FFF8, 0x00FFFF }, {       -1,       -1 }, 0x0000, "p18lf46j13.inc"   , "18lf46j13_g.lkr"   , 3 },
814   { PROC_CLASS_PIC16E   , "__18LF46J50"   , { "pic18lf46j50"   , "p18lf46j50"     , "18lf46j50"       }, 0xC651,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFF7, 0x00FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x00FFF8, 0x00FFFF }, {       -1,       -1 }, 0x0000, "p18lf46j50.inc"   , "18lf46j50_g.lkr"   , 3 },
815   { PROC_CLASS_PIC16E   , "__18LF46J53"   , { "pic18lf46j53"   , "p18lf46j53"     , "18lf46j53"       }, 0xC656,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFF7, 0x00FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x00FFF8, 0x00FFFF }, {       -1,       -1 }, 0x0000, "p18lf46j53.inc"   , "18lf46j53_g.lkr"   , 3 },
816   { PROC_CLASS_PIC16E   , "__18LF46K22"   , { "pic18lf46k22"   , "p18lf46k22"     , "18lf46k22"       }, 0xC623,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf46k22.inc"   , "18lf46k22_g.lkr"   , 1 },
817   { PROC_CLASS_PIC16E   , "__18LF46K40"   , { "pic18lf46k40"   , "p18lf46k40"     , "18lf46k40"       }, 0xA26E,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x3103FF, 0x010000, { 0x010000, 0x30FFFF }, { 0x200000, 0x20000F }, { 0x300000, 0x30000B }, { 0x310000, 0x3103FF }, 0x0000, "p18lf46k40.inc"   , "18lf46k40_g.lkr"   , 1 },
818   { PROC_CLASS_PIC16E   , "__18LF46K80"   , { "pic18lf46k80"   , "p18lf46k80"     , "18lf46k80"       }, 0xE680,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf46k80.inc"   , "18lf46k80_g.lkr"   , 1 },
819   { PROC_CLASS_PIC16E   , "__18LF47J13"   , { "pic18lf47j13"   , "p18lf47j13"     , "18lf47j13"       }, 0xC712,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x01FFF7, 0x01FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x01FFF8, 0x01FFFF }, {       -1,       -1 }, 0x0000, "p18lf47j13.inc"   , "18lf47j13_g.lkr"   , 3 },
820   { PROC_CLASS_PIC16E   , "__18LF47J53"   , { "pic18lf47j53"   , "p18lf47j53"     , "18lf47j53"       }, 0xC751,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x01FFF7, 0x01FFF8, {       -1,       -1 }, {       -1,       -1 }, { 0x01FFF8, 0x01FFFF }, {       -1,       -1 }, 0x0000, "p18lf47j53.inc"   , "18lf47j53_g.lkr"   , 3 },
821   { PROC_CLASS_PIC16E   , "__18LF47K40"   , { "pic18lf47k40"   , "p18lf47k40"     , "18lf47k40"       }, 0xA276,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x3103FF, 0x020000, { 0x020000, 0x30FFFF }, { 0x200000, 0x20000F }, { 0x300000, 0x30000B }, { 0x310000, 0x3103FF }, 0x0000, "p18lf47k40.inc"   , "18lf47k40_g.lkr"   , 1 },
822   { PROC_CLASS_PIC16E   , "__18LF65K40"   , { "pic18lf65k40"   , "p18lf65k40"     , "18lf65k40"       }, 0xA270,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x3103FF, 0x008000, { 0x008000, 0x30FFFF }, { 0x200000, 0x20000F }, { 0x300000, 0x30000B }, { 0x310000, 0x3103FF }, 0x0000, "p18lf65k40.inc"   , "18lf65k40_g.lkr"   , 1 },
823   { PROC_CLASS_PIC16E   , "__18LF65K80"   , { "pic18lf65k80"   , "p18lf65k80"     , "18lf65k80"       }, 0xF580,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf65k80.inc"   , "18lf65k80_g.lkr"   , 1 },
824   { PROC_CLASS_PIC16E   , "__18LF66K40"   , { "pic18lf66k40"   , "p18lf66k40"     , "18lf66k40"       }, 0xA271,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x3103FF, 0x010000, { 0x010000, 0x30FFFF }, { 0x200000, 0x20000F }, { 0x300000, 0x30000B }, { 0x310000, 0x3103FF }, 0x0000, "p18lf66k40.inc"   , "18lf66k40_g.lkr"   , 1 },
825   { PROC_CLASS_PIC16E   , "__18LF66K80"   , { "pic18lf66k80"   , "p18lf66k80"     , "18lf66k80"       }, 0xF680,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf66k80.inc"   , "18lf66k80_g.lkr"   , 1 },
826   { PROC_CLASS_PIC16E   , "__18LF67K40"   , { "pic18lf67k40"   , "p18lf67k40"     , "18lf67k40"       }, 0xA278,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x3103FF, 0x020000, { 0x020000, 0x30FFFF }, { 0x200000, 0x20000F }, { 0x300000, 0x30000B }, { 0x310000, 0x3103FF }, 0x0000, "p18lf67k40.inc"   , "18lf67k40_g.lkr"   , 1 },
827   { PROC_CLASS_PIC16E   , "__18LF242"     , { "pic18lf242"     , "p18lf242"       , "18lf242"         }, 0xA208,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf242.inc"     , "18lf242_g.lkr"     , 0 },
828   { PROC_CLASS_PIC16E   , "__18LF248"     , { "pic18lf248"     , "p18lf248"       , "18lf248"         }, 0xA20E,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf248.inc"     , "18lf248_g.lkr"     , 0 },
829   { PROC_CLASS_PIC16E   , "__18LF252"     , { "pic18lf252"     , "p18lf252"       , "18lf252"         }, 0xA215,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf252.inc"     , "18lf252_g.lkr"     , 0 },
830   { PROC_CLASS_PIC16E   , "__18LF258"     , { "pic18lf258"     , "p18lf258"       , "18lf258"         }, 0xA21B,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf258.inc"     , "18lf258_g.lkr"     , 0 },
831   { PROC_CLASS_PIC16E   , "__18LF442"     , { "pic18lf442"     , "p18lf442"       , "18lf442"         }, 0xA22A,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf442.inc"     , "18lf442_g.lkr"     , 0 },
832   { PROC_CLASS_PIC16E   , "__18LF448"     , { "pic18lf448"     , "p18lf448"       , "18lf448"         }, 0xA233,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf448.inc"     , "18lf448_g.lkr"     , 0 },
833   { PROC_CLASS_PIC16E   , "__18LF452"     , { "pic18lf452"     , "p18lf452"       , "18lf452"         }, 0xA236,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf452.inc"     , "18lf452_g.lkr"     , 0 },
834   { PROC_CLASS_PIC16E   , "__18LF458"     , { "pic18lf458"     , "p18lf458"       , "18lf458"         }, 0xA23F,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf458.inc"     , "18lf458_g.lkr"     , 0 },
835   { PROC_CLASS_PIC16E   , "__18LF1220"    , { "pic18lf1220"    , "p18lf1220"      , "18lf1220"        }, 0xA120,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x001000, { 0x001000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf1220.inc"    , "18lf1220_g.lkr"    , 0 },
836   { PROC_CLASS_PIC16E   , "__18LF1230"    , { "pic18lf1230"    , "p18lf1230"      , "18lf1230"        }, 0xA121,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF0007F, 0x001000, { 0x001000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF0007F }, 0x0000, "p18lf1230.inc"    , "18lf1230_g.lkr"    , 1 },
837   { PROC_CLASS_PIC16E   , "__18LF1320"    , { "pic18lf1320"    , "p18lf1320"      , "18lf1320"        }, 0xA130,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x002000, { 0x002000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf1320.inc"    , "18lf1320_g.lkr"    , 0 },
838   { PROC_CLASS_PIC16E   , "__18LF1330"    , { "pic18lf1330"    , "p18lf1330"      , "18lf1330"        }, 0xA131,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF0007F, 0x002000, { 0x002000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF0007F }, 0x0000, "p18lf1330.inc"    , "18lf1330_g.lkr"    , 1 },
839   { PROC_CLASS_PIC16E   , "__18LF2220"    , { "pic18lf2220"    , "p18lf2220"      , "18lf2220"        }, 0xA200,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x001000, { 0x001000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf2220.inc"    , "18lf2220_g.lkr"    , 0 },
840   { PROC_CLASS_PIC16E   , "__18LF2221"    , { "pic18lf2221"    , "p18lf2221"      , "18lf2221"        }, 0xA201,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x001000, { 0x001000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf2221.inc"    , "18lf2221_g.lkr"    , 1 },
841   { PROC_CLASS_PIC16E   , "__18LF2320"    , { "pic18lf2320"    , "p18lf2320"      , "18lf2320"        }, 0xA202,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x002000, { 0x002000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf2320.inc"    , "18lf2320_g.lkr"    , 0 },
842   { PROC_CLASS_PIC16E   , "__18LF2321"    , { "pic18lf2321"    , "p18lf2321"      , "18lf2321"        }, 0xA203,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x002000, { 0x002000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf2321.inc"    , "18lf2321_g.lkr"    , 1 },
843   { PROC_CLASS_PIC16E   , "__18LF2331"    , { "pic18lf2331"    , "p18lf2331"      , "18lf2331"        }, 0xA204,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x002000, { 0x002000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf2331.inc"    , "18lf2331_g.lkr"    , 0 },
844   { PROC_CLASS_PIC16E   , "__18LF2410"    , { "pic18lf2410"    , "p18lf2410"      , "18lf2410"        }, 0xA205,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18lf2410.inc"    , "18lf2410_g.lkr"    , 1 },
845   { PROC_CLASS_PIC16E   , "__18LF2420"    , { "pic18lf2420"    , "p18lf2420"      , "18lf2420"        }, 0xA206,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf2420.inc"    , "18lf2420_g.lkr"    , 1 },
846   { PROC_CLASS_PIC16E   , "__18LF2423"    , { "pic18lf2423"    , "p18lf2423"      , "18lf2423"        }, 0xA207,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf2423.inc"    , "18lf2423_g.lkr"    , 1 },
847   { PROC_CLASS_PIC16E   , "__18LF2431"    , { "pic18lf2431"    , "p18lf2431"      , "18lf2431"        }, 0xA209,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf2431.inc"    , "18lf2431_g.lkr"    , 0 },
848   { PROC_CLASS_PIC16E   , "__18LF2439"    , { "pic18lf2439"    , "p18lf2439"      , "18lf2439"        }, 0xA210,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x003000, { 0x003000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf2439.inc"    , "18lf2439_g.lkr"    , 0 },
849   { PROC_CLASS_PIC16E   , "__18LF2450"    , { "pic18lf2450"    , "p18lf2450"      , "18lf2450"        }, 0xA20A,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18lf2450.inc"    , "18lf2450_g.lkr"    , 1 },
850   { PROC_CLASS_PIC16E   , "__18LF2455"    , { "pic18lf2455"    , "p18lf2455"      , "18lf2455"        }, 0xA20B,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x006000, { 0x006000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf2455.inc"    , "18lf2455_g.lkr"    , 1 },
851   { PROC_CLASS_PIC16E   , "__18LF2458"    , { "pic18lf2458"    , "p18lf2458"      , "18lf2458"        }, 0xA20C,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x006000, { 0x006000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf2458.inc"    , "18lf2458_g.lkr"    , 1 },
852   { PROC_CLASS_PIC16E   , "__18LF2480"    , { "pic18lf2480"    , "p18lf2480"      , "18lf2480"        }, 0xA20D,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf2480.inc"    , "18lf2480_g.lkr"    , 1 },
853   { PROC_CLASS_PIC16E   , "__18LF2510"    , { "pic18lf2510"    , "p18lf2510"      , "18lf2510"        }, 0xA20F,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0x007FFF, 0x008000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18lf2510.inc"    , "18lf2510_g.lkr"    , 1 },
854   { PROC_CLASS_PIC16E   , "__18LF2515"    , { "pic18lf2515"    , "p18lf2515"      , "18lf2515"        }, 0xA211,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0x00BFFF, 0x00C000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18lf2515.inc"    , "18lf2515_g.lkr"    , 1 },
855   { PROC_CLASS_PIC16E   , "__18LF2520"    , { "pic18lf2520"    , "p18lf2520"      , "18lf2520"        }, 0xA212,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf2520.inc"    , "18lf2520_g.lkr"    , 1 },
856   { PROC_CLASS_PIC16E   , "__18LF2523"    , { "pic18lf2523"    , "p18lf2523"      , "18lf2523"        }, 0xA213,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf2523.inc"    , "18lf2523_g.lkr"    , 1 },
857   { PROC_CLASS_PIC16E   , "__18LF2525"    , { "pic18lf2525"    , "p18lf2525"      , "18lf2525"        }, 0xA214,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x00C000, { 0x00C000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf2525.inc"    , "18lf2525_g.lkr"    , 1 },
858   { PROC_CLASS_PIC16E   , "__18LF2539"    , { "pic18lf2539"    , "p18lf2539"      , "18lf2539"        }, 0xA216,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x006000, { 0x006000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf2539.inc"    , "18lf2539_g.lkr"    , 0 },
859   { PROC_CLASS_PIC16E   , "__18LF2550"    , { "pic18lf2550"    , "p18lf2550"      , "18lf2550"        }, 0xA217,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf2550.inc"    , "18lf2550_g.lkr"    , 1 },
860   { PROC_CLASS_PIC16E   , "__18LF2553"    , { "pic18lf2553"    , "p18lf2553"      , "18lf2553"        }, 0xA218,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf2553.inc"    , "18lf2553_g.lkr"    , 1 },
861   { PROC_CLASS_PIC16E   , "__18LF2580"    , { "pic18lf2580"    , "p18lf2580"      , "18lf2580"        }, 0xA219,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf2580.inc"    , "18lf2580_g.lkr"    , 1 },
862   { PROC_CLASS_PIC16E   , "__18LF2585"    , { "pic18lf2585"    , "p18lf2585"      , "18lf2585"        }, 0xA21A,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x00C000, { 0x00C000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf2585.inc"    , "18lf2585_g.lkr"    , 1 },
863   { PROC_CLASS_PIC16E   , "__18LF2610"    , { "pic18lf2610"    , "p18lf2610"      , "18lf2610"        }, 0xA21C,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFFF, 0x010000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18lf2610.inc"    , "18lf2610_g.lkr"    , 1 },
864   { PROC_CLASS_PIC16E   , "__18LF2620"    , { "pic18lf2620"    , "p18lf2620"      , "18lf2620"        }, 0xA21D,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf2620.inc"    , "18lf2620_g.lkr"    , 1 },
865   { PROC_CLASS_PIC16E   , "__18LF2680"    , { "pic18lf2680"    , "p18lf2680"      , "18lf2680"        }, 0xA21E,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf2680.inc"    , "18lf2680_g.lkr"    , 1 },
866   { PROC_CLASS_PIC16E   , "__18LF2682"    , { "pic18lf2682"    , "p18lf2682"      , "18lf2682"        }, 0xA21F,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x014000, { 0x014000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf2682.inc"    , "18lf2682_g.lkr"    , 1 },
867   { PROC_CLASS_PIC16E   , "__18LF2685"    , { "pic18lf2685"    , "p18lf2685"      , "18lf2685"        }, 0xA220,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x018000, { 0x018000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf2685.inc"    , "18lf2685_g.lkr"    , 1 },
868   { PROC_CLASS_PIC16E   , "__18LF4220"    , { "pic18lf4220"    , "p18lf4220"      , "18lf4220"        }, 0xA223,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x001000, { 0x001000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf4220.inc"    , "18lf4220_g.lkr"    , 0 },
869   { PROC_CLASS_PIC16E   , "__18LF4221"    , { "pic18lf4221"    , "p18lf4221"      , "18lf4221"        }, 0xA224,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x001000, { 0x001000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf4221.inc"    , "18lf4221_g.lkr"    , 1 },
870   { PROC_CLASS_PIC16E   , "__18LF4320"    , { "pic18lf4320"    , "p18lf4320"      , "18lf4320"        }, 0xA225,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x002000, { 0x002000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf4320.inc"    , "18lf4320_g.lkr"    , 0 },
871   { PROC_CLASS_PIC16E   , "__18LF4321"    , { "pic18lf4321"    , "p18lf4321"      , "18lf4321"        }, 0xA226,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x002000, { 0x002000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf4321.inc"    , "18lf4321_g.lkr"    , 1 },
872   { PROC_CLASS_PIC16E   , "__18LF4331"    , { "pic18lf4331"    , "p18lf4331"      , "18lf4331"        }, 0xA227,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x002000, { 0x002000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf4331.inc"    , "18lf4331_g.lkr"    , 0 },
873   { PROC_CLASS_PIC16E   , "__18LF4410"    , { "pic18lf4410"    , "p18lf4410"      , "18lf4410"        }, 0xA228,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18lf4410.inc"    , "18lf4410_g.lkr"    , 1 },
874   { PROC_CLASS_PIC16E   , "__18LF4420"    , { "pic18lf4420"    , "p18lf4420"      , "18lf4420"        }, 0xA229,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf4420.inc"    , "18lf4420_g.lkr"    , 1 },
875   { PROC_CLASS_PIC16E   , "__18LF4423"    , { "pic18lf4423"    , "p18lf4423"      , "18lf4423"        }, 0xA22B,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf4423.inc"    , "18lf4423_g.lkr"    , 1 },
876   { PROC_CLASS_PIC16E   , "__18LF4431"    , { "pic18lf4431"    , "p18lf4431"      , "18lf4431"        }, 0xA22C,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf4431.inc"    , "18lf4431_g.lkr"    , 0 },
877   { PROC_CLASS_PIC16E   , "__18LF4439"    , { "pic18lf4439"    , "p18lf4439"      , "18lf4439"        }, 0xA22D,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x003000, { 0x003000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf4439.inc"    , "18lf4439_g.lkr"    , 0 },
878   { PROC_CLASS_PIC16E   , "__18LF4450"    , { "pic18lf4450"    , "p18lf4450"      , "18lf4450"        }, 0xA22E,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18lf4450.inc"    , "18lf4450_g.lkr"    , 1 },
879   { PROC_CLASS_PIC16E   , "__18LF4455"    , { "pic18lf4455"    , "p18lf4455"      , "18lf4455"        }, 0xA22F,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x006000, { 0x006000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf4455.inc"    , "18lf4455_g.lkr"    , 1 },
880   { PROC_CLASS_PIC16E   , "__18LF4458"    , { "pic18lf4458"    , "p18lf4458"      , "18lf4458"        }, 0xA230,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x006000, { 0x006000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf4458.inc"    , "18lf4458_g.lkr"    , 1 },
881   { PROC_CLASS_PIC16E   , "__18LF4480"    , { "pic18lf4480"    , "p18lf4480"      , "18lf4480"        }, 0xA231,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf4480.inc"    , "18lf4480_g.lkr"    , 1 },
882   { PROC_CLASS_PIC16E   , "__18LF4510"    , { "pic18lf4510"    , "p18lf4510"      , "18lf4510"        }, 0xA234,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0x007FFF, 0x008000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18lf4510.inc"    , "18lf4510_g.lkr"    , 1 },
883   { PROC_CLASS_PIC16E   , "__18LF4515"    , { "pic18lf4515"    , "p18lf4515"      , "18lf4515"        }, 0xA235,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0x00BFFF, 0x00C000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18lf4515.inc"    , "18lf4515_g.lkr"    , 1 },
884   { PROC_CLASS_PIC16E   , "__18LF4520"    , { "pic18lf4520"    , "p18lf4520"      , "18lf4520"        }, 0xA237,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf4520.inc"    , "18lf4520_g.lkr"    , 1 },
885   { PROC_CLASS_PIC16E   , "__18LF4523"    , { "pic18lf4523"    , "p18lf4523"      , "18lf4523"        }, 0xA238,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf4523.inc"    , "18lf4523_g.lkr"    , 1 },
886   { PROC_CLASS_PIC16E   , "__18LF4525"    , { "pic18lf4525"    , "p18lf4525"      , "18lf4525"        }, 0xA239,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x00C000, { 0x00C000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf4525.inc"    , "18lf4525_g.lkr"    , 1 },
887   { PROC_CLASS_PIC16E   , "__18LF4539"    , { "pic18lf4539"    , "p18lf4539"      , "18lf4539"        }, 0xA23A,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x006000, { 0x006000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf4539.inc"    , "18lf4539_g.lkr"    , 0 },
888   { PROC_CLASS_PIC16E   , "__18LF4550"    , { "pic18lf4550"    , "p18lf4550"      , "18lf4550"        }, 0xA23B,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf4550.inc"    , "18lf4550_g.lkr"    , 1 },
889   { PROC_CLASS_PIC16E   , "__18LF4553"    , { "pic18lf4553"    , "p18lf4553"      , "18lf4553"        }, 0xA23C,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf4553.inc"    , "18lf4553_g.lkr"    , 1 },
890   { PROC_CLASS_PIC16E   , "__18LF4580"    , { "pic18lf4580"    , "p18lf4580"      , "18lf4580"        }, 0xA23D,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "p18lf4580.inc"    , "18lf4580_g.lkr"    , 1 },
891   { PROC_CLASS_PIC16E   , "__18LF4585"    , { "pic18lf4585"    , "p18lf4585"      , "18lf4585"        }, 0xA23E,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x00C000, { 0x00C000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf4585.inc"    , "18lf4585_g.lkr"    , 1 },
892   { PROC_CLASS_PIC16E   , "__18LF4610"    , { "pic18lf4610"    , "p18lf4610"      , "18lf4610"        }, 0xA240,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0x00FFFF, 0x010000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18lf4610.inc"    , "18lf4610_g.lkr"    , 1 },
893   { PROC_CLASS_PIC16E   , "__18LF4620"    , { "pic18lf4620"    , "p18lf4620"      , "18lf4620"        }, 0xA242,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf4620.inc"    , "18lf4620_g.lkr"    , 1 },
894   { PROC_CLASS_PIC16E   , "__18LF4680"    , { "pic18lf4680"    , "p18lf4680"      , "18lf4680"        }, 0xA243,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf4680.inc"    , "18lf4680_g.lkr"    , 1 },
895   { PROC_CLASS_PIC16E   , "__18LF4682"    , { "pic18lf4682"    , "p18lf4682"      , "18lf4682"        }, 0xA244,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x014000, { 0x014000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf4682.inc"    , "18lf4682_g.lkr"    , 1 },
896   { PROC_CLASS_PIC16E   , "__18LF4685"    , { "pic18lf4685"    , "p18lf4685"      , "18lf4685"        }, 0xA245,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x018000, { 0x018000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf4685.inc"    , "18lf4685_g.lkr"    , 1 },
897   { PROC_CLASS_PIC16E   , "__18LF6310"    , { "pic18lf6310"    , "p18lf6310"      , "18lf6310"        }, 0xA246,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18lf6310.inc"    , "18lf6310_g.lkr"    , 1 },
898   { PROC_CLASS_PIC16E   , "__18LF6390"    , { "pic18lf6390"    , "p18lf6390"      , "18lf6390"        }, 0xA247,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18lf6390.inc"    , "18lf6390_g.lkr"    , 1 },
899   { PROC_CLASS_PIC16E   , "__18LF6393"    , { "pic18lf6393"    , "p18lf6393"      , "18lf6393"        }, 0xA248,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18lf6393.inc"    , "18lf6393_g.lkr"    , 1 },
900   { PROC_CLASS_PIC16E   , "__18LF6410"    , { "pic18lf6410"    , "p18lf6410"      , "18lf6410"        }, 0xA249,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18lf6410.inc"    , "18lf6410_g.lkr"    , 1 },
901   { PROC_CLASS_PIC16E   , "__18LF6490"    , { "pic18lf6490"    , "p18lf6490"      , "18lf6490"        }, 0xA24A,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18lf6490.inc"    , "18lf6490_g.lkr"    , 1 },
902   { PROC_CLASS_PIC16E   , "__18LF6493"    , { "pic18lf6493"    , "p18lf6493"      , "18lf6493"        }, 0xA24B,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18lf6493.inc"    , "18lf6493_g.lkr"    , 1 },
903   { PROC_CLASS_PIC16E   , "__18LF6520"    , { "pic18lf6520"    , "p18lf6520"      , "18lf6520"        }, 0xA24C,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf6520.inc"    , "18lf6520_g.lkr"    , 0 },
904   { PROC_CLASS_PIC16E   , "__18LF6525"    , { "pic18lf6525"    , "p18lf6525"      , "18lf6525"        }, 0xA24D,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x00C000, { 0x00C000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf6525.inc"    , "18lf6525_g.lkr"    , 0 },
905   { PROC_CLASS_PIC16E   , "__18LF6527"    , { "pic18lf6527"    , "p18lf6527"      , "18lf6527"        }, 0xA24E,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x00C000, { 0x00C000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf6527.inc"    , "18lf6527_g.lkr"    , 1 },
906   { PROC_CLASS_PIC16E   , "__18LF6585"    , { "pic18lf6585"    , "p18lf6585"      , "18lf6585"        }, 0xA24F,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x00C000, { 0x00C000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf6585.inc"    , "18lf6585_g.lkr"    , 0 },
907   { PROC_CLASS_PIC16E   , "__18LF6620"    , { "pic18lf6620"    , "p18lf6620"      , "18lf6620"        }, 0xA250,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf6620.inc"    , "18lf6620_g.lkr"    , 0 },
908   { PROC_CLASS_PIC16E   , "__18LF6621"    , { "pic18lf6621"    , "p18lf6621"      , "18lf6621"        }, 0xA252,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf6621.inc"    , "18lf6621_g.lkr"    , 0 },
909   { PROC_CLASS_PIC16E   , "__18LF6622"    , { "pic18lf6622"    , "p18lf6622"      , "18lf6622"        }, 0xA253,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf6622.inc"    , "18lf6622_g.lkr"    , 1 },
910   { PROC_CLASS_PIC16E   , "__18LF6627"    , { "pic18lf6627"    , "p18lf6627"      , "18lf6627"        }, 0xA254,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x018000, { 0x018000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf6627.inc"    , "18lf6627_g.lkr"    , 1 },
911   { PROC_CLASS_PIC16E   , "__18LF6628"    , { "pic18lf6628"    , "p18lf6628"      , "18lf6628"        }, 0xA255,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x018000, { 0x018000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf6628.inc"    , "18lf6628_g.lkr"    , 1 },
912   { PROC_CLASS_PIC16E   , "__18LF6680"    , { "pic18lf6680"    , "p18lf6680"      , "18lf6680"        }, 0xA256,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf6680.inc"    , "18lf6680_g.lkr"    , 0 },
913   { PROC_CLASS_PIC16E   , "__18LF6720"    , { "pic18lf6720"    , "p18lf6720"      , "18lf6720"        }, 0xA257,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x020000, { 0x020000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf6720.inc"    , "18lf6720_g.lkr"    , 0 },
914   { PROC_CLASS_PIC16E   , "__18LF6722"    , { "pic18lf6722"    , "p18lf6722"      , "18lf6722"        }, 0xA258,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x020000, { 0x020000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf6722.inc"    , "18lf6722_g.lkr"    , 1 },
915   { PROC_CLASS_PIC16E   , "__18LF6723"    , { "pic18lf6723"    , "p18lf6723"      , "18lf6723"        }, 0xA259,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x020000, { 0x020000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf6723.inc"    , "18lf6723_g.lkr"    , 1 },
916   { PROC_CLASS_PIC16E   , "__18LF8310"    , { "pic18lf8310"    , "p18lf8310"      , "18lf8310"        }, 0xA25A,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18lf8310.inc"    , "18lf8310_g.lkr"    , 1 },
917   { PROC_CLASS_PIC16E   , "__18LF8390"    , { "pic18lf8390"    , "p18lf8390"      , "18lf8390"        }, 0xA25B,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18lf8390.inc"    , "18lf8390_g.lkr"    , 1 },
918   { PROC_CLASS_PIC16E   , "__18LF8393"    , { "pic18lf8393"    , "p18lf8393"      , "18lf8393"        }, 0xA25C,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18lf8393.inc"    , "18lf8393_g.lkr"    , 1 },
919   { PROC_CLASS_PIC16E   , "__18LF8410"    , { "pic18lf8410"    , "p18lf8410"      , "18lf8410"        }, 0xA25D,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18lf8410.inc"    , "18lf8410_g.lkr"    , 1 },
920   { PROC_CLASS_PIC16E   , "__18LF8490"    , { "pic18lf8490"    , "p18lf8490"      , "18lf8490"        }, 0xA25E,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18lf8490.inc"    , "18lf8490_g.lkr"    , 1 },
921   { PROC_CLASS_PIC16E   , "__18LF8493"    , { "pic18lf8493"    , "p18lf8493"      , "18lf8493"        }, 0xA25F,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0x003FFF, 0x004000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "p18lf8493.inc"    , "18lf8493_g.lkr"    , 1 },
922   { PROC_CLASS_PIC16E   , "__18LF8520"    , { "pic18lf8520"    , "p18lf8520"      , "18lf8520"        }, 0xA260,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x008000, { 0x008000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf8520.inc"    , "18lf8520_g.lkr"    , 0 },
923   { PROC_CLASS_PIC16E   , "__18LF8525"    , { "pic18lf8525"    , "p18lf8525"      , "18lf8525"        }, 0xA261,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x00C000, { 0x00C000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf8525.inc"    , "18lf8525_g.lkr"    , 0 },
924   { PROC_CLASS_PIC16E   , "__18LF8527"    , { "pic18lf8527"    , "p18lf8527"      , "18lf8527"        }, 0xA262,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x00C000, { 0x00C000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf8527.inc"    , "18lf8527_g.lkr"    , 1 },
925   { PROC_CLASS_PIC16E   , "__18LF8585"    , { "pic18lf8585"    , "p18lf8585"      , "18lf8585"        }, 0xA263,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x00C000, { 0x00C000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf8585.inc"    , "18lf8585_g.lkr"    , 0 },
926   { PROC_CLASS_PIC16E   , "__18LF8620"    , { "pic18lf8620"    , "p18lf8620"      , "18lf8620"        }, 0xA264,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf8620.inc"    , "18lf8620_g.lkr"    , 0 },
927   { PROC_CLASS_PIC16E   , "__18LF8621"    , { "pic18lf8621"    , "p18lf8621"      , "18lf8621"        }, 0xA265,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf8621.inc"    , "18lf8621_g.lkr"    , 0 },
928   { PROC_CLASS_PIC16E   , "__18LF8622"    , { "pic18lf8622"    , "p18lf8622"      , "18lf8622"        }, 0xA266,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf8622.inc"    , "18lf8622_g.lkr"    , 1 },
929   { PROC_CLASS_PIC16E   , "__18LF8627"    , { "pic18lf8627"    , "p18lf8627"      , "18lf8627"        }, 0xA267,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x018000, { 0x018000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf8627.inc"    , "18lf8627_g.lkr"    , 1 },
930   { PROC_CLASS_PIC16E   , "__18LF8628"    , { "pic18lf8628"    , "p18lf8628"      , "18lf8628"        }, 0xA268,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x018000, { 0x018000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf8628.inc"    , "18lf8628_g.lkr"    , 1 },
931   { PROC_CLASS_PIC16E   , "__18LF8680"    , { "pic18lf8680"    , "p18lf8680"      , "18lf8680"        }, 0xA269,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x010000, { 0x010000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf8680.inc"    , "18lf8680_g.lkr"    , 0 },
932   { PROC_CLASS_PIC16E   , "__18LF8720"    , { "pic18lf8720"    , "p18lf8720"      , "18lf8720"        }, 0xA26A,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x020000, { 0x020000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf8720.inc"    , "18lf8720_g.lkr"    , 0 },
933   { PROC_CLASS_PIC16E   , "__18LF8722"    , { "pic18lf8722"    , "p18lf8722"      , "18lf8722"        }, 0xA26B,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x020000, { 0x020000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf8722.inc"    , "18lf8722_g.lkr"    , 1 },
934   { PROC_CLASS_PIC16E   , "__18LF8723"    , { "pic18lf8723"    , "p18lf8723"      , "18lf8723"        }, 0xA26C,  0,   16, 0x0F00, { 0x00, 0x5F },    -1, {     -1,     -1 }, 0x0FFF, 0xF003FF, 0x020000, { 0x020000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF003FF }, 0x0000, "p18lf8723.inc"    , "18lf8723_g.lkr"    , 1 },
935   { PROC_CLASS_PIC14    , "__14000"       , { "pic14000"       , "p14000"         , "14000"           }, 0x4000,  2,    2, 0x0080, {   -1,   -1 },    -1, {     -1,     -1 }, 0x00FF, 0x000FBF, 0x000FC0, {       -1,       -1 }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, {       -1,       -1 }, 0x3F80, "p14000.inc"       , "14000_g.lkr"       , 0 },
936   { PROC_CLASS_EEPROM8  , "__EEPROM8"     , { "eeprom8"        , "eeprom8"        , "eeprom8"         }, 0x1FFF,  0,    0, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 },     -1, 0x0000FF,       -1, {       -1,       -1 }, {       -1,       -1 }, {       -1,       -1 }, {       -1,       -1 }, 0x0000, NULL               , NULL                , 0 },
937   { PROC_CLASS_EEPROM16 , "__EEPROM16"    , { "eeprom16"       , "eeprom16"       , "eeprom16"        }, 0x1FFF,  0,    0, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 },     -1, 0x00007F,       -1, {       -1,       -1 }, {       -1,       -1 }, {       -1,       -1 }, {       -1,       -1 }, 0x0000, NULL               , NULL                , 0 },
938   { PROC_CLASS_GENERIC  , "__GEN"         , { "generic"        , "gen"            , "unknown"         }, 0x0000,  0,    0, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 },     -1,       -1,       -1, {       -1,       -1 }, { 0x002000, 0x002003 }, {       -1,       -1 }, {       -1,       -1 }, 0x3F80, NULL               , NULL                , 0 },
939   { PROC_CLASS_PIC12    , "__HCS1365"     , { "hcs1365"        , "hcs1365"        , "hcs1365"         }, 0xF365,  2,    4, 0x0060, {   -1,   -1 },    -1, {     -1,     -1 }, 0x007F, 0x0003FF,       -1, {       -1,       -1 }, { 0x000400, 0x000403 }, { 0x0007FF, 0x0007FF }, {       -1,       -1 }, 0x0FF0, NULL               , "hcs1365_g.lkr"     , 0 },
940   { PROC_CLASS_PIC12    , "__HCS1370"     , { "hcs1370"        , "hcs1370"        , "hcs1370"         }, 0xF370,  2,    4, 0x0060, {   -1,   -1 },    -1, {     -1,     -1 }, 0x007F, 0x0003FF,       -1, {       -1,       -1 }, { 0x000400, 0x000403 }, { 0x0007FF, 0x0007FF }, {       -1,       -1 }, 0x0FF0, NULL               , "hcs1370_g.lkr"     , 0 },
941   { PROC_CLASS_PIC12    , "__MCV08A"      , { "mcv08a"         , "mcv08a"         , "mcv08a"          }, 0xA510,  2,    2, 0x0020, { 0x0A, 0x0F }, 0x00F, {     -1,     -1 }, 0x003F, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x000400, 0x000403 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, NULL               , "mcv08a_g.lkr"      , 0 },
942   { PROC_CLASS_PIC12    , "__MCV14A"      , { "mcv14a"         , "mcv14a"         , "mcv14a"          }, 0xC526,  2,    4, 0x0060, { 0x0D, 0x0F },    -1, {     -1,     -1 }, 0x007F, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x000440, 0x000443 }, { 0x000FFF, 0x000FFF }, { 0x000400, 0x00043F }, 0x0FF0, NULL               , "mcv14a_g.lkr"      , 0 },
943   { PROC_CLASS_PIC12    , "__MCV18A"      , { "mcv18a"         , "mcv18a"         , "mcv18a"          }, 0xCF54,  1,    1, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 }, 0x001F, 0x0001FF, 0x000200, {       -1,       -1 }, { 0x000200, 0x000203 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, NULL               , "mcv18a_g.lkr"      , 0 },
944   { PROC_CLASS_PIC12    , "__MCV28A"      , { "mcv28a"         , "mcv28a"         , "mcv28a"          }, 0xCF57,  4,    4, 0x0060, { 0x08, 0x0F }, 0x00F, {     -1,     -1 }, 0x007F, 0x0007FF, 0x000800, {       -1,       -1 }, { 0x000800, 0x000803 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, NULL               , "mcv28a_g.lkr"      , 0 },
945   { PROC_CLASS_PIC16E   , "__PS500"       , { "ps500"          , "ps500"          , "ps500"           }, 0x0500,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0xF000FF, 0x004000, { 0x004000, 0xEFFFFF }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, { 0xF00000, 0xF000FF }, 0x0000, "ps500.inc"        , "ps500_g.lkr"       , 0 },
946   { PROC_CLASS_PIC16E   , "__PS810"       , { "ps810"          , "ps810"          , "ps810"           }, 0x0810,  0,   16, 0x0F00, { 0x00, 0x7F },    -1, {     -1,     -1 }, 0x0FFF, 0x001FFF, 0x002000, {       -1,       -1 }, { 0x200000, 0x200007 }, { 0x300000, 0x30000D }, {       -1,       -1 }, 0x0000, "ps810.inc"        , "ps810_g.lkr"       , 0 },
947   { PROC_CLASS_PIC12    , "__RF509AF"     , { "rf509af"        , "rf509af"        , "rf509af"         }, 0x6509,  2,    2, 0x0020, { 0x07, 0x0F }, 0x00F, {     -1,     -1 }, 0x003F, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x000400, 0x000403 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "rf509af.inc"      , "rf509af_g.lkr"     , 0 },
948   { PROC_CLASS_PIC12    , "__RF509AG"     , { "rf509ag"        , "rf509ag"        , "rf509ag"         }, 0x7509,  2,    2, 0x0020, { 0x07, 0x0F }, 0x00F, {     -1,     -1 }, 0x003F, 0x0003FF, 0x000400, {       -1,       -1 }, { 0x000400, 0x000403 }, { 0x000FFF, 0x000FFF }, {       -1,       -1 }, 0x0FF0, "rf509ag.inc"      , "rf509ag_g.lkr"     , 0 },
949   { PROC_CLASS_PIC14    , "__RF675F"      , { "rf675f"         , "rf675f"         , "rf675f"          }, 0x3675,  1,    2, 0x0080, { 0x20, 0x5F },    -1, {     -1,     -1 }, 0x00DF, 0x00217F, 0x000400, { 0x0003FF, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00217F }, 0x3F80, "rf675f.inc"       , "rf675f_g.lkr"      , 0 },
950   { PROC_CLASS_PIC14    , "__RF675H"      , { "rf675h"         , "rf675h"         , "rf675h"          }, 0x4675,  1,    2, 0x0080, { 0x20, 0x5F },    -1, {     -1,     -1 }, 0x00DF, 0x00217F, 0x000400, { 0x0003FF, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00217F }, 0x3F80, "rf675h.inc"       , "rf675h_g.lkr"      , 0 },
951   { PROC_CLASS_PIC14    , "__RF675K"      , { "rf675k"         , "rf675k"         , "rf675k"          }, 0x5675,  1,    2, 0x0080, { 0x20, 0x5F },    -1, {     -1,     -1 }, 0x00DF, 0x00217F, 0x000400, { 0x0003FF, 0x0020FF }, { 0x002000, 0x002003 }, { 0x002007, 0x002007 }, { 0x002100, 0x00217F }, 0x3F80, "rf675k.inc"       , "rf675k_g.lkr"      , 0 },
952   { PROC_CLASS_SX       , "__SX18"        , { "sx18ac"         , "sx18"           , "sx18"            }, 0x0018,  4,    4, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 },     -1, 0x0007FF,       -1, {       -1,       -1 }, {       -1,       -1 }, {       -1,       -1 }, {       -1,       -1 }, 0x0000, NULL               , NULL                , 0 },
953   { PROC_CLASS_SX       , "__SX20"        , { "sx20ac"         , "sx20"           , "sx20"            }, 0x0020,  4,    4, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 },     -1, 0x0007FF,       -1, {       -1,       -1 }, {       -1,       -1 }, {       -1,       -1 }, {       -1,       -1 }, 0x0000, NULL               , NULL                , 0 },
954   { PROC_CLASS_SX       , "__SX28"        , { "sx28ac"         , "sx28"           , "sx28"            }, 0x0028,  4,    4, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 },     -1, 0x0007FF,       -1, {       -1,       -1 }, {       -1,       -1 }, {       -1,       -1 }, {       -1,       -1 }, 0x0000, NULL               , NULL                , 0 },
955   { PROC_CLASS_SX       , "__SX48"        , { "sx48bd"         , "sx48"           , "sx48"            }, 0x0048,  8,    8, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 },     -1, 0x000FFF,       -1, {       -1,       -1 }, { 0x001000, 0x00100F }, {       -1,       -1 }, {       -1,       -1 }, 0x0000, NULL               , NULL                , 0 },
956   { PROC_CLASS_SX       , "__SX52"        , { "sx52bd"         , "sx52"           , "sx52"            }, 0x0052,  8,    8, 0x0000, {   -1,   -1 },    -1, {     -1,     -1 },     -1, 0x000FFF,       -1, {       -1,       -1 }, { 0x001000, 0x00100F }, {       -1,       -1 }, {       -1,       -1 }, 0x0000, NULL               , NULL                , 0 },
957 };
958 
959 #define NUM_PICS        ARRAY_SIZE(pics)
960 
961 /*------------------------------------------------------------------------------------------------*/
962 
963 /*
964  * Display a list of the processor names.
965  */
966 void
gp_dump_processor_list(gp_boolean List_all,proc_class_t Class0,proc_class_t Class1,proc_class_t Class2)967 gp_dump_processor_list(gp_boolean List_all, proc_class_t Class0, proc_class_t Class1, proc_class_t Class2)
968 {
969 #define COLUMNS         6
970 #define SPACE_BETWEEN   2       /* number of chars between columns */
971 #define FAVORITE        1       /* there are 3 names to choose from */
972 
973   int             i;
974   int             length;
975   int             column_width;
976   int             columns;
977   int             num;
978   const char     *name;
979   gp_boolean      newline;
980 #ifdef TIOCGWINSZ
981   struct winsize  ws;
982 #endif
983 
984   column_width = 0;
985   columns      = COLUMNS;
986   newline      = false;
987 
988   for (i = 0; i < NUM_PICS; i++) {
989     if (!List_all && (pics[i].class != Class0) && (pics[i].class != Class1) && (pics[i].class != Class2)) {
990       continue;
991     }
992 
993     length = strlen(pics[i].names[FAVORITE]);
994 
995     if (length > column_width) {
996       column_width = length;
997     }
998   }
999 
1000   column_width += SPACE_BETWEEN;
1001 
1002 #ifdef TIOCGWINSZ
1003   /* Adapt to available screen width. */
1004   if ((isatty(STDOUT_FILENO) > 0) && (ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) == 0)) {
1005     columns = ws.ws_col / column_width;
1006   }
1007   else
1008 #endif
1009   {
1010     /* This will in particular be executed when a pipeline
1011      * is set up by a shell command.
1012      */
1013     const char *width = getenv("COLUMNS");
1014     int w = (width != NULL) ? atoi(width) : 80;
1015 
1016     /* Check that the line width is reasonable. */
1017     if ((w <= 0) || (w > 240)) {
1018       w = 80;
1019     }
1020 
1021     columns = w / column_width;
1022   }
1023 
1024   num = 0;
1025   for (i = 0; i < NUM_PICS; i++) {
1026     if (List_all || (pics[i].class == Class0) || (pics[i].class == Class1) || (pics[i].class == Class2)) {
1027       num++;
1028       name = pics[i].names[FAVORITE];
1029       newline = ((num % columns) == 0) ? true : false;
1030 
1031       if (i >= (NUM_PICS - 1)) {
1032         printf("%s", name);
1033       }
1034       else if (newline) {
1035         printf("%s\n", name);
1036       }
1037       else {
1038         printf("%-*s", column_width, name);
1039       }
1040     }
1041   }
1042 
1043   if (!newline || (num == NUM_PICS)) {
1044     putchar('\n');
1045   }
1046 }
1047 
1048 /*------------------------------------------------------------------------------------------------*/
1049 
1050 void
gp_processor_invoke_custom_lister(proc_class_t Class0,proc_class_t Class1,proc_class_t Class2,void (* Custom_lister)(pic_processor_t))1051 gp_processor_invoke_custom_lister(proc_class_t Class0, proc_class_t Class1, proc_class_t Class2,
1052                                   void (*Custom_lister)(pic_processor_t))
1053 {
1054   int             i;
1055   pic_processor_t proc;
1056 
1057   for (i = 0; i < NUM_PICS; i++) {
1058     proc = &pics[i];
1059 
1060     if ((Class0 != PROC_CLASS_UNKNOWN) || (Class1 != PROC_CLASS_UNKNOWN) || (Class2 != PROC_CLASS_UNKNOWN)) {
1061       if ((proc->class == Class0) || (proc->class == Class1) || (proc->class == Class2)) {
1062         (*Custom_lister)(proc);
1063       }
1064     }
1065     else {
1066       (*Custom_lister)(proc);
1067     }
1068   }
1069 }
1070 
1071 /*------------------------------------------------------------------------------------------------*/
1072 
1073 pic_processor_t
gp_find_processor(const char * Name)1074 gp_find_processor(const char *Name)
1075 {
1076   int i;
1077   int j;
1078 
1079   for (i = 0; i < NUM_PICS; i++) {
1080     for (j = 0; (j < MAX_NAMES) && (pics[i].names[j] != NULL); j++) {
1081       if (strcasecmp(Name, pics[i].names[j]) == 0) {
1082         return &pics[i];
1083       }
1084     }
1085   }
1086 
1087   return NULL;
1088 }
1089 
1090 /*------------------------------------------------------------------------------------------------*/
1091 
1092 proc_class_t
gp_processor_class(pic_processor_t Processor)1093 gp_processor_class(pic_processor_t Processor)
1094 {
1095   return ((Processor != NULL) ? Processor->class : PROC_CLASS_UNKNOWN);
1096 }
1097 
1098 /*------------------------------------------------------------------------------------------------*/
1099 
1100 const char *
gp_processor_class_to_str(proc_class_t Class)1101 gp_processor_class_to_str(proc_class_t Class)
1102 {
1103   if (Class == PROC_CLASS_EEPROM8) {
1104     return "EEPROM8";
1105   }
1106   else if (Class == PROC_CLASS_EEPROM16) {
1107     return "EEPROM16";
1108   }
1109   else if (Class == PROC_CLASS_GENERIC) {
1110     return "GENERIC";
1111   }
1112   else if (Class == PROC_CLASS_PIC12) {
1113     return "PIC12";
1114   }
1115   else if (Class == PROC_CLASS_PIC12E) {
1116     return "PIC12E";
1117   }
1118   else if (Class == PROC_CLASS_PIC12I) {
1119     return "PIC12I";
1120   }
1121   else if (Class == PROC_CLASS_SX) {
1122     return "SX";
1123   }
1124   else if (Class == PROC_CLASS_PIC14) {
1125     return "PIC14";
1126   }
1127   else if (Class == PROC_CLASS_PIC14E) {
1128     return "PIC14E";
1129   }
1130   else if (Class == PROC_CLASS_PIC14EX) {
1131     return "PIC14EX";
1132   }
1133   else if (Class == PROC_CLASS_PIC16) {
1134     return "PIC16";
1135   }
1136   else if (Class == PROC_CLASS_PIC16E) {
1137     return "PIC16E";
1138   }
1139   else {
1140     return "UNKNOWN";
1141   }
1142 }
1143 
1144 /*------------------------------------------------------------------------------------------------*/
1145 
1146 /* 18xx bsr boundary location */
1147 
1148 unsigned int
gp_processor_bsr_boundary(pic_processor_t Processor)1149 gp_processor_bsr_boundary(pic_processor_t Processor)
1150 {
1151   if ((Processor != NULL) && (Processor->class == PROC_CLASS_PIC16E)) {
1152     return (Processor->common_ram_addrs[1] + 1);
1153   }
1154 
1155   return 0;
1156 }
1157 
1158 /*------------------------------------------------------------------------------------------------*/
1159 
1160 uint32_t
gp_processor_coff_type(pic_processor_t Processor)1161 gp_processor_coff_type(pic_processor_t Processor)
1162 {
1163   return ((Processor != NULL) ? Processor->coff_type : 0);
1164 }
1165 
1166 /*------------------------------------------------------------------------------------------------*/
1167 
1168 unsigned int
gp_processor_num_pages(pic_processor_t Processor)1169 gp_processor_num_pages(pic_processor_t Processor)
1170 {
1171   return ((Processor != NULL) ? Processor->num_pages : 0);
1172 }
1173 
1174 /*------------------------------------------------------------------------------------------------*/
1175 
1176 unsigned int
gp_processor_num_banks(pic_processor_t Processor)1177 gp_processor_num_banks(pic_processor_t Processor)
1178 {
1179   if (Processor != NULL) {
1180     return Processor->num_banks;
1181   }
1182 
1183   return 0;
1184 }
1185 
1186 /*------------------------------------------------------------------------------------------------*/
1187 
1188 pic_processor_t
gp_processor_coff_proc(uint32_t Coff_type)1189 gp_processor_coff_proc(uint32_t Coff_type)
1190 {
1191   int i;
1192 
1193   for (i = 0; i < NUM_PICS; i++) {
1194     if (pics[i].coff_type == Coff_type) {
1195       return &pics[i];
1196     }
1197   }
1198 
1199   return NULL;
1200 }
1201 
1202 /*------------------------------------------------------------------------------------------------*/
1203 
1204 const char *
gp_processor_name(pic_processor_t Processor,unsigned int Choice)1205 gp_processor_name(pic_processor_t Processor, unsigned int Choice)
1206 {
1207   assert(!(Choice > (MAX_NAMES - 1)));
1208 
1209   return ((Processor != NULL) ? Processor->names[Choice] : NULL);
1210 }
1211 
1212 /*------------------------------------------------------------------------------------------------*/
1213 
1214 const char *
gp_processor_coff_name(uint32_t Coff_type,unsigned int Choice)1215 gp_processor_coff_name(uint32_t Coff_type, unsigned int Choice)
1216 {
1217   unsigned int i;
1218 
1219   if (Coff_type == 0) {
1220     return NULL;
1221   }
1222 
1223   assert(!(Choice > (MAX_NAMES - 1)));
1224 
1225   for (i = 0; i < NUM_PICS; i++) {
1226     if (pics[i].coff_type == Coff_type) {
1227       return pics[i].names[Choice];
1228     }
1229   }
1230 
1231   return NULL;
1232 }
1233 
1234 /*------------------------------------------------------------------------------------------------*/
1235 
1236 const char *
gp_processor_header(pic_processor_t Processor)1237 gp_processor_header(pic_processor_t Processor)
1238 {
1239   return ((Processor != NULL) ? Processor->header : NULL);
1240 }
1241 
1242 /*------------------------------------------------------------------------------------------------*/
1243 
1244 const char *
gp_processor_script(pic_processor_t Processor)1245 gp_processor_script(pic_processor_t Processor)
1246 {
1247   return ((Processor != NULL) ? Processor->script : NULL);
1248 }
1249 
1250 /*------------------------------------------------------------------------------------------------*/
1251 
1252 unsigned int
gp_processor_id_location(pic_processor_t Processor)1253 gp_processor_id_location(pic_processor_t Processor)
1254 {
1255   return ((Processor->class->id_location != NULL) ? Processor->class->id_location(Processor) : 0);
1256 }
1257 
1258 /*------------------------------------------------------------------------------------------------*/
1259 
1260 int
gp_byte_from_insn(unsigned int Shift,int Insn_address)1261 gp_byte_from_insn(unsigned int Shift, int Insn_address)
1262 {
1263   return (Insn_address << Shift);
1264 }
1265 
1266 /*------------------------------------------------------------------------------------------------*/
1267 
1268 int
gp_insn_from_byte(unsigned int Shift,int Byte_address)1269 gp_insn_from_byte(unsigned int Shift, int Byte_address)
1270 {
1271   return (Byte_address >> Shift);
1272 }
1273 
1274 /*------------------------------------------------------------------------------------------------*/
1275 
1276 int
gp_processor_reg_offs(pic_processor_t Processor,int Address)1277 gp_processor_reg_offs(pic_processor_t Processor, int Address)
1278 {
1279   if ((Processor == NULL) || (Address < 0)) {
1280     return -1;
1281   }
1282 
1283   return (Address & Processor->class->bank_mask);
1284 }
1285 
1286 /*------------------------------------------------------------------------------------------------*/
1287 
1288 int
gp_processor_bank_addr(pic_processor_t Processor,int Address)1289 gp_processor_bank_addr(pic_processor_t Processor, int Address)
1290 {
1291   if ((Processor == NULL) || (Address < 0)) {
1292     return -1;
1293   }
1294 
1295   return (Address & Processor->bank_bits);
1296 }
1297 
1298 /*------------------------------------------------------------------------------------------------*/
1299 
1300 int
gp_processor_bank_num(pic_processor_t Processor,int Address)1301 gp_processor_bank_num(pic_processor_t Processor, int Address)
1302 {
1303   if ((Processor == NULL) || (Address < 0)) {
1304     return -1;
1305   }
1306 
1307   return ((Address & Processor->bank_bits) >> Processor->class->bank_bits_shift);
1308 }
1309 
1310 /*------------------------------------------------------------------------------------------------*/
1311 
1312 int
gp_processor_addr_from_bank_num(pic_processor_t Processor,int Number)1313 gp_processor_addr_from_bank_num(pic_processor_t Processor, int Number)
1314 {
1315   if ((Processor == NULL) || (Number < 0)) {
1316     return -1;
1317   }
1318 
1319   return ((Number << Processor->class->bank_bits_shift) & Processor->bank_bits);
1320 }
1321 
1322 /*------------------------------------------------------------------------------------------------*/
1323 
1324 const int *
gp_processor_common_ram_exist(pic_processor_t Processor)1325 gp_processor_common_ram_exist(pic_processor_t Processor)
1326 {
1327   if (Processor == NULL) {
1328     return NULL;
1329   }
1330 
1331   if ((Processor->common_ram_addrs[0] >= 0) &&
1332       (Processor->common_ram_addrs[0] <= Processor->common_ram_addrs[1])) {
1333     return Processor->common_ram_addrs;
1334   }
1335 
1336   return NULL;
1337 }
1338 
1339 /*------------------------------------------------------------------------------------------------*/
1340 
1341 int
gp_processor_is_common_ram_addr(pic_processor_t Processor,int Address)1342 gp_processor_is_common_ram_addr(pic_processor_t Processor, int Address)
1343 {
1344   const int    *cram_addrs;
1345   proc_class_t  class;
1346 
1347   if ((Processor == NULL) || (Address < 0)) {
1348     return -1;
1349   }
1350 
1351   class = Processor->class;
1352 
1353   if ((class != PROC_CLASS_GENERIC) &&
1354       (class != PROC_CLASS_PIC12) &&
1355       (class != PROC_CLASS_PIC12E) &&
1356       (class != PROC_CLASS_PIC12I) &&
1357       (class != PROC_CLASS_SX) &&
1358       (class != PROC_CLASS_PIC14) &&
1359       (class != PROC_CLASS_PIC14E) &&
1360       (class != PROC_CLASS_PIC14EX) &&
1361       (class != PROC_CLASS_PIC16) &&
1362       (class != PROC_CLASS_PIC16E)) {
1363     return -1;
1364   }
1365 
1366   if ((Processor->common_ram_max > 0) && (Address > Processor->common_ram_max)) {
1367     return -1;
1368   }
1369 
1370   if (class != PROC_CLASS_PIC16E) {
1371     /* The Common RAM - except the PIC16E family - exists in the all RAM banks. */
1372     Address &= class->bank_mask;
1373   }
1374 
1375   if ((cram_addrs = gp_processor_common_ram_exist(Processor)) != NULL) {
1376     if ((Address >= cram_addrs[0]) && (Address <= cram_addrs[1])) {
1377       return (Address - cram_addrs[0]);
1378     }
1379   }
1380 
1381   return -1;
1382 }
1383 
1384 /*------------------------------------------------------------------------------------------------*/
1385 
1386 gp_boolean
gp_processor_is_p16e_access_low(pic_processor_t Processor,int Address)1387 gp_processor_is_p16e_access_low(pic_processor_t Processor, int Address)
1388 {
1389   const int *cram_addrs;
1390 
1391   if ((Processor->class != PROC_CLASS_PIC16E) || (Address < 0)) {
1392     return false;
1393   }
1394 
1395   if ((cram_addrs = gp_processor_common_ram_exist(Processor)) != NULL) {
1396     return (((Address >= cram_addrs[0]) && (Address <= cram_addrs[1])) ? true : false);
1397   }
1398 
1399   return false;
1400 }
1401 
1402 /*------------------------------------------------------------------------------------------------*/
1403 
1404 gp_boolean
gp_processor_is_p16e_access_high(pic_processor_t Processor,int Address,gp_boolean Mpasm_compatible)1405 gp_processor_is_p16e_access_high(pic_processor_t Processor, int Address, gp_boolean Mpasm_compatible)
1406 {
1407   const int    *cram_addrs;
1408   unsigned int  bank_size;
1409 
1410   if ((Processor->class != PROC_CLASS_PIC16E) || ((!Mpasm_compatible) && (Address < 0))) {
1411     return false;
1412   }
1413 
1414   if ((cram_addrs = gp_processor_common_ram_exist(Processor)) != NULL) {
1415     bank_size = Processor->class->bank_size;
1416     if (Mpasm_compatible) {
1417       /* The mpasmx not investigate the upper limit. */
1418       return ((Address > ((bank_size * 15) + cram_addrs[1])) ? true : false);
1419     }
1420     else {
1421       return (((Address > ((bank_size * 15) + cram_addrs[1])) && (Address < (bank_size * 16))) ? true : false);
1422     }
1423   }
1424 
1425   return false;
1426 }
1427 
1428 /*------------------------------------------------------------------------------------------------*/
1429 
1430 gp_boolean
gp_processor_is_p16e_access(pic_processor_t Processor,int Address,gp_boolean Mpasm_compatible)1431 gp_processor_is_p16e_access(pic_processor_t Processor, int Address, gp_boolean Mpasm_compatible)
1432 {
1433   return (gp_processor_is_p16e_access_low(Processor, Address) |
1434           gp_processor_is_p16e_access_high(Processor, Address, Mpasm_compatible));
1435 }
1436 
1437 /*------------------------------------------------------------------------------------------------*/
1438 
1439 const int *
gp_processor_linear_ram_exist(pic_processor_t Processor)1440 gp_processor_linear_ram_exist(pic_processor_t Processor)
1441 {
1442   if (Processor == NULL) {
1443     return NULL;
1444   }
1445 
1446   if ((Processor->linear_ram_addrs[0] > 0) &&
1447       (Processor->linear_ram_addrs[1] >= Processor->linear_ram_addrs[0])) {
1448     return Processor->linear_ram_addrs;
1449   }
1450 
1451   return NULL;
1452 }
1453 
1454 /*------------------------------------------------------------------------------------------------*/
1455 
1456 int
gp_processor_is_linear_ram_addr(pic_processor_t Processor,int Address)1457 gp_processor_is_linear_ram_addr(pic_processor_t Processor, int Address)
1458 {
1459   const int *lram_addrs;
1460 
1461   if ((Processor == NULL) ||
1462       ((Processor->class != PROC_CLASS_PIC14E) && (Processor->class != PROC_CLASS_PIC14EX))) {
1463     return -1;
1464   }
1465 
1466   if (Address < 0) {
1467     return -1;
1468   }
1469 
1470   if ((lram_addrs = gp_processor_linear_ram_exist(Processor)) != NULL) {
1471     if ((Address >= lram_addrs[0]) && (Address <= lram_addrs[1])) {
1472       return (Address - lram_addrs[0]);
1473     }
1474   }
1475 
1476   return -1;
1477 }
1478 
1479 /*------------------------------------------------------------------------------------------------*/
1480 
1481 const int *
gp_processor_idlocs_exist(pic_processor_t Processor)1482 gp_processor_idlocs_exist(pic_processor_t Processor)
1483 {
1484   if (Processor == NULL) {
1485     return NULL;
1486   }
1487 
1488   if ((Processor->idlocs_addrs[0] > 0) &&
1489       (Processor->idlocs_addrs[1] >= Processor->idlocs_addrs[0])) {
1490     return Processor->idlocs_addrs;
1491   }
1492 
1493   return NULL;
1494 }
1495 
1496 /*------------------------------------------------------------------------------------------------*/
1497 
1498 int
gp_processor_is_idlocs_org(pic_processor_t Processor,int Org)1499 gp_processor_is_idlocs_org(pic_processor_t Processor, int Org)
1500 {
1501   const int *id_addrs;
1502 
1503   if ((Processor == NULL) || (Org < 0)) {
1504     return -1;
1505   }
1506 
1507   if ((id_addrs = gp_processor_idlocs_exist(Processor)) != NULL) {
1508     if ((Org >= id_addrs[0]) && (Org <= id_addrs[1])) {
1509       return (Org - id_addrs[0]);
1510     }
1511   }
1512 
1513   return -1;
1514 }
1515 
1516 /*------------------------------------------------------------------------------------------------*/
1517 
1518 int
gp_processor_is_idlocs_byte_addr(pic_processor_t Processor,int Byte_address)1519 gp_processor_is_idlocs_byte_addr(pic_processor_t Processor, int Byte_address)
1520 {
1521   const int *idlocs;
1522   int        start;
1523   int        end;
1524 
1525   if (Byte_address < 0) {
1526     return -1;
1527   }
1528 
1529   if ((idlocs = gp_processor_idlocs_exist(Processor)) != NULL) {
1530     /* There is a need an address conversion. */
1531     start = gp_byte_from_insn(Processor->class->org_to_byte_shift, idlocs[0]);
1532     end   = idlocs[1] - idlocs[0] + start;
1533 
1534     if ((Byte_address >= start) && (Byte_address <= end)) {
1535       return (Byte_address - start);
1536     }
1537   }
1538 
1539   return -1;
1540 }
1541 
1542 /*------------------------------------------------------------------------------------------------*/
1543 
1544 const int *
gp_processor_config_exist(pic_processor_t Processor)1545 gp_processor_config_exist(pic_processor_t Processor)
1546 {
1547   if (Processor == NULL) {
1548     return NULL;
1549   }
1550 
1551   if ((Processor->config_addrs[0] > 0) &&
1552       (Processor->config_addrs[1] >= Processor->config_addrs[0])) {
1553     return Processor->config_addrs;
1554   }
1555 
1556   return NULL;
1557 }
1558 
1559 /*------------------------------------------------------------------------------------------------*/
1560 
1561 int
gp_processor_is_config_org(pic_processor_t Processor,int Org)1562 gp_processor_is_config_org(pic_processor_t Processor, int Org)
1563 {
1564   const int *config;
1565 
1566   if ((Processor == NULL) || (Org < 0)) {
1567     return -1;
1568   }
1569 
1570   if ((config = gp_processor_config_exist(Processor)) != NULL) {
1571     if ((Org >= config[0]) && (Org <= config[1])) {
1572       return (Org - config[0]);
1573     }
1574   }
1575 
1576   return -1;
1577 }
1578 
1579 /*------------------------------------------------------------------------------------------------*/
1580 
1581 int
gp_processor_is_config_byte_addr(pic_processor_t Processor,int Byte_address)1582 gp_processor_is_config_byte_addr(pic_processor_t Processor, int Byte_address)
1583 {
1584   const int *config;
1585   int        start;
1586   int        end;
1587 
1588   if (Byte_address < 0) {
1589     return -1;
1590   }
1591 
1592   if ((config = gp_processor_config_exist(Processor)) != NULL) {
1593     /* There is a need an address conversion. */
1594     start = gp_byte_from_insn(Processor->class->org_to_byte_shift, config[0]);
1595     end   = config[1] - config[0] + start;
1596 
1597     if ((Byte_address >= start) && (Byte_address <= end)) {
1598       return (Byte_address - start);
1599     }
1600   }
1601 
1602   return -1;
1603 }
1604 
1605 /*------------------------------------------------------------------------------------------------*/
1606 
1607 const int *
gp_processor_eeprom_exist(pic_processor_t Processor)1608 gp_processor_eeprom_exist(pic_processor_t Processor)
1609 {
1610   if (Processor == NULL) {
1611     return NULL;
1612   }
1613 
1614   if ((Processor->eeprom_addrs[0] > 0) &&
1615       (Processor->eeprom_addrs[1] >= Processor->eeprom_addrs[0])) {
1616     return Processor->eeprom_addrs;
1617   }
1618 
1619   return NULL;
1620 }
1621 
1622 /*------------------------------------------------------------------------------------------------*/
1623 
1624 int
gp_processor_is_eeprom_org(pic_processor_t Processor,int Org)1625 gp_processor_is_eeprom_org(pic_processor_t Processor, int Org)
1626 {
1627   const int *eeprom;
1628 
1629   if ((Processor == NULL) || (Org < 0)) {
1630     return -1;
1631   }
1632 
1633   if ((eeprom = gp_processor_eeprom_exist(Processor)) != NULL) {
1634     if ((Org >= eeprom[0]) && (Org <= eeprom[1])) {
1635       return (Org - eeprom[0]);
1636     }
1637   }
1638 
1639   return -1;
1640 }
1641 
1642 /*------------------------------------------------------------------------------------------------*/
1643 
1644 int
gp_processor_is_eeprom_byte_addr(pic_processor_t Processor,int Byte_address)1645 gp_processor_is_eeprom_byte_addr(pic_processor_t Processor, int Byte_address)
1646 {
1647   const int *eeprom;
1648   int        start;
1649   int        end;
1650 
1651   if (Byte_address < 0) {
1652     return -1;
1653   }
1654 
1655   if ((eeprom = gp_processor_eeprom_exist(Processor)) != NULL) {
1656     /* There is a need an address conversion. */
1657     start = gp_byte_from_insn(Processor->class->org_to_byte_shift, eeprom[0]);
1658     end   = eeprom[1] - eeprom[0] + start;
1659 
1660     if ((Byte_address >= start) && (Byte_address <= end)) {
1661       return (Byte_address - start);
1662     }
1663   }
1664 
1665   return -1;
1666 }
1667 
1668 /*------------------------------------------------------------------------------------------------*/
1669 
1670 unsigned int
gp_processor_rom_width(proc_class_t Class)1671 gp_processor_rom_width(proc_class_t Class)
1672 {
1673   assert(Class->rom_width > 0);
1674   return Class->rom_width;
1675 }
1676 
1677 /*------------------------------------------------------------------------------------------------*/
1678 
1679 /* Set the page bits, return the number of instructions required. */
1680 
1681 unsigned int
gp_processor_set_page(proc_class_t Class,unsigned int Num_pages,unsigned int Page,MemBlock_t * M,unsigned int Byte_address,gp_boolean Use_wreg)1682 gp_processor_set_page(proc_class_t Class, unsigned int Num_pages, unsigned int Page, MemBlock_t *M,
1683                       unsigned int Byte_address, gp_boolean Use_wreg)
1684 {
1685   return Class->set_page(Num_pages, Page, M, Byte_address, Use_wreg);
1686 }
1687 
1688 /*------------------------------------------------------------------------------------------------*/
1689 
1690 /* Mask the page bits, if exists. */
1691 
1692 unsigned int
gp_processor_page_addr(proc_class_t Class,unsigned int Address)1693 gp_processor_page_addr(proc_class_t Class, unsigned int Address)
1694 {
1695   return Class->page_addr(Address);
1696 }
1697 
1698 /*------------------------------------------------------------------------------------------------*/
1699 
1700 unsigned int
gp_processor_addr_from_page_bits(proc_class_t Class,unsigned int Bits)1701 gp_processor_addr_from_page_bits(proc_class_t Class, unsigned int Bits)
1702 {
1703   return Class->addr_from_page_bits(Bits);
1704 }
1705 
1706 /*------------------------------------------------------------------------------------------------*/
1707 
1708 /* Set the bank bits, return the number of instructions required. */
1709 
1710 unsigned int
gp_processor_set_bank(proc_class_t Class,unsigned int Num_banks,unsigned int Bank,MemBlock_t * M,unsigned int Byte_address,gp_boolean Mpasm_compatible)1711 gp_processor_set_bank(proc_class_t Class, unsigned int Num_banks, unsigned int Bank, MemBlock_t *M,
1712                       unsigned int Byte_address, gp_boolean Mpasm_compatible)
1713 {
1714   return Class->set_bank(Num_banks, Bank, M, Byte_address, Mpasm_compatible);
1715 }
1716 
1717 /*------------------------------------------------------------------------------------------------*/
1718 
1719 unsigned int
gp_processor_set_ibank(proc_class_t Class,unsigned int Num_banks,unsigned int Bank,MemBlock_t * M,unsigned int Byte_address)1720 gp_processor_set_ibank(proc_class_t Class, unsigned int Num_banks, unsigned int Bank, MemBlock_t *M,
1721                        unsigned int Byte_address)
1722 {
1723   return Class->set_ibank(Num_banks, Bank, M, Byte_address);
1724 }
1725 
1726 /*------------------------------------------------------------------------------------------------*/
1727 
1728 /* determine the value for retlw */
1729 
1730 unsigned int
gp_processor_retlw(proc_class_t Class)1731 gp_processor_retlw(proc_class_t Class)
1732 {
1733   assert(Class->retlw > 0);
1734   return Class->retlw;
1735 }
1736 
1737 /*------------------------------------------------------------------------------------------------*/
1738 
1739 int
gp_processor_byte_from_insn_c(proc_class_t Class,int Insn_address)1740 gp_processor_byte_from_insn_c(proc_class_t Class, int Insn_address)
1741 {
1742   /* FIXME: In some places we use this value before we know what the
1743      Processor is. Rather than fix those now, I'll just return some
1744      value. */
1745   if (Class == NULL) {
1746     return Insn_address;
1747   }
1748 
1749   return gp_byte_from_insn(Class->org_to_byte_shift, Insn_address);
1750 }
1751 
1752 /*------------------------------------------------------------------------------------------------*/
1753 
1754 int
gp_processor_byte_from_insn_p(pic_processor_t Processor,int Insn_address)1755 gp_processor_byte_from_insn_p(pic_processor_t Processor, int Insn_address)
1756 {
1757   if (Processor == NULL) {
1758     return Insn_address;
1759   }
1760 
1761   return gp_processor_byte_from_insn_c(Processor->class, Insn_address);
1762 }
1763 
1764 /*------------------------------------------------------------------------------------------------*/
1765 
1766 int
gp_processor_insn_from_byte_c(proc_class_t Class,int Byte_address)1767 gp_processor_insn_from_byte_c(proc_class_t Class, int Byte_address)
1768 {
1769   /* FIXME: In some places we use this value before we know what the
1770      Processor is. Rather than fix those now, I'll just return some
1771      value. */
1772   if (Class == NULL) {
1773     return Byte_address;
1774   }
1775 
1776   return gp_insn_from_byte(Class->org_to_byte_shift, Byte_address);
1777 }
1778 
1779 /*------------------------------------------------------------------------------------------------*/
1780 
1781 int
gp_processor_insn_from_byte_p(pic_processor_t Processor,int Byte_address)1782 gp_processor_insn_from_byte_p(pic_processor_t Processor, int Byte_address)
1783 {
1784   if (Processor == NULL) {
1785     return Byte_address;
1786   }
1787 
1788   return gp_processor_insn_from_byte_c(Processor->class, Byte_address);
1789 }
1790 
1791 /*------------------------------------------------------------------------------------------------*/
1792 
1793 /* determine which page of program memory the byte address is located */
1794 
1795 unsigned int
gp_processor_check_page(proc_class_t Class,unsigned int Insn_address)1796 gp_processor_check_page(proc_class_t Class, unsigned int Insn_address)
1797 {
1798   return Class->check_page(Insn_address);
1799 }
1800 
1801 /*------------------------------------------------------------------------------------------------*/
1802 
1803 /* determine which bank of data memory the address is located */
1804 
1805 int
gp_processor_bank_from_addr(proc_class_t Class,int Address)1806 gp_processor_bank_from_addr(proc_class_t Class, int Address)
1807 {
1808   return Class->bank_from_addr(Address);
1809 }
1810 
1811 /*------------------------------------------------------------------------------------------------*/
1812 
1813 /* determine which bank of data memory the address is located */
1814 
1815 int
gp_processor_check_ibank(proc_class_t Class,int Address)1816 gp_processor_check_ibank(proc_class_t Class, int Address)
1817 {
1818   return Class->check_ibank(Address);
1819 }
1820 
1821 /*------------------------------------------------------------------------------------------------*/
1822 
1823 /* When unsupported on the class. */
1824 
1825 static int
_xbank_from_addr_unsupported(int Address)1826 _xbank_from_addr_unsupported(int Address)
1827 {
1828   (void)Address;
1829   assert(0);
1830   return 0;
1831 }
1832 
1833 /*------------------------------------------------------------------------------------------------*/
1834 
1835 static unsigned int
_set_bank_unsupported(unsigned int Num_banks,unsigned int Bank,MemBlock_t * M,unsigned int Address,gp_boolean Mpasm_compatible)1836 _set_bank_unsupported(unsigned int Num_banks, unsigned int Bank, MemBlock_t *M, unsigned int Address,
1837                       gp_boolean Mpasm_compatible)
1838 {
1839   (void)Num_banks;
1840   (void)Bank;
1841   (void)M;
1842   (void)Address;
1843   (void)Mpasm_compatible;
1844   assert(0);
1845   return 0;
1846 }
1847 
1848 /*------------------------------------------------------------------------------------------------*/
1849 
1850 static unsigned int
_set_ibank_unsupported(unsigned int Num_banks,unsigned int Bank,MemBlock_t * M,unsigned int Address)1851 _set_ibank_unsupported(unsigned int Num_banks, unsigned int Bank, MemBlock_t *M, unsigned int Address)
1852 {
1853   (void)Num_banks;
1854   (void)Bank;
1855   (void)M;
1856   (void)Address;
1857   assert(0);
1858   return 0;
1859 }
1860 
1861 /*------------------------------------------------------------------------------------------------*/
1862 
1863 static unsigned int
_banksel_byte_length_unsupported(unsigned int Num_banks,gp_boolean Mpasm_compatible)1864 _banksel_byte_length_unsupported(unsigned int Num_banks, gp_boolean Mpasm_compatible)
1865 {
1866   (void)Num_banks;
1867   (void)Mpasm_compatible;
1868   assert(0);
1869   return 0;
1870 }
1871 
1872 /*------------------------------------------------------------------------------------------------*/
1873 
1874 static unsigned int
_check_page_unsupported(unsigned int Insn_address)1875 _check_page_unsupported(unsigned int Insn_address)
1876 {
1877   (void)Insn_address;
1878   assert(0);
1879   return 0;
1880 }
1881 
1882 /*------------------------------------------------------------------------------------------------*/
1883 
1884 static unsigned int
_set_page_unsupported(unsigned int Num_pages,unsigned int Page,MemBlock_t * M,unsigned int Byte_address,gp_boolean Use_wreg)1885 _set_page_unsupported(unsigned int Num_pages, unsigned int Page, MemBlock_t *M, unsigned int Byte_address,
1886                       gp_boolean Use_wreg)
1887 {
1888   (void)Num_pages;
1889   (void)Page;
1890   (void)M;
1891   (void)Byte_address;
1892   (void)Use_wreg;
1893   assert(0);
1894   return 0;
1895 }
1896 
1897 /*------------------------------------------------------------------------------------------------*/
1898 
1899 static unsigned int
_pagesel_byte_length_unsupported(unsigned int Num_pages,gp_boolean Use_wreg)1900 _pagesel_byte_length_unsupported(unsigned int Num_pages, gp_boolean Use_wreg)
1901 {
1902   (void)Num_pages;
1903   (void)Use_wreg;
1904   assert(0);
1905   return 0;
1906 }
1907 
1908 /*------------------------------------------------------------------------------------------------*/
1909 
1910 static unsigned int
_page_addr_unsupported(unsigned int Address)1911 _page_addr_unsupported(unsigned int Address)
1912 {
1913   (void)Address;
1914   assert(0);
1915   return 0;
1916 }
1917 
1918 /*------------------------------------------------------------------------------------------------*/
1919 
1920 static unsigned int
_addr_from_page_bits_unsupported(unsigned int Bits)1921 _addr_from_page_bits_unsupported(unsigned int Bits)
1922 {
1923   (void)Bits;
1924   assert(0);
1925   return 0;
1926 }
1927 
1928 /*------------------------------------------------------------------------------------------------*/
1929 
1930 static unsigned int
_reloc_unsupported(unsigned int Address)1931 _reloc_unsupported(unsigned int Address)
1932 {
1933   (void)Address;
1934   assert(0);
1935   return 0;
1936 }
1937 
1938 /*------------------------------------------------------------------------------------------------*/
1939 
1940 static unsigned int
_reloc_bra_unsupported(const gp_section_t * Section,unsigned int Value,unsigned int Byte_address)1941 _reloc_bra_unsupported(const gp_section_t *Section, unsigned int Value, unsigned int Byte_address)
1942 {
1943   (void)Section;
1944   (void)Value;
1945   (void)Byte_address;
1946   assert(0);
1947   return 0;
1948 }
1949 
1950 /*------------------------------------------------------------------------------------------------*/
1951 
1952 static unsigned int
_reloc_high_unsupported(gp_boolean Is_code,unsigned int Value)1953 _reloc_high_unsupported(gp_boolean Is_code, unsigned int Value)
1954 {
1955   (void)Is_code;
1956   (void)Value;
1957   assert(0);
1958   return 0;
1959 }
1960 
1961 /*------------------------------------------------------------------------------------------------*/
1962 
1963 /* Common to most */
1964 
1965 static const insn_t *
_find_insn_generic(proc_class_t Class,unsigned int Opcode)1966 _find_insn_generic(proc_class_t Class, unsigned int Opcode)
1967 {
1968   const insn_t *base;
1969   int           count;
1970   int           i;
1971 
1972   base = Class->instructions;
1973 
1974   if (base == NULL) {
1975     return NULL;
1976   }
1977 
1978   count = *(Class->num_instructions);
1979   for (i = 0; i < count; i++) {
1980     if ((base[i].mask & Opcode) == base[i].opcode) {
1981       return &base[i];
1982     }
1983   }
1984 
1985   return NULL;
1986 }
1987 
1988 /*------------------------------------------------------------------------------------------------*/
1989 
1990 static unsigned int
_reloc_high_generic(gp_boolean Is_code,unsigned int Value)1991 _reloc_high_generic(gp_boolean Is_code, unsigned int Value)
1992 {
1993   (void)Is_code;
1994   return ((Value >> 8) & 0xff);
1995 }
1996 
1997 /*------------------------------------------------------------------------------------------------*/
1998 
1999 /* Common to PIC12 and PIC14 */
2000 
2001 static unsigned int
_set_page_pic12_14(unsigned int Num_pages,unsigned int Page,MemBlock_t * M,unsigned int Byte_address,gp_boolean Use_wreg,unsigned int Bcf_insn,unsigned int Bsf_insn,unsigned int Movlw_insn,unsigned int Movwf_insn,unsigned int Location,unsigned int Page0,unsigned int Page1)2002 _set_page_pic12_14(unsigned int Num_pages, unsigned int Page, MemBlock_t *M, unsigned int Byte_address,
2003                    gp_boolean Use_wreg, unsigned int Bcf_insn, unsigned int Bsf_insn, unsigned int Movlw_insn,
2004                    unsigned int Movwf_insn, unsigned int Location, unsigned int Page0, unsigned int Page1)
2005 {
2006   uint16_t     data;
2007   unsigned int insn_byte_len;
2008   char         buf[BUFSIZ];
2009 
2010   assert(Num_pages <= 4);
2011 
2012   if (Num_pages == 1) {
2013     return 0;
2014   }
2015 
2016   snprintf(buf, sizeof(buf), "page_%u", Page);
2017 
2018   if (Use_wreg) {
2019     data = Movlw_insn | Page;
2020     gp_mem_i_put_le(M, Byte_address, data, buf, NULL);
2021     insn_byte_len = 2;
2022     data = Movwf_insn | Location;
2023     gp_mem_i_put_le(M, Byte_address + insn_byte_len, data, buf, NULL);
2024     insn_byte_len += 2;
2025   }
2026   else {
2027     /* page low bit */
2028     data = ((Page & 1) ? Bsf_insn : Bcf_insn) | Page0 | Location;
2029     gp_mem_i_put_le(M, Byte_address, data, buf, NULL);
2030     insn_byte_len = 2;
2031 
2032     if (Num_pages > 2) {
2033       /* page high bit */
2034       data = ((Page & 2) ? Bsf_insn : Bcf_insn) | Page1 | Location;
2035       gp_mem_i_put_le(M, Byte_address + insn_byte_len, data, buf, NULL);
2036       insn_byte_len += 2;
2037     }
2038   }
2039 
2040   return insn_byte_len;
2041 }
2042 
2043 /*------------------------------------------------------------------------------------------------*/
2044 
2045 static unsigned int
_pagesel_byte_length_pic12_14(unsigned int Num_pages,gp_boolean Use_wreg)2046 _pagesel_byte_length_pic12_14(unsigned int Num_pages, gp_boolean Use_wreg)
2047 {
2048   if (Num_pages == 1) {
2049     return 0;
2050   }
2051 
2052   if (Use_wreg) {
2053     return 4;
2054   }
2055   else {
2056     return ((Num_pages > 2) ? 4 : 2);
2057   }
2058 }
2059 
2060 /*------------------------------------------------------------------------------------------------*/
2061 
2062 static unsigned int
_set_bank_pic12_14(unsigned int Num_banks,unsigned int Bank,MemBlock_t * M,unsigned int Byte_address,unsigned int Bcf_insn,unsigned int Bsf_insn,unsigned int Location,unsigned int Bank0,unsigned int Bank1,unsigned int Bank2,gp_boolean Mpasm_compatible)2063 _set_bank_pic12_14(unsigned int Num_banks, unsigned int Bank, MemBlock_t *M, unsigned int Byte_address,
2064                    unsigned int Bcf_insn, unsigned int Bsf_insn, unsigned int Location,
2065                    unsigned int Bank0, unsigned int Bank1, unsigned int Bank2, gp_boolean Mpasm_compatible)
2066 {
2067   uint16_t     data;
2068   unsigned int insn_byte_len;
2069   char         buf[BUFSIZ];
2070 
2071   /* 16F59 */
2072   assert(Num_banks <= 8);
2073 
2074   if (Num_banks == 1) {
2075     return 0;
2076   }
2077 
2078   snprintf(buf, sizeof(buf), "bank_%u", Bank);
2079 
2080   /* bank low bit */
2081   data = ((Bank & 1) ? Bsf_insn : Bcf_insn) | Bank0 | Location;
2082   gp_mem_i_put_le(M, Byte_address, data, buf, NULL);
2083   insn_byte_len = 2;
2084 
2085   if ((Num_banks > 2) || Mpasm_compatible) {
2086     /* bank high bit */
2087     data = ((Bank & 2) ? Bsf_insn : Bcf_insn) | Bank1 | Location;
2088     gp_mem_i_put_le(M, Byte_address + insn_byte_len, data, buf, NULL);
2089     insn_byte_len += 2;
2090   }
2091 
2092   if (Num_banks > 4) {
2093     /* bank upper bit */
2094     data = ((Bank & 4) ? Bsf_insn : Bcf_insn) | Bank2 | Location;
2095     gp_mem_i_put_le(M, Byte_address + insn_byte_len, data, buf, NULL);
2096     insn_byte_len += 2;
2097   }
2098 
2099   return insn_byte_len;
2100 }
2101 
2102 /*------------------------------------------------------------------------------------------------*/
2103 
2104 static unsigned int
_banksel_byte_length_pic12_14(unsigned int Num_banks,gp_boolean Mpasm_compatible)2105 _banksel_byte_length_pic12_14(unsigned int Num_banks, gp_boolean Mpasm_compatible)
2106 {
2107   int insn_byte_len;
2108 
2109   if (Num_banks == 1) {
2110     return 0;
2111   }
2112 
2113   insn_byte_len = 2;
2114 
2115   if ((Num_banks > 2) || (Mpasm_compatible)) {
2116     insn_byte_len += 2;
2117   }
2118 
2119   if (Num_banks > 4) {
2120     insn_byte_len += 2;
2121   }
2122 
2123   return insn_byte_len;
2124 }
2125 
2126 /*------------------------------------------------------------------------------------------------*/
2127 
2128 /* PIC12 */
2129 
2130 static unsigned int
_id_location_pic12(pic_processor_t Processor)2131 _id_location_pic12(pic_processor_t Processor)
2132 {
2133   if ((Processor->idlocs_addrs[0] > 0) && (Processor->idlocs_addrs[1] > 0)) {
2134     /* We carry org in the struct px, but return byte address. */
2135     return gp_byte_from_insn(Processor->class->org_to_byte_shift, Processor->idlocs_addrs[0]);
2136   }
2137   return 0;
2138 }
2139 
2140 /*------------------------------------------------------------------------------------------------*/
2141 
2142 static int
_bank_from_addr_pic12(int Address)2143 _bank_from_addr_pic12(int Address)
2144 {
2145   if (Address < 0) {
2146     return -1;
2147   }
2148 
2149   return ((Address >> PIC12_BANK_SHIFT) & PIC12_BMSK_BANK);
2150 }
2151 
2152 /*------------------------------------------------------------------------------------------------*/
2153 
2154 static unsigned int
_set_bank_pic12(unsigned int Num_banks,unsigned int Bank,MemBlock_t * M,unsigned int Byte_address,gp_boolean Mpasm_compatible)2155 _set_bank_pic12(unsigned int Num_banks, unsigned int Bank, MemBlock_t *M, unsigned int Byte_address,
2156                 gp_boolean Mpasm_compatible)
2157 {
2158   return _set_bank_pic12_14(Num_banks, Bank, M, Byte_address,
2159                             PIC12_INSN_BCF, PIC12_INSN_BSF,
2160                             PIC12_REG_FSR,
2161                             PIC12_BIT_FSR_RP0 << PIC12_INSN_BxF_BITSHIFT,
2162                             PIC12_BIT_FSR_RP1 << PIC12_INSN_BxF_BITSHIFT,
2163                             PIC12_BIT_FSR_RP2 << PIC12_INSN_BxF_BITSHIFT,
2164                             Mpasm_compatible);
2165 }
2166 
2167 /*------------------------------------------------------------------------------------------------*/
2168 
2169 static unsigned int
_check_page_pic12(unsigned int Insn_address)2170 _check_page_pic12(unsigned int Insn_address)
2171 {
2172   return ((Insn_address & PIC12_PAGE_BITS) >> PIC12_PAGE_SHIFT);
2173 }
2174 
2175 /*------------------------------------------------------------------------------------------------*/
2176 
2177 static unsigned int
_page_addr_pic12(unsigned int Insn_address)2178 _page_addr_pic12(unsigned int Insn_address)
2179 {
2180   return (Insn_address & PIC12_PAGE_BITS);
2181 }
2182 
2183 /*------------------------------------------------------------------------------------------------*/
2184 
2185 static unsigned int
_addr_from_page_bits_pic12(unsigned int Bits)2186 _addr_from_page_bits_pic12(unsigned int Bits)
2187 {
2188   return _page_addr_pic12(Bits << PIC12_PAGE_SHIFT);
2189 }
2190 
2191 /*------------------------------------------------------------------------------------------------*/
2192 
2193 static unsigned int
_set_page_pic12(unsigned int Num_pages,unsigned int Page,MemBlock_t * M,unsigned int Byte_address,gp_boolean Use_wreg)2194 _set_page_pic12(unsigned int Num_pages, unsigned int Page, MemBlock_t *M, unsigned int Byte_address,
2195                 gp_boolean Use_wreg)
2196 {
2197   return _set_page_pic12_14(Num_pages, Page, M, Byte_address, Use_wreg,
2198                             PIC12_INSN_BCF,   PIC12_INSN_BSF,
2199                             PIC12_INSN_MOVLW, PIC12_INSN_MOVWF,
2200                             PIC12_REG_STATUS,
2201                             PIC12_BIT_STATUS_PA0 << PIC12_INSN_BxF_BITSHIFT,
2202                             PIC12_BIT_STATUS_PA1 << PIC12_INSN_BxF_BITSHIFT);
2203 }
2204 
2205 /*------------------------------------------------------------------------------------------------*/
2206 
2207 static unsigned int
_reloc_call_pic12(unsigned int Insn_address)2208 _reloc_call_pic12(unsigned int Insn_address)
2209 {
2210   return (Insn_address & PIC12_BMSK_CALL);
2211 }
2212 
2213 /*------------------------------------------------------------------------------------------------*/
2214 
2215 static unsigned int
_reloc_goto_pic12(unsigned int Insn_address)2216 _reloc_goto_pic12(unsigned int Insn_address)
2217 {
2218   return (Insn_address & PIC12_BMSK_GOTO);
2219 }
2220 
2221 /*------------------------------------------------------------------------------------------------*/
2222 
2223 static unsigned int
_reloc_f_pic12(unsigned int Address)2224 _reloc_f_pic12(unsigned int Address)
2225 {
2226   return (Address & PIC12_BMSK_FILE);
2227 }
2228 
2229 /*------------------------------------------------------------------------------------------------*/
2230 
2231 static unsigned int
_reloc_tris_pic12(unsigned int Address)2232 _reloc_tris_pic12(unsigned int Address)
2233 {
2234   /* TODO This is not accurate, for example PIC12F510/16F506 only has
2235      three bits and allowed values of 6 and 7. MPASM 5.34 has
2236      Error[126]  : Argument out of range (0000 not between 0005 and 0009)
2237   */
2238 
2239   /* Seen in the data sheets that everywhere three bits there are in the PIC12 family. */
2240   return (Address & PIC12_BMSK_TRIS);
2241 }
2242 
2243 /*------------------------------------------------------------------------------------------------*/
2244 
2245 /* PIC12E */
2246 
2247 static int
_bank_from_addr_pic12e(int Address)2248 _bank_from_addr_pic12e(int Address)
2249 {
2250   if (Address < 0) {
2251     return -1;
2252   }
2253 
2254   return ((Address >> PIC12_BANK_SHIFT) & PIC12E_BMSK_BANK);
2255 }
2256 
2257 /*------------------------------------------------------------------------------------------------*/
2258 
2259 static unsigned int
_set_bank_pic12e(unsigned int Num_banks,unsigned int Bank,MemBlock_t * M,unsigned int Byte_address,gp_boolean Mpasm_compatible)2260 _set_bank_pic12e(unsigned int Num_banks, unsigned int Bank, MemBlock_t *M, unsigned int Byte_address,
2261                  gp_boolean Mpasm_compatible)
2262 {
2263   uint16_t data;
2264   char     buf[BUFSIZ];
2265 
2266   (void)Mpasm_compatible;
2267 
2268   Bank &= PIC12E_BMSK_BANK;
2269   data  = PIC12E_INSN_MOVLB | Bank;
2270   snprintf(buf, sizeof(buf), "bank_%u", Bank);
2271 
2272   gp_mem_i_put_le(M, Byte_address, data, buf, NULL);
2273   return 2;
2274 }
2275 
2276 /*------------------------------------------------------------------------------------------------*/
2277 
2278 static unsigned int
_banksel_byte_length_pic12e(unsigned int Num_banks,gp_boolean Mpasm_compatible)2279 _banksel_byte_length_pic12e(unsigned int Num_banks, gp_boolean Mpasm_compatible)
2280 {
2281   (void)Num_banks;
2282   (void)Mpasm_compatible;
2283   return 2;
2284 }
2285 
2286 /*------------------------------------------------------------------------------------------------*/
2287 
2288 static unsigned int
_reloc_tris_pic12e(unsigned int address)2289 _reloc_tris_pic12e(unsigned int address)
2290 {
2291   return (address & PIC12_BMSK_TRIS);
2292 }
2293 
2294 /*------------------------------------------------------------------------------------------------*/
2295 
2296 static const insn_t *
_find_insn_pic12e(proc_class_t Class,unsigned int Opcode)2297 _find_insn_pic12e(proc_class_t Class, unsigned int Opcode)
2298 {
2299   int i;
2300 
2301   (void)Class;
2302 
2303   /* First explore the enhanced instruction set. */
2304   for (i = 0; i < num_op_16c5xx_enh; i++) {
2305     if ((op_16c5xx_enh[i].mask & Opcode) == op_16c5xx_enh[i].opcode) {
2306       return &op_16c5xx_enh[i];
2307     }
2308   }
2309 
2310   for (i = 0; i < num_op_12c5xx; i++) {
2311     if ((op_12c5xx[i].mask & Opcode) == op_12c5xx[i].opcode) {
2312       return &op_12c5xx[i];
2313     }
2314   }
2315 
2316   return NULL;
2317 }
2318 
2319 /*------------------------------------------------------------------------------------------------*/
2320 
2321 /* SX */
2322 
2323 static unsigned int
_check_page_sx(unsigned int Insn_address)2324 _check_page_sx(unsigned int Insn_address)
2325 {
2326   return ((Insn_address & PIC12_PAGE_BITS) >> PIC12_PAGE_SHIFT);
2327 }
2328 
2329 /*------------------------------------------------------------------------------------------------*/
2330 
2331 static unsigned int
_page_addr_sx(unsigned int Insn_address)2332 _page_addr_sx(unsigned int Insn_address)
2333 {
2334   return (Insn_address & PIC12_PAGE_BITS);
2335 }
2336 
2337 /*------------------------------------------------------------------------------------------------*/
2338 
2339 static unsigned int
_addr_from_page_bits_sx(unsigned int Bits)2340 _addr_from_page_bits_sx(unsigned int Bits)
2341 {
2342   return _page_addr_sx(Bits << PIC12_PAGE_SHIFT);
2343 }
2344 
2345 /*------------------------------------------------------------------------------------------------*/
2346 
2347 static unsigned int
_set_page_sx(unsigned int Num_pages,unsigned int Page,MemBlock_t * M,unsigned int Byte_address,gp_boolean Use_wreg)2348 _set_page_sx(unsigned int Num_pages, unsigned int Page, MemBlock_t *M, unsigned int Byte_address,
2349              gp_boolean Use_wreg)
2350 {
2351   uint16_t data;
2352   char     buf[BUFSIZ];
2353 
2354   if (Num_pages == 1) {
2355     return 0;
2356   }
2357 
2358   Page &= MASK_SX_PAGE;
2359   snprintf(buf, sizeof(buf), "page_%u", Page);
2360 
2361   data = SX_INSN_PAGE | Page;
2362   gp_mem_i_put_le(M, Byte_address, data, buf, NULL);
2363   return 2;
2364 }
2365 
2366 /*------------------------------------------------------------------------------------------------*/
2367 
2368 /* PIC14 */
2369 
2370 static unsigned int
_id_location_pic14(pic_processor_t Processor)2371 _id_location_pic14(pic_processor_t Processor)
2372 {
2373   if ((Processor->idlocs_addrs[0] > 0) && (Processor->idlocs_addrs[1] > 0)) {
2374     /* We carry org in the struct px, but return byte address. */
2375     return gp_byte_from_insn(Processor->class->org_to_byte_shift, Processor->idlocs_addrs[0]);
2376   }
2377   return 0;
2378 }
2379 
2380 /*------------------------------------------------------------------------------------------------*/
2381 
2382 static int
_bank_from_addr_pic14(int Address)2383 _bank_from_addr_pic14(int Address)
2384 {
2385   if (Address < 0) {
2386     return -1;
2387   }
2388 
2389   return ((Address >> PIC14_BANK_SHIFT) & PIC14_BMSK_BANK);
2390 }
2391 
2392 /*------------------------------------------------------------------------------------------------*/
2393 
2394 static unsigned int
_set_bank_pic14(unsigned int Num_banks,unsigned int Bank,MemBlock_t * M,unsigned int Byte_address,gp_boolean Mpasm_compatible)2395 _set_bank_pic14(unsigned int Num_banks, unsigned int Bank, MemBlock_t *M, unsigned int Byte_address,
2396                 gp_boolean Mpasm_compatible)
2397 {
2398   return _set_bank_pic12_14(Num_banks, Bank, M, Byte_address,
2399                             PIC14_INSN_BCF, PIC14_INSN_BSF,
2400                             PIC14_REG_STATUS,
2401                             PIC14_BIT_STATUS_RP0 << PIC14_INSN_BxF_BITSHIFT,
2402                             PIC14_BIT_STATUS_RP1 << PIC14_INSN_BxF_BITSHIFT,
2403                             -1,
2404                             Mpasm_compatible);
2405 }
2406 
2407 /*------------------------------------------------------------------------------------------------*/
2408 
2409 static int
_check_ibank_pic14(int Address)2410 _check_ibank_pic14(int Address)
2411 {
2412   if (Address < 0) {
2413     return -1;
2414   }
2415 
2416   return ((Address >> 8) & 0x0f);
2417 }
2418 
2419 /*------------------------------------------------------------------------------------------------*/
2420 
2421 static unsigned int
_set_ibank_pic14(unsigned int Num_banks,unsigned int Bank,MemBlock_t * M,unsigned int Byte_address)2422 _set_ibank_pic14(unsigned int Num_banks, unsigned int Bank, MemBlock_t *M, unsigned int Byte_address)
2423 {
2424   /* bcf STATUS,7 or bsf STATUS,7  (STATUS: 3) */
2425   /* bcf: 01 00bb bfff ffff
2426    * bsf: 01 01bb bfff ffff */
2427   gp_mem_i_put_le(M, Byte_address, (Bank == 0) ? 0x1383 : 0x1783, (Bank == 0) ? "ibank0" : "ibank1", NULL);
2428   return 2;
2429 }
2430 
2431 /*------------------------------------------------------------------------------------------------*/
2432 
2433 static unsigned int
_check_page_pic14(unsigned int insn_address)2434 _check_page_pic14(unsigned int insn_address)
2435 {
2436   return ((insn_address & PIC14_PAGE_BITS) >> PIC14_PAGE_SHIFT);
2437 }
2438 
2439 /*------------------------------------------------------------------------------------------------*/
2440 
2441 static unsigned int
_page_addr_pic14(unsigned int Insn_address)2442 _page_addr_pic14(unsigned int Insn_address)
2443 {
2444   return (Insn_address & PIC14_PAGE_BITS);
2445 }
2446 
2447 /*------------------------------------------------------------------------------------------------*/
2448 
2449 static unsigned int
_addr_from_page_bits_pic14(unsigned int Bits)2450 _addr_from_page_bits_pic14(unsigned int Bits)
2451 {
2452   return _page_addr_pic14(Bits << PIC14_PAGE_SHIFT);
2453 }
2454 
2455 /*------------------------------------------------------------------------------------------------*/
2456 
2457 static unsigned int
_set_page_pic14(unsigned int Num_pages,unsigned int Page,MemBlock_t * M,unsigned int Byte_address,gp_boolean Use_wreg)2458 _set_page_pic14(unsigned int Num_pages, unsigned int Page, MemBlock_t *M, unsigned int Byte_address,
2459                 gp_boolean Use_wreg)
2460 {
2461   return _set_page_pic12_14(Num_pages, Page, M, Byte_address, Use_wreg,
2462                             PIC14_INSN_BCF,   PIC14_INSN_BSF,
2463                             PIC14_INSN_MOVLW, PIC14_INSN_MOVWF,
2464                             PIC14_REG_PCLATH,
2465                             PIC14_BIT_PCLATH_3 << PIC14_INSN_BxF_BITSHIFT,
2466                             PIC14_BIT_PCLATH_4 << PIC14_INSN_BxF_BITSHIFT);
2467 }
2468 
2469 /*------------------------------------------------------------------------------------------------*/
2470 
2471 static unsigned int
_reloc_call_pic14(unsigned int Insn_address)2472 _reloc_call_pic14(unsigned int Insn_address)
2473 {
2474   return (Insn_address & PIC14_BMSK_BRANCH);
2475 }
2476 
2477 /*------------------------------------------------------------------------------------------------*/
2478 
2479 static unsigned int
_reloc_goto_pic14(unsigned int Insn_address)2480 _reloc_goto_pic14(unsigned int Insn_address)
2481 {
2482   return (Insn_address & PIC14_BMSK_BRANCH);
2483 }
2484 
2485 /*------------------------------------------------------------------------------------------------*/
2486 
2487 static unsigned int
_reloc_f_pic14(unsigned int Address)2488 _reloc_f_pic14(unsigned int Address)
2489 {
2490   return (Address & PIC14_BMSK_FILE);
2491 }
2492 
2493 /*------------------------------------------------------------------------------------------------*/
2494 
2495 static unsigned int
_reloc_tris_pic14(unsigned int Address)2496 _reloc_tris_pic14(unsigned int Address)
2497 {
2498   /* According to the data sheets, the TRIS instruction does not exist in the PIC14 family. */
2499   return (Address & PIC14_BMSK_TRIS);
2500 }
2501 
2502 /*------------------------------------------------------------------------------------------------*/
2503 
2504 static void
_patch_strict_pic14(void)2505 _patch_strict_pic14(void)
2506 {
2507   unsigned int i;
2508   unsigned int j;
2509 
2510   for (i = 0, j = 0; (i < num_op_16cxx) && (j < num_op_16cxx_strict_mask); ++i) {
2511     if (strcasecmp(op_16cxx[i].name, op_16cxx_strict_mask[j].name) == 0) {
2512       op_16cxx[i].mask = op_16cxx_strict_mask[j].mask;
2513       ++j;
2514     }
2515   }
2516 }
2517 
2518 /*------------------------------------------------------------------------------------------------*/
2519 
2520 /* PIC14E */
2521 
2522 static int
_bank_from_addr_pic14e(int Address)2523 _bank_from_addr_pic14e(int Address)
2524 {
2525   if (Address < 0) {
2526     return -1;
2527   }
2528 
2529   return ((Address >> PIC14_BANK_SHIFT) & PIC14E_BMSK_BANK);
2530 }
2531 
2532 /*------------------------------------------------------------------------------------------------*/
2533 
2534 static unsigned int
_set_bank_pic14e(unsigned int Num_banks,unsigned int Bank,MemBlock_t * M,unsigned int Byte_address,gp_boolean Mpasm_compatible)2535 _set_bank_pic14e(unsigned int Num_banks, unsigned int Bank, MemBlock_t *M, unsigned int Byte_address,
2536                  gp_boolean Mpasm_compatible)
2537 {
2538   uint16_t data;
2539   char     buf[BUFSIZ];
2540 
2541   (void)Mpasm_compatible;
2542 
2543   Bank &= PIC14E_BMSK_BANK;
2544   data  = PIC14E_INSN_MOVLB | Bank;
2545   snprintf(buf, sizeof(buf), "bank_%u", Bank);
2546 
2547   gp_mem_i_put_le(M, Byte_address, data, buf, NULL);
2548   return 2;
2549 }
2550 
2551 /*------------------------------------------------------------------------------------------------*/
2552 
2553 static unsigned int
_banksel_byte_length_pic14e(unsigned int Num_banks,gp_boolean Mpasm_compatible)2554 _banksel_byte_length_pic14e(unsigned int Num_banks, gp_boolean Mpasm_compatible)
2555 {
2556   (void)Num_banks;
2557   (void)Mpasm_compatible;
2558   return 2;
2559 }
2560 
2561 /*------------------------------------------------------------------------------------------------*/
2562 
2563 static int
_check_ibank_pic14e(int Address)2564 _check_ibank_pic14e(int Address)
2565 {
2566   if (Address < 0) {
2567     return -1;
2568   }
2569 
2570   return ((Address >> 8) & 0x0f);
2571 }
2572 
2573 /*------------------------------------------------------------------------------------------------*/
2574 
2575 static unsigned int
_set_ibank_pic14e(unsigned int Num_banks,unsigned int Bank,MemBlock_t * M,unsigned int Byte_address)2576 _set_ibank_pic14e(unsigned int Num_banks, unsigned int Bank, MemBlock_t *M, unsigned int Byte_address)
2577 {
2578   /* bcf: 01 00bb bfff ffff
2579    * bsf: 01 01bb bfff ffff
2580    *   PIC14E
2581    * FSR0H: 0000bbbb
2582    * FSR0L: blllllll
2583    *   PIC14EX
2584    * FSR0H: 000bbbbb
2585    * FSR0L: blllllll
2586    */
2587   unsigned int mask;
2588   unsigned int bit;
2589   char         buf[BUFSIZ];
2590 
2591   snprintf(buf, sizeof(buf), "bank_%u", Bank);
2592 
2593   Num_banks >>= 1; /* FSR0L bit 7. */
2594   for (bit = 0, mask = 0x01; mask < Num_banks; ++bit, mask <<= 1, Byte_address += 2)
2595     gp_mem_i_put_le(M,
2596                     Byte_address,
2597                     ((Bank & mask) ? PIC14_INSN_BSF : PIC14_INSN_BCF) |
2598                         (bit << PIC14_INSN_BxF_BITSHIFT) |
2599                         PIC14E_REG_FSR0H,
2600                     buf, NULL);
2601 
2602   return (bit * 2);
2603 }
2604 
2605 /*------------------------------------------------------------------------------------------------*/
2606 
2607 static unsigned int
_check_page_pic14e(unsigned int Insn_address)2608 _check_page_pic14e(unsigned int Insn_address)
2609 {
2610   return ((Insn_address >> 8) & PIC14E_BMSK_PAGE512);
2611 }
2612 
2613 /*------------------------------------------------------------------------------------------------*/
2614 
2615 static unsigned int
_page_addr_pic14e(unsigned int Insn_address)2616 _page_addr_pic14e(unsigned int Insn_address)
2617 {
2618   return (Insn_address & PIC14E_PAGE_BITS);
2619 }
2620 
2621 /*------------------------------------------------------------------------------------------------*/
2622 
2623 static unsigned int
_addr_from_page_bits_pic14e(unsigned int Bits)2624 _addr_from_page_bits_pic14e(unsigned int Bits)
2625 {
2626   return _page_addr_pic14e(Bits << 8);
2627 }
2628 
2629 /*------------------------------------------------------------------------------------------------*/
2630 
2631 static unsigned int
_set_page_pic14e(unsigned int Num_pages,unsigned int Page,MemBlock_t * M,unsigned int Byte_address,gp_boolean Use_wreg)2632 _set_page_pic14e(unsigned int Num_pages, unsigned int Page, MemBlock_t *M, unsigned int Byte_address,
2633                  gp_boolean Use_wreg)
2634 {
2635   uint16_t     data;
2636   unsigned int insn_byte_len;
2637   char         buf[BUFSIZ];
2638 
2639   if (Num_pages == 1) {
2640     return 0;
2641   }
2642 
2643   /* Page is in bits 6:0 of PCLATH. */
2644   Page &= PIC14E_BMSK_PAGE512;
2645   snprintf(buf, sizeof(buf), "page_%u", Page);
2646 
2647   if (Use_wreg) {
2648     data = PIC14_INSN_MOVLW | Page;
2649     gp_mem_i_put_le(M, Byte_address, data, buf, NULL);
2650     insn_byte_len = 2;
2651     data = PIC14_INSN_MOVWF | PIC14_REG_PCLATH;
2652     gp_mem_i_put_le(M, Byte_address + insn_byte_len, data, buf, NULL);
2653     insn_byte_len += 2;
2654   }
2655   else {
2656     data = PIC14E_INSN_MOVLP | Page;
2657     gp_mem_i_put_le(M, Byte_address, data, buf, NULL);
2658     insn_byte_len = 2;
2659   }
2660 
2661   return insn_byte_len;
2662 }
2663 
2664 /*------------------------------------------------------------------------------------------------*/
2665 
2666 static unsigned int
_pagesel_byte_length_pic14e(unsigned int Num_pages,gp_boolean Use_wreg)2667 _pagesel_byte_length_pic14e(unsigned int Num_pages, gp_boolean Use_wreg)
2668 {
2669   if (Num_pages == 1) {
2670     return 0;
2671   }
2672 
2673   return ((Use_wreg) ? 4 : 2);
2674 }
2675 
2676 /*------------------------------------------------------------------------------------------------*/
2677 
2678 static unsigned int
_reloc_movlb_pic14e(unsigned int Address)2679 _reloc_movlb_pic14e(unsigned int Address)
2680 {
2681   return ((Address >> PIC14_BANK_SHIFT) & 0xff);
2682 }
2683 
2684 /*------------------------------------------------------------------------------------------------*/
2685 
2686 static unsigned int
_reloc_bra_pic14e(const gp_section_t * Section,unsigned int Value,unsigned int Byte_address)2687 _reloc_bra_pic14e(const gp_section_t *Section, unsigned int Value, unsigned int Byte_address)
2688 {
2689   int offset;
2690 
2691   offset = Value - (Byte_address / 2) - 1;
2692 
2693   if ((offset > 0xff) || (offset < -0x100)) {
2694     gp_warning("Relative branch out of range in at %#x of section \"%s\".", Byte_address << 1, Section->name);
2695   }
2696 
2697   return (offset & PIC14E_BMSK_RBRA9);
2698 }
2699 
2700 /*------------------------------------------------------------------------------------------------*/
2701 
2702 static unsigned int
_reloc_high_pic14e(gp_boolean Is_code,unsigned int Value)2703 _reloc_high_pic14e(gp_boolean Is_code, unsigned int Value)
2704 {
2705   /* set 7th bit if in is_code */
2706   return (((Value >> 8) & 0xff) | (Is_code ? PIC14E_FSRxH_FLASH_SEL : 0));
2707 }
2708 
2709 /*------------------------------------------------------------------------------------------------*/
2710 
2711 static const insn_t *
_find_insn_pic14e(proc_class_t Class,unsigned int Opcode)2712 _find_insn_pic14e(proc_class_t Class, unsigned int Opcode)
2713 {
2714   int i;
2715 
2716   (void)Class;
2717 
2718   /* might be from the enhanced instruction set */
2719   for (i = 0; i < num_op_16cxx_enh; i++) {
2720     if ((op_16cxx_enh[i].mask & Opcode) == op_16cxx_enh[i].opcode) {
2721       return &op_16cxx_enh[i];
2722     }
2723   }
2724   for (i = 0; i < num_op_16cxx; i++) {
2725     if ((op_16cxx[i].mask & Opcode) == op_16cxx[i].opcode) {
2726       return &op_16cxx[i];
2727     }
2728   }
2729   return NULL;
2730 }
2731 
2732 /*------------------------------------------------------------------------------------------------*/
2733 
2734 /* PIC14EX */
2735 
2736 static int
_bank_from_addr_pic14ex(int Address)2737 _bank_from_addr_pic14ex(int Address)
2738 {
2739   if (Address < 0) {
2740     return -1;
2741   }
2742 
2743   return ((Address >> PIC14_BANK_SHIFT) & PIC14EX_BMSK_BANK);
2744 }
2745 
2746 /*------------------------------------------------------------------------------------------------*/
2747 
2748 static unsigned int
_set_bank_pic14ex(unsigned int Num_banks,unsigned int Bank,MemBlock_t * M,unsigned int Byte_address,gp_boolean Mpasm_compatible)2749 _set_bank_pic14ex(unsigned int Num_banks, unsigned int Bank, MemBlock_t *M, unsigned int Byte_address,
2750                   gp_boolean Mpasm_compatible)
2751 {
2752   uint16_t data;
2753   char     buf[BUFSIZ];
2754 
2755   (void)Mpasm_compatible;
2756 
2757   Bank &= PIC14EX_BMSK_BANK;
2758   data  = PIC14EX_INSN_MOVLB | Bank;
2759   snprintf(buf, sizeof(buf), "bank_%u", Bank);
2760 
2761   gp_mem_i_put_le(M, Byte_address, data, buf, NULL);
2762   return 2;
2763 }
2764 
2765 /*------------------------------------------------------------------------------------------------*/
2766 
2767 static const insn_t *
_find_insn_pic14ex(proc_class_t Class,unsigned int Opcode)2768 _find_insn_pic14ex(proc_class_t Class, unsigned int Opcode)
2769 {
2770   int i;
2771 
2772   (void)Class;
2773 
2774   /* might be from the enhanced instruction set */
2775   for (i = 0; i < num_op_16cxx_enhx; i++) {
2776     if ((op_16cxx_enhx[i].mask & Opcode) == op_16cxx_enhx[i].opcode) {
2777       return &op_16cxx_enhx[i];
2778     }
2779   }
2780   for (i = 0; i < num_op_16cxx; i++) {
2781     if ((op_16cxx[i].mask & Opcode) == op_16cxx[i].opcode) {
2782       return &op_16cxx[i];
2783     }
2784   }
2785   return NULL;
2786 }
2787 
2788 /*------------------------------------------------------------------------------------------------*/
2789 
2790 /* PIC16 */
2791 
2792 static int
_bank_from_addr_pic16(int Address)2793 _bank_from_addr_pic16(int Address)
2794 {
2795   if (Address < 0) {
2796     return -1;
2797   }
2798 
2799   if ((Address & 0xff) < 0x20) {
2800     return (Address >> PIC16_BANK_SHIFT) & PIC16_BMSK_BANK;
2801   }
2802   else {
2803     /* 0x200 turns MOVLB to MOVLR for setting GPR RAM bank in set_bank. */
2804     return (0x200 + ((Address >> PIC16_BANK_SHIFT) & PIC16_BMSK_BANK));
2805   }
2806 }
2807 
2808 /*------------------------------------------------------------------------------------------------*/
2809 
2810 static unsigned int
_set_bank_pic16(unsigned int Num_banks,unsigned int Bank,MemBlock_t * M,unsigned int Byte_address,gp_boolean Mpasm_compatible)2811 _set_bank_pic16(unsigned int Num_banks, unsigned int Bank, MemBlock_t *M, unsigned int Byte_address,
2812                 gp_boolean Mpasm_compatible)
2813 {
2814   char buf[BUFSIZ];
2815 
2816   (void)Mpasm_compatible;
2817 
2818   Bank &= 0x200 | PIC16_BMSK_BANK;
2819   snprintf(buf, sizeof(buf), "bank_%u", Bank & PIC16_BMSK_BANK);
2820 
2821   gp_mem_i_put_le(M, Byte_address, PIC16_INSN_MOVLB | Bank, buf, NULL);
2822   return 2;
2823 }
2824 
2825 /*------------------------------------------------------------------------------------------------*/
2826 
2827 static unsigned int
_set_ibank_pic16(unsigned int Num_banks,unsigned int Bank,MemBlock_t * M,unsigned int Byte_address)2828 _set_ibank_pic16(unsigned int Num_banks, unsigned int Bank, MemBlock_t *M, unsigned int Byte_address)
2829 {
2830   return _set_bank_pic16(Num_banks, Bank, M, Byte_address, false);
2831 }
2832 
2833 /*------------------------------------------------------------------------------------------------*/
2834 
2835 static unsigned int
_banksel_byte_length_pic16(unsigned int Num_banks,gp_boolean Mpasm_compatible)2836 _banksel_byte_length_pic16(unsigned int Num_banks, gp_boolean Mpasm_compatible)
2837 {
2838   (void)Num_banks;
2839   (void)Mpasm_compatible;
2840   return 2;
2841 }
2842 
2843 /*------------------------------------------------------------------------------------------------*/
2844 
2845 static unsigned int
_check_page_pic16(unsigned int Insn_address)2846 _check_page_pic16(unsigned int Insn_address)
2847 {
2848   return ((Insn_address >> 8) & PIC16_BMSK_PAGE);
2849 }
2850 
2851 /*------------------------------------------------------------------------------------------------*/
2852 
2853 static unsigned int
_page_addr_pic16(unsigned int Insn_address)2854 _page_addr_pic16(unsigned int Insn_address)
2855 {
2856   return (Insn_address & (PIC16_BMSK_PAGE << 8));
2857 }
2858 
2859 /*------------------------------------------------------------------------------------------------*/
2860 
2861 static unsigned int
_addr_from_page_bits_pic16(unsigned int Bits)2862 _addr_from_page_bits_pic16(unsigned int Bits)
2863 {
2864   return _page_addr_pic16(Bits << 8);
2865 }
2866 
2867 /*------------------------------------------------------------------------------------------------*/
2868 
2869 static unsigned int
_set_page_pic16(unsigned int Num_pages,unsigned int Page,MemBlock_t * M,unsigned int Byte_address,gp_boolean Use_wreg)2870 _set_page_pic16(unsigned int Num_pages, unsigned int Page, MemBlock_t *M, unsigned int Byte_address,
2871                 gp_boolean Use_wreg)
2872 {
2873   uint16_t data;
2874   char     buf[BUFSIZ];
2875 
2876   Page &= PIC16_BMSK_PAGE;
2877   snprintf(buf, sizeof(buf), "page_%u", Page);
2878 
2879   data = PIC16_INSN_MOVLW | Page;
2880   gp_mem_i_put_le(M, Byte_address,     data, buf, NULL);
2881   data = PIC16_INSN_MOVWF | PIC16_REG_PCLATH;
2882   gp_mem_i_put_le(M, Byte_address + 2, data, buf, NULL);
2883   return 4;
2884 }
2885 
2886 /*------------------------------------------------------------------------------------------------*/
2887 
2888 static unsigned int
_pagesel_byte_length_pic16(unsigned int Num_pages,gp_boolean Use_wreg)2889 _pagesel_byte_length_pic16(unsigned int Num_pages, gp_boolean Use_wreg)
2890 {
2891   (void)Num_pages;
2892   (void)Use_wreg;
2893   return 4;
2894 }
2895 
2896 /*------------------------------------------------------------------------------------------------*/
2897 
2898 static unsigned int
_reloc_call_pic16(unsigned int Insn_address)2899 _reloc_call_pic16(unsigned int Insn_address)
2900 {
2901   return (Insn_address & PIC16_BMSK_BRANCH);
2902 }
2903 
2904 /*------------------------------------------------------------------------------------------------*/
2905 
2906 static unsigned int
_reloc_goto_pic16(unsigned int Insn_address)2907 _reloc_goto_pic16(unsigned int Insn_address)
2908 {
2909   return (Insn_address & PIC16_BMSK_BRANCH);
2910 }
2911 
2912 /*------------------------------------------------------------------------------------------------*/
2913 
2914 static unsigned int
_reloc_f_pic16(unsigned int Address)2915 _reloc_f_pic16(unsigned int Address)
2916 {
2917   return (Address & PIC16_BMSK_FILE);
2918 }
2919 
2920 /*------------------------------------------------------------------------------------------------*/
2921 
2922 /* PIC16E */
2923 
2924 static unsigned int
_id_location_pic16e(pic_processor_t Processor)2925 _id_location_pic16e(pic_processor_t Processor)
2926 {
2927   if ((Processor->idlocs_addrs[0] > 0) && (Processor->idlocs_addrs[1] > 0)) {
2928     return Processor->idlocs_addrs[0];
2929   }
2930   return 0;
2931 }
2932 
2933 /*------------------------------------------------------------------------------------------------*/
2934 
2935 static unsigned int
_set_bank_pic16e(unsigned int Num_banks,unsigned int Bank,MemBlock_t * M,unsigned int Byte_address,gp_boolean Mpasm_compatible)2936 _set_bank_pic16e(unsigned int Num_banks, unsigned int Bank, MemBlock_t *M, unsigned int Byte_address,
2937                  gp_boolean Mpasm_compatible)
2938 {
2939   char buf[BUFSIZ];
2940 
2941   (void)Mpasm_compatible;
2942 
2943   Bank &= ~PIC16E_MASK_MOVLB;
2944   snprintf(buf, sizeof(buf), "bank_%u", Bank);
2945 
2946   gp_mem_i_put_le(M, Byte_address, PIC16E_INSN_MOVLB | Bank, buf, NULL);
2947   return 2;
2948 }
2949 
2950 /*------------------------------------------------------------------------------------------------*/
2951 
2952 static unsigned int
_reloc_call_pic16e(unsigned int Insn_address)2953 _reloc_call_pic16e(unsigned int Insn_address)
2954 {
2955   return ((Insn_address >> 1) & PIC16E_BMSK_BRANCH_LOWER);
2956 }
2957 
2958 /*------------------------------------------------------------------------------------------------*/
2959 
2960 static unsigned int
_reloc_goto_pic16e(unsigned int insn_address)2961 _reloc_goto_pic16e(unsigned int insn_address)
2962 {
2963   return ((insn_address >> 1) & PIC16E_BMSK_BRANCH_LOWER);
2964 }
2965 
2966 /*------------------------------------------------------------------------------------------------*/
2967 
2968 static unsigned int
_reloc_movlb_pic16e(unsigned int Address)2969 _reloc_movlb_pic16e(unsigned int Address)
2970 {
2971   /* The upper byte of the symbol is used for the BSR. This is inconsistent
2972      with the datasheet and the assembler, but is done to maintain
2973      compatibility with mplink. */
2974 /*  return ((Address >> PIC16_BANK_SHIFT) & 0xff); */
2975   return ((Address >> PIC16_BANK_SHIFT) & PIC16E_BMSK_MOVLB);
2976 }
2977 
2978 /*------------------------------------------------------------------------------------------------*/
2979 
2980 static unsigned int
_reloc_bra_pic16e(const gp_section_t * Section,unsigned int Value,unsigned int Byte_address)2981 _reloc_bra_pic16e(const gp_section_t *Section, unsigned int Value, unsigned int Byte_address)
2982 {
2983   int offset;
2984 
2985   if (Value & 1) {
2986     gp_warning("Destination address must be word aligned at %#x of section \"%s\".",
2987                Byte_address, Section->name);
2988   }
2989 
2990   offset = ((int)(Value - Byte_address - 2)) >> 1;
2991 
2992   if ((offset > 0x3ff) || (offset < -0x400)) {
2993     gp_warning("Relative branch out of range in at %#x of section \"%s\".",
2994                Byte_address, Section->name);
2995   }
2996 
2997   return (offset & PIC16E_BMSK_RBRA11);
2998 }
2999 
3000 /*------------------------------------------------------------------------------------------------*/
3001 
3002 static const insn_t *
_find_insn_pic16e(proc_class_t Class,unsigned int Opcode)3003 _find_insn_pic16e(proc_class_t Class, unsigned int Opcode)
3004 {
3005   int i;
3006 
3007   (void)Class;
3008 
3009   if (gp_decode_mnemonics) {
3010     for (i = 0; i < num_op_18cxx_sp; i++) {
3011       if ((op_18cxx_sp[i].mask & Opcode) == op_18cxx_sp[i].opcode) {
3012         return &op_18cxx_sp[i];
3013       }
3014     }
3015   }
3016 
3017   for (i = 0; i < num_op_18cxx; i++) {
3018     if ((op_18cxx[i].mask & Opcode) == op_18cxx[i].opcode) {
3019       return &op_18cxx[i];
3020     }
3021   }
3022 
3023   if (gp_decode_extended) {
3024     /* might be from the extended instruction set */
3025     for (i = 0; i < num_op_18cxx_ext; i++) {
3026       if ((op_18cxx_ext[i].mask & Opcode) == op_18cxx_ext[i].opcode) {
3027         return &op_18cxx_ext[i];
3028       }
3029     }
3030   }
3031 
3032   return NULL;
3033 }
3034 
3035 /*------------------------------------------------------------------------------------------------*/
3036 
3037 static int
_core_sfr_cmp(const void * P0,const void * P1)3038 _core_sfr_cmp(const void *P0, const void *P1)
3039 {
3040   const core_sfr_t *sfr0     = (const core_sfr_t *)P0;
3041   const core_sfr_t *sfr1     = (const core_sfr_t *)P1;
3042   unsigned int      address0 = sfr0->address;
3043   unsigned int      address1 = sfr1->address;
3044 
3045   if (address0 < address1) {
3046     return -1;
3047   }
3048 
3049   if (address0 > address1) {
3050     return 1;
3051   }
3052 
3053   return 0;
3054 }
3055 
3056 /*------------------------------------------------------------------------------------------------*/
3057 
3058 const core_sfr_t *
gp_processor_find_sfr(proc_class_t Class,unsigned int Address)3059 gp_processor_find_sfr(proc_class_t Class, unsigned int Address)
3060 {
3061   core_sfr_t sfr;
3062 
3063   if ((Class == NULL) || (Class->core_sfr_table == NULL) || (Class->core_sfr_number == 0)) {
3064     return NULL;
3065   }
3066 
3067   sfr.address = Address;
3068   return (core_sfr_t *)bsearch(&sfr, Class->core_sfr_table, Class->core_sfr_number,
3069                                sizeof(core_sfr_t), _core_sfr_cmp);
3070 }
3071 
3072 /*------------------------------------------------------------------------------------------------*/
3073 
3074 const char *
gp_processor_find_sfr_name(proc_class_t Class,unsigned int Address)3075 gp_processor_find_sfr_name(proc_class_t Class, unsigned int Address)
3076 {
3077   const core_sfr_t *ret;
3078 
3079   ret = gp_processor_find_sfr(Class, Address);
3080   return ((ret != NULL) ? ret->name : NULL);
3081 }
3082 
3083 /*------------------------------------------------------------------------------------------------*/
3084 
3085 static int
_vector_cmp(const void * P0,const void * P1)3086 _vector_cmp(const void *P0, const void *P1)
3087 {
3088   const vector_t *v0 = (const vector_t *)P0;
3089   const vector_t *v1 = (const vector_t *)P1;
3090   unsigned int    address0 = v0->address;
3091   unsigned int    address1 = v1->address;
3092 
3093   if (address0 < address1) {
3094     return -1;
3095   }
3096   else if (address0 > address1) {
3097     return 1;
3098   }
3099   else {
3100     return 0;
3101   }
3102 }
3103 
3104 /*------------------------------------------------------------------------------------------------*/
3105 
3106 const vector_t *
gp_processor_find_vector(proc_class_t Class,unsigned int Address)3107 gp_processor_find_vector(proc_class_t Class, unsigned int Address)
3108 {
3109   vector_t vec;
3110 
3111   if ((Class == NULL) || (Class->vector_table == NULL) || (Class->vector_number == 0)) {
3112     return NULL;
3113   }
3114 
3115   vec.address = Address;
3116   return (vector_t *)bsearch(&vec, Class->vector_table, Class->vector_number,
3117                              sizeof(vector_t), _vector_cmp);
3118 }
3119 
3120 /*------------------------------------------------------------------------------------------------*/
3121 
3122 static const core_sfr_t _core_sfr_table_pic12[] = {
3123   { 0x000, "INDF"   },
3124   { 0x002, "PCL"    },
3125   { 0x003, "STATUS" },
3126   { 0x004, "FSR"    }
3127 };
3128 
3129 static const vector_t _vector_table_pic12[] = {
3130   { 0x000, "vector_reset" }
3131 };
3132 
3133 static const core_sfr_t _core_sfr_table_sx[] = {
3134   { 0x000, "INDF"   },
3135   { 0x001, "RTCC"   },
3136   { 0x002, "PC"     },
3137   { 0x003, "STATUS" },
3138   { 0x004, "FSR"    },
3139   { 0x005, "RA"     },
3140   { 0x006, "RB"     },
3141   { 0x007, "RC"     }
3142 };
3143 
3144 static const vector_t _vector_table_sx[] = {
3145   { 0x000, "vector_int" }
3146 };
3147 
3148 static const vector_t _vector_table_pic12i[] = {
3149   { 0x000, "vector_reset" },
3150   { 0x004, "vector_int" }
3151 };
3152 
3153 static const core_sfr_t _core_sfr_table_pic14[] = {
3154   { 0x000, "INDF"   },
3155   { 0x002, "PCL"    },
3156   { 0x003, "STATUS" },
3157   { 0x004, "FSR"    },
3158   { 0x00A, "PCLATH" },
3159   { 0x00B, "INTCON" }
3160 };
3161 
3162 static const vector_t _vector_table_pic14[] = {
3163   { 0x000, "vector_reset" },
3164   { 0x004, "vector_int"   }
3165 };
3166 
3167 static const core_sfr_t _core_sfr_table_pic14e[] = {
3168   { 0x000, "INDF0"  },
3169   { 0x001, "INDF1"  },
3170   { 0x002, "PCL"    },
3171   { 0x003, "STATUS" },
3172   { 0x004, "FSR0L"  },
3173   { 0x005, "FSR0H"  },
3174   { 0x006, "FSR1L"  },
3175   { 0x007, "FSR1H"  },
3176   { 0x008, "BSR"    },
3177   { 0x009, "WREG"   },
3178   { 0x00A, "PCLATH" },
3179   { 0x00B, "INTCON" }
3180 };
3181 
3182 static const core_sfr_t _core_sfr_table_pic16[] = {
3183   { 0x000, "INDF0"   },
3184   { 0x001, "FSR0"    },
3185   { 0x002, "PCL"     },
3186   { 0x003, "PCLATH"  },
3187   { 0x004, "ALUSTA"  },
3188   { 0x005, "T0STA"   },
3189   { 0x006, "CPUSTA"  },
3190   { 0x007, "INTSTA"  },
3191   { 0x008, "INDF1"   },
3192   { 0x009, "FSR1"    },
3193   { 0x00A, "WREG"    },
3194   { 0x00B, "TMR0L"   },
3195   { 0x00C, "TMR0H"   },
3196   { 0x00D, "TBLPTRL" },
3197   { 0x00E, "TBLPTRH" },
3198   { 0x00F, "BSR"     }
3199 };
3200 
3201 static const vector_t _vector_table_pic16[] = {
3202   { 0x0000, "vector_reset"     },
3203   { 0x0008, "vector_int_ext"   },
3204   { 0x0010, "vector_int_tmr0"  },
3205   { 0x0018, "vector_int_t0cki" },
3206   { 0x0020, "vector_int_peri"  }
3207 };
3208 
3209 static const core_sfr_t _core_sfr_table_pic16e[] = {
3210   { 0xF80, "PORTA"    },
3211   { 0xF81, "PORTB"    },
3212 
3213   { 0xF89, "LATA"     },
3214   { 0xF8A, "LATB"     },
3215 
3216   { 0xF92, "TRISA"    },
3217   { 0xF93, "TRISB"    },
3218 
3219   { 0xF9D, "PIE1"     },
3220   { 0xF9E, "PIR1"     },
3221   { 0xF9F, "IPR1"     },
3222   { 0xFA0, "PIE2"     },
3223   { 0xFA1, "PIR2"     },
3224   { 0xFA2, "IPR2"     },
3225 
3226   { 0xFCD, "T1CON"    },
3227   { 0xFCE, "TMR1"     },
3228   { 0xFCF, "TMR1H"    },
3229   { 0xFD0, "RCON"     },
3230 
3231   { 0xFD3, "OSCCON"   },
3232 
3233   { 0xFD5, "T0CON"    },
3234   { 0xFD6, "TMR0L"    },
3235   { 0xFD7, "TMR0H"    },
3236   { 0xFD8, "STATUS"   },
3237   { 0xFD9, "FSR2L"    },
3238   { 0xFDA, "FSR2H"    },
3239   { 0xFDB, "PLUSW2"   },
3240   { 0xFDC, "PREINC2"  },
3241   { 0xFDD, "POSTDEC2" },
3242   { 0xFDE, "POSTINC2" },
3243   { 0xFDF, "INDF2"    },
3244   { 0xFE0, "BSR"      },
3245   { 0xFE1, "FSR1L"    },
3246   { 0xFE2, "FSR1H"    },
3247   { 0xFE3, "PLUSW1"   },
3248   { 0xFE4, "PREINC1"  },
3249   { 0xFE5, "POSTDEC1" },
3250   { 0xFE6, "POSTINC1" },
3251   { 0xFE7, "INDF1"    },
3252   { 0xFE8, "WREG"     },
3253   { 0xFE9, "FSR0L"    },
3254   { 0xFEA, "FSR0H"    },
3255   { 0xFEB, "PLUSW0"   },
3256   { 0xFEC, "PREINC0"  },
3257   { 0xFED, "POSTDEC0" },
3258   { 0xFEE, "POSTINC0" },
3259   { 0xFEF, "INDF0"    },
3260   { 0xFF0, "INTCON3"  },
3261   { 0xFF1, "INTCON2"  },
3262   { 0xFF2, "INTCON"   },
3263   { 0xFF3, "PRODL"    },
3264   { 0xFF4, "PRODH"    },
3265   { 0xFF5, "TABLAT"   },
3266   { 0xFF6, "TBLPTRL"  },
3267   { 0xFF7, "TBLPTRH"  },
3268   { 0xFF8, "TBLPTRU"  },
3269   { 0xFF9, "PC"       },
3270   { 0xFFA, "PCLATH"   },
3271   { 0xFFB, "PCLATU"   },
3272   { 0xFFC, "STKPTR"   },
3273   { 0xFFD, "TOS"      },
3274   { 0xFFE, "TOSH"     },
3275   { 0xFFF, "TOSU"     }
3276 };
3277 
3278 static const vector_t _vector_table_pic16e[] = {
3279   { 0x0000, "vector_reset"    },
3280   { 0x0008, "vector_int_high" },
3281   { 0x0018, "vector_int_low"  }
3282 };
3283 
3284 /*------------------------------------------------------------------------------------------------*/
3285 
3286 const struct proc_class proc_class_eeprom8 = {
3287   -1,                                   /* retlw */
3288   8,                                    /* rom_width */
3289   0,                                    /* page_size */
3290   0,                                    /* bank_size */
3291   0,                                    /* bank_bits_shift */
3292   0,                                    /* addr_bits_in_bank */
3293   0,                                    /* org_to_byte_shift */
3294   0,                                    /* pc_mask */
3295   0,                                    /* page_mask */
3296   0,                                    /* bank_mask */
3297   (1 << 8) - 1,                         /* core_mask */
3298   0,                                    /* config_mask */
3299   6,                                    /* addr_digits */
3300   2,                                    /* word_digits */
3301   0,                                    /* config_digits */
3302   NULL,                                 /* core_sfr_table */
3303   0,                                    /* core_sfr_number */
3304   NULL,                                 /* vector_table */
3305   0,                                    /* vector_number */
3306   0,                                    /* id_location */
3307   _xbank_from_addr_unsupported,         /* bank_from_addr */
3308   _set_bank_unsupported,                /* set_bank */
3309   _banksel_byte_length_unsupported,     /* banksel_byte_length */
3310   _xbank_from_addr_unsupported,         /* check_ibank */
3311   _set_ibank_unsupported,               /* set_ibank */
3312   _check_page_unsupported,              /* check_page */
3313   _set_page_unsupported,                /* set_page */
3314   _pagesel_byte_length_unsupported,     /* pagesel_byte_length */
3315   _page_addr_unsupported,               /* page_addr */
3316   _addr_from_page_bits_unsupported,     /* addr_from_page_bits */
3317   _reloc_unsupported,                   /* reloc_call */
3318   _reloc_unsupported,                   /* reloc_goto */
3319   _reloc_unsupported,                   /* reloc_f */
3320   _reloc_unsupported,                   /* reloc_tris */
3321   _reloc_unsupported,                   /* reloc_movlb */
3322   _reloc_bra_unsupported,               /* reloc_bra */
3323   _reloc_high_unsupported,              /* reloc_high */
3324   NULL,                                 /* instructions */
3325   NULL,                                 /* num_instructions */
3326   NULL,                                 /* find_insn */
3327   gp_mem_i_get_le,                      /* i_memory_get */
3328   gp_mem_i_put_le,                      /* i_memory_put */
3329   NULL,                                 /* patch_strict */
3330 };
3331 
3332 const struct proc_class proc_class_eeprom16 = {
3333   -1,                                   /* retlw */
3334   16,                                   /* rom_width */
3335   0,                                    /* page_size */
3336   0,                                    /* bank_size */
3337   0,                                    /* bank_bits_shift */
3338   0,                                    /* addr_bits_in_bank */
3339   0,                                    /* org_to_byte_shift */
3340   0,                                    /* pc_mask */
3341   0,                                    /* page_mask */
3342   0,                                    /* bank_mask */
3343   (1 << 16) - 1,                        /* core_mask */
3344   0,                                    /* config_mask */
3345   6,                                    /* addr_digits */
3346   4,                                    /* word_digits */
3347   0,                                    /* config_digits */
3348   NULL,                                 /* core_sfr_table */
3349   0,                                    /* core_sfr_number */
3350   NULL,                                 /* vector_table */
3351   0,                                    /* vector_number */
3352   0,                                    /* id_location */
3353   _xbank_from_addr_unsupported,         /* bank_from_addr */
3354   _set_bank_unsupported,                /* set_bank */
3355   _banksel_byte_length_unsupported,     /* banksel_byte_length */
3356   _xbank_from_addr_unsupported,         /* check_ibank */
3357   _set_ibank_unsupported,               /* set_ibank */
3358   _check_page_unsupported,              /* check_page */
3359   _set_page_unsupported,                /* set_page */
3360   _pagesel_byte_length_unsupported,     /* pagesel_byte_length */
3361   _page_addr_unsupported,               /* page_addr */
3362   _addr_from_page_bits_unsupported,     /* addr_from_page_bits */
3363   _reloc_unsupported,                   /* reloc_call */
3364   _reloc_unsupported,                   /* reloc_goto */
3365   _reloc_unsupported,                   /* reloc_f */
3366   _reloc_unsupported,                   /* reloc_tris */
3367   _reloc_unsupported,                   /* reloc_movlb */
3368   _reloc_bra_unsupported,               /* reloc_bra */
3369   _reloc_high_unsupported,              /* reloc_high */
3370   NULL,                                 /* instructions */
3371   NULL,                                 /* num_instructions */
3372   NULL,                                 /* find_insn */
3373   gp_mem_i_get_be,                      /* i_memory_get */
3374   gp_mem_i_put_be,                      /* i_memory_put */
3375   NULL,                                 /* patch_strict */
3376 };
3377 
3378 const struct proc_class proc_class_generic = {
3379   -1,                                   /* retlw */
3380   12,                                   /* rom_width */
3381   PIC12_PAGE_SIZE,                      /* page_size */
3382   PIC12_BANK_SIZE,                      /* bank_size */
3383   PIC12_BANK_SHIFT,                     /* bank_bits_shift */
3384   PIC12_RAM_ADDR_BITS,                  /* addr_bits_in_bank */
3385   1,                                    /* org_to_byte_shift */
3386   PIC12_PC_MASK,                        /* pc_mask */
3387   PIC12_PAGE_MASK,                      /* page_mask */
3388   PIC12_BANK_MASK,                      /* bank_mask */
3389   PIC12_CORE_MASK,                      /* core_mask */
3390   (1 << 12) - 1,                        /* config_mask */
3391   3,                                    /* addr_digits */
3392   3,                                    /* word_digits */
3393   0,                                    /* config_digits */
3394   _core_sfr_table_pic12,                /* core_sfr_table */
3395   TABLE_SIZE(_core_sfr_table_pic12),    /* core_sfr_number */
3396   _vector_table_pic12,                  /* vector_table */
3397   TABLE_SIZE(_vector_table_pic12),      /* vector_number */
3398   _id_location_pic12,                   /* id_location */
3399   _bank_from_addr_pic12,                /* bank_from_addr */
3400   _set_bank_pic12,                      /* set_bank */
3401   _banksel_byte_length_pic12_14,        /* banksel_byte_length */
3402   _xbank_from_addr_unsupported,         /* check_ibank */
3403   _set_ibank_unsupported,               /* set_ibank */
3404   _check_page_pic12,                    /* check_page */
3405   _set_page_pic12,                      /* set_page */
3406   _pagesel_byte_length_pic12_14,        /* pagesel_byte_length */
3407   _page_addr_pic12,                     /* page_addr */
3408   _addr_from_page_bits_pic12,           /* addr_from_page_bits */
3409   _reloc_unsupported,                   /* reloc_call */
3410   _reloc_unsupported,                   /* reloc_goto */
3411   _reloc_unsupported,                   /* reloc_f */
3412   _reloc_unsupported,                   /* reloc_tris */
3413   _reloc_unsupported,                   /* reloc_movlb */
3414   _reloc_bra_unsupported,               /* reloc_bra */
3415   _reloc_high_unsupported,              /* reloc_high */
3416   NULL,                                 /* instructions */
3417   NULL,                                 /* num_instructions */
3418   NULL,                                 /* find_insn */
3419   gp_mem_i_get_le,                      /* i_memory_get */
3420   gp_mem_i_put_le,                      /* i_memory_put */
3421   NULL,                                 /* patch_strict */
3422 };
3423 
3424 const struct proc_class proc_class_pic12 = {
3425   PIC12_INSN_RETLW,                     /* retlw */
3426   12,                                   /* rom_width */
3427   PIC12_PAGE_SIZE,                      /* page_size */
3428   PIC12_BANK_SIZE,                      /* bank_size */
3429   PIC12_BANK_SHIFT,                     /* bank_bits_shift */
3430   PIC12_RAM_ADDR_BITS,                  /* addr_bits_in_bank */
3431   1,                                    /* org_to_byte_shift */
3432   PIC12_PC_MASK,                        /* pc_mask */
3433   PIC12_PAGE_MASK,                      /* page_mask */
3434   PIC12_BANK_MASK,                      /* bank_mask */
3435   PIC12_CORE_MASK,                      /* core_mask */
3436   (1 << 12) - 1,                        /* config_mask */
3437   3,                                    /* addr_digits */
3438   3,                                    /* word_digits */
3439   3,                                    /* config_digits */
3440   _core_sfr_table_pic12,                /* core_sfr_table */
3441   TABLE_SIZE(_core_sfr_table_pic12),    /* core_sfr_number */
3442   _vector_table_pic12,                  /* vector_table */
3443   TABLE_SIZE(_vector_table_pic12),      /* vector_number */
3444   _id_location_pic12,                   /* id_location */
3445   _bank_from_addr_pic12,                /* bank_from_addr */
3446   _set_bank_pic12,                      /* set_bank */
3447   _banksel_byte_length_pic12_14,        /* banksel_byte_length */
3448   _xbank_from_addr_unsupported,         /* check_ibank */
3449   _set_ibank_unsupported,               /* set_ibank */
3450   _check_page_pic12,                    /* check_page */
3451   _set_page_pic12,                      /* set_page */
3452   _pagesel_byte_length_pic12_14,        /* pagesel_byte_length */
3453   _page_addr_pic12,                     /* page_addr */
3454   _addr_from_page_bits_pic12,           /* addr_from_page_bits */
3455   _reloc_call_pic12,                    /* reloc_call */
3456   _reloc_goto_pic12,                    /* reloc_goto */
3457   _reloc_f_pic12,                       /* reloc_f */
3458   _reloc_tris_pic12,                    /* reloc_tris */
3459   _reloc_unsupported,                   /* reloc_movlb */
3460   _reloc_bra_unsupported,               /* reloc_bra */
3461   _reloc_high_generic,                  /* reloc_high */
3462   op_12c5xx,                            /* instructions */
3463   &num_op_12c5xx,                       /* num_instructions */
3464   _find_insn_generic,                   /* find_insn */
3465   gp_mem_i_get_le,                      /* i_memory_get */
3466   gp_mem_i_put_le,                      /* i_memory_put */
3467   NULL,                                 /* patch_strict */
3468 };
3469 
3470 const struct proc_class proc_class_pic12e = {
3471   PIC12_INSN_RETLW,                     /* retlw */
3472   12,                                   /* rom_width */
3473   PIC12_PAGE_SIZE,                      /* page_size */
3474   PIC12_BANK_SIZE,                      /* bank_size */
3475   PIC12_BANK_SHIFT,                     /* bank_bits_shift */
3476   PIC12_RAM_ADDR_BITS,                  /* addr_bits_in_bank */
3477   1,                                    /* org_to_byte_shift */
3478   PIC12_PC_MASK,                        /* pc_mask */
3479   PIC12_PAGE_MASK,                      /* page_mask */
3480   PIC12_BANK_MASK,                      /* bank_mask */
3481   PIC12_CORE_MASK,                      /* core_mask */
3482   (1 << 12) - 1,                        /* config_mask */
3483   3,                                    /* addr_digits */
3484   3,                                    /* word_digits */
3485   3,                                    /* config_digits */
3486   _core_sfr_table_pic12,                /* core_sfr_table */
3487   TABLE_SIZE(_core_sfr_table_pic12),    /* core_sfr_number */
3488   _vector_table_pic12,                  /* vector_table */
3489   TABLE_SIZE(_vector_table_pic12),      /* vector_number */
3490   _id_location_pic12,                   /* id_location */
3491   _bank_from_addr_pic12e,               /* bank_from_addr */
3492   _set_bank_pic12e,                     /* set_bank */
3493   _banksel_byte_length_pic12e,          /* banksel_byte_length */
3494   _xbank_from_addr_unsupported,         /* check_ibank */
3495   _set_ibank_unsupported,               /* set_ibank */
3496   _check_page_pic12,                    /* check_page */
3497   _set_page_pic12,                      /* set_page */
3498   _pagesel_byte_length_pic12_14,        /* pagesel_byte_length */
3499   _page_addr_pic12,                     /* page_addr */
3500   _addr_from_page_bits_pic12,           /* addr_from_page_bits */
3501   _reloc_call_pic12,                    /* reloc_call */
3502   _reloc_goto_pic12,                    /* reloc_goto */
3503   _reloc_f_pic12,                       /* reloc_f */
3504   _reloc_tris_pic12e,                   /* reloc_tris */
3505   _reloc_unsupported,                   /* reloc_movlb */
3506   _reloc_bra_unsupported,               /* reloc_bra */
3507   _reloc_high_generic,                  /* reloc_high */
3508   op_12c5xx,                            /* instructions */
3509   &num_op_12c5xx,                       /* num_instructions */
3510   _find_insn_pic12e,                    /* find_insn */
3511   gp_mem_i_get_le,                      /* i_memory_get */
3512   gp_mem_i_put_le,                      /* i_memory_put */
3513   NULL,                                 /* patch_strict */
3514 };
3515 
3516 const struct proc_class proc_class_pic12i = {
3517   PIC12_INSN_RETLW,                     /* retlw */
3518   12,                                   /* rom_width */
3519   PIC12_PAGE_SIZE,                      /* page_size */
3520   PIC12_BANK_SIZE,                      /* bank_size */
3521   PIC12_BANK_SHIFT,                     /* bank_bits_shift */
3522   PIC12_RAM_ADDR_BITS,                  /* addr_bits_in_bank */
3523   1,                                    /* org_to_byte_shift */
3524   PIC12_PC_MASK,                        /* pc_mask */
3525   PIC12_PAGE_MASK,                      /* page_mask */
3526   PIC12_BANK_MASK,                      /* bank_mask */
3527   PIC12_CORE_MASK,                      /* core_mask */
3528   (1 << 12) - 1,                        /* config_mask */
3529   3,                                    /* addr_digits */
3530   3,                                    /* word_digits */
3531   3,                                    /* config_digits */
3532   _core_sfr_table_pic12,                /* core_sfr_table */
3533   TABLE_SIZE(_core_sfr_table_pic12),    /* core_sfr_number */
3534   _vector_table_pic12i,                 /* vector_table */
3535   TABLE_SIZE(_vector_table_pic12i),     /* vector_number */
3536   _id_location_pic12,                   /* id_location */
3537   _bank_from_addr_pic12e,               /* bank_from_addr */
3538   _set_bank_pic12e,                     /* set_bank */
3539   _banksel_byte_length_pic12e,          /* banksel_byte_length */
3540   _xbank_from_addr_unsupported,         /* check_ibank */
3541   _set_ibank_unsupported,               /* set_ibank */
3542   _check_page_pic12,                    /* check_page */
3543   _set_page_pic12,                      /* set_page */
3544   _pagesel_byte_length_pic12_14,        /* pagesel_byte_length */
3545   _page_addr_pic12,                     /* page_addr */
3546   _addr_from_page_bits_pic12,           /* addr_from_page_bits */
3547   _reloc_call_pic12,                    /* reloc_call */
3548   _reloc_goto_pic12,                    /* reloc_goto */
3549   _reloc_f_pic12,                       /* reloc_f */
3550   _reloc_tris_pic12e,                   /* reloc_tris */
3551   _reloc_unsupported,                   /* reloc_movlb */
3552   _reloc_bra_unsupported,               /* reloc_bra */
3553   _reloc_high_generic,                  /* reloc_high */
3554   op_12c5xx,                            /* instructions */
3555   &num_op_12c5xx,                       /* num_instructions */
3556   _find_insn_pic12e,                    /* find_insn */
3557   gp_mem_i_get_le,                      /* i_memory_get */
3558   gp_mem_i_put_le,                      /* i_memory_put */
3559   NULL,                                 /* patch_strict */
3560 };
3561 
3562 const struct proc_class proc_class_sx = {
3563   PIC12_INSN_RETLW,                     /* retlw */
3564   12,                                   /* rom_width */
3565   PIC12_PAGE_SIZE,                      /* page_size */
3566   PIC12_BANK_SIZE,                      /* bank_size */
3567   PIC12_BANK_SHIFT,                     /* bank_bits_shift */
3568   PIC12_RAM_ADDR_BITS,                  /* addr_bits_in_bank */
3569   1,                                    /* org_to_byte_shift */
3570   SX_PC_MASK,                           /* pc_mask */
3571   PIC12_PAGE_MASK,                      /* page_mask */
3572   PIC12_BANK_MASK,                      /* bank_mask */
3573   PIC12_CORE_MASK,                      /* core_mask */
3574   (1 << 12) - 1,                        /* config_mask */
3575   3,                                    /* addr_digits */
3576   3,                                    /* word_digits */
3577   3,                                    /* config_digits */
3578   _core_sfr_table_sx,                   /* core_sfr_table */
3579   TABLE_SIZE(_core_sfr_table_sx),       /* core_sfr_number */
3580   _vector_table_sx,                     /* vector_table */
3581   TABLE_SIZE(_vector_table_sx),         /* vector_number */
3582   _id_location_pic12,                   /* id_location */
3583   _bank_from_addr_pic12,                /* bank_from_addr */
3584   _set_bank_pic12,                      /* set_bank */
3585   _banksel_byte_length_pic12_14,        /* banksel_byte_length */
3586   _xbank_from_addr_unsupported,         /* check_ibank */
3587   _set_ibank_unsupported,               /* set_ibank */
3588   _check_page_sx,                       /* check_page */
3589   _set_page_sx,                         /* set_page */
3590   _pagesel_byte_length_pic12_14,        /* pagesel_byte_length */
3591   _page_addr_sx,                        /* page_addr */
3592   _addr_from_page_bits_sx,              /* addr_from_page_bits */
3593   _reloc_call_pic12,                    /* reloc_call */
3594   _reloc_goto_pic12,                    /* reloc_goto */
3595   _reloc_f_pic12,                       /* reloc_f */
3596   _reloc_tris_pic12,                    /* reloc_tris */
3597   _reloc_unsupported,                   /* reloc_movlb */
3598   _reloc_bra_unsupported,               /* reloc_bra */
3599   _reloc_high_generic,                  /* reloc_high */
3600   op_sx,                                /* instructions */
3601   &num_op_sx,                           /* num_instructions */
3602   _find_insn_generic,                   /* find_insn */
3603   gp_mem_i_get_le,                      /* i_memory_get */
3604   gp_mem_i_put_le,                      /* i_memory_put */
3605   NULL,                                 /* patch_strict */
3606 };
3607 
3608 const struct proc_class proc_class_pic14 = {
3609   PIC14_INSN_RETLW,                     /* retlw */
3610   14,                                   /* rom_width */
3611   PIC14_PAGE_SIZE,                      /* page_size */
3612   PIC14_BANK_SIZE,                      /* bank_size */
3613   PIC14_BANK_SHIFT,                     /* bank_bits_shift */
3614   PIC14_RAM_ADDR_BITS,                  /* addr_bits_in_bank */
3615   1,                                    /* org_to_byte_shift */
3616   PIC14_PC_MASK,                        /* pc_mask */
3617   PIC14_PAGE_MASK,                      /* page_mask */
3618   PIC14_BANK_MASK,                      /* bank_mask */
3619   PIC14_CORE_MASK,                      /* core_mask */
3620   (1 << 14) - 1,                        /* config_mask */
3621   4,                                    /* addr_digits */
3622   4,                                    /* word_digits */
3623   4,                                    /* config_digits */
3624   _core_sfr_table_pic14,                /* core_sfr_table */
3625   TABLE_SIZE(_core_sfr_table_pic14),    /* core_sfr_number */
3626   _vector_table_pic14,                  /* vector_table */
3627   TABLE_SIZE(_vector_table_pic14),      /* vector_number */
3628   _id_location_pic14,                   /* id_location */
3629   _bank_from_addr_pic14,                /* bank_from_addr */
3630   _set_bank_pic14,                      /* set_bank */
3631   _banksel_byte_length_pic12_14,        /* banksel_byte_length */
3632   _check_ibank_pic14,                   /* check_ibank */
3633   _set_ibank_pic14,                     /* set_ibank */
3634   _check_page_pic14,                    /* check_page */
3635   _set_page_pic14,                      /* set_page */
3636   _pagesel_byte_length_pic12_14,        /* pagesel_byte_length */
3637   _page_addr_pic14,                     /* page_addr */
3638   _addr_from_page_bits_pic14,           /* addr_from_page_bits */
3639   _reloc_call_pic14,                    /* reloc_call */
3640   _reloc_goto_pic14,                    /* reloc_goto */
3641   _reloc_f_pic14,                       /* reloc_f */
3642   _reloc_tris_pic14,                    /* reloc_tris */
3643   _reloc_unsupported,                   /* reloc_movlb */
3644   _reloc_bra_unsupported,               /* reloc_bra */
3645   _reloc_high_generic,                  /* reloc_high */
3646   op_16cxx,                             /* instructions */
3647   &num_op_16cxx,                        /* num_instructions */
3648   _find_insn_generic,                   /* find_insn */
3649   gp_mem_i_get_le,                      /* i_memory_get */
3650   gp_mem_i_put_le,                      /* i_memory_put */
3651   _patch_strict_pic14,                  /* patch_strict */
3652 };
3653 
3654 const struct proc_class proc_class_pic14e = {
3655   PIC14_INSN_RETLW,                     /* retlw */
3656   14,                                   /* rom_width */
3657   PIC14_PAGE_SIZE,                      /* page_size */
3658   PIC14_BANK_SIZE,                      /* bank_size */
3659   PIC14_BANK_SHIFT,                     /* bank_bits_shift */
3660   PIC14_RAM_ADDR_BITS,                  /* addr_bits_in_bank */
3661   1,                                    /* org_to_byte_shift */
3662   PIC14E_PC_MASK,                       /* pc_mask */
3663   PIC14_PAGE_MASK,                      /* page_mask */
3664   PIC14_BANK_MASK,                      /* bank_mask */
3665   PIC14_CORE_MASK,                      /* core_mask */
3666   (1 << 16) - 1,                        /* config_mask */
3667   4,                                    /* addr_digits */
3668   4,                                    /* word_digits */
3669   4,                                    /* config_digits */
3670   _core_sfr_table_pic14e,               /* core_sfr_table */
3671   TABLE_SIZE(_core_sfr_table_pic14e),   /* core_sfr_number */
3672   _vector_table_pic14,                  /* vector_table */
3673   TABLE_SIZE(_vector_table_pic14),      /* vector_number */
3674   _id_location_pic14,                   /* id_location */
3675   _bank_from_addr_pic14e,               /* bank_from_addr */
3676   _set_bank_pic14e,                     /* set_bank */
3677   _banksel_byte_length_pic14e,          /* banksel_byte_length */
3678   _check_ibank_pic14e,                  /* check_ibank */
3679   _set_ibank_pic14e,                    /* set_ibank */
3680   _check_page_pic14e,                   /* check_page */
3681   _set_page_pic14e,                     /* set_page */
3682   _pagesel_byte_length_pic14e,          /* pagesel_byte_length */
3683   _page_addr_pic14e,                    /* page_addr */
3684   _addr_from_page_bits_pic14e,          /* addr_from_page_bits */
3685   _reloc_call_pic14,                    /* reloc_call */
3686   _reloc_goto_pic14,                    /* reloc_goto */
3687   _reloc_f_pic14,                       /* reloc_f */
3688   _reloc_tris_pic14,                    /* reloc_tris */
3689   _reloc_movlb_pic14e,                  /* reloc_movlb */
3690   _reloc_bra_pic14e,                    /* reloc_bra */
3691   _reloc_high_pic14e,                   /* reloc_high */
3692   op_16cxx,                             /* instructions */
3693   &num_op_16cxx,                        /* num_instructions */
3694   _find_insn_pic14e,                    /* find_insn */
3695   gp_mem_i_get_le,                      /* i_memory_get */
3696   gp_mem_i_put_le,                      /* i_memory_put */
3697   _patch_strict_pic14,                  /* patch_strict */
3698 };
3699 
3700 const struct proc_class proc_class_pic14ex = {
3701   PIC14_INSN_RETLW,                     /* retlw */
3702   14,                                   /* rom_width */
3703   PIC14_PAGE_SIZE,                      /* page_size */
3704   PIC14_BANK_SIZE,                      /* bank_size */
3705   PIC14_BANK_SHIFT,                     /* bank_bits_shift */
3706   PIC14_RAM_ADDR_BITS,                  /* addr_bits_in_bank */
3707   1,                                    /* org_to_byte_shift */
3708   PIC14E_PC_MASK,                       /* pc_mask */
3709   PIC14_PAGE_MASK,                      /* page_mask */
3710   PIC14_BANK_MASK,                      /* bank_mask */
3711   PIC14_CORE_MASK,                      /* core_mask */
3712   (1 << 16) - 1,                        /* config_mask */
3713   4,                                    /* addr_digits */
3714   4,                                    /* word_digits */
3715   4,                                    /* config_digits */
3716   _core_sfr_table_pic14e,               /* core_sfr_table */
3717   TABLE_SIZE(_core_sfr_table_pic14e),   /* core_sfr_number */
3718   _vector_table_pic14,                  /* vector_table */
3719   TABLE_SIZE(_vector_table_pic14),      /* vector_number */
3720   _id_location_pic14,                   /* id_location */
3721   _bank_from_addr_pic14ex,              /* bank_from_addr */
3722   _set_bank_pic14ex,                    /* set_bank */
3723   _banksel_byte_length_pic14e,          /* banksel_byte_length */
3724   _check_ibank_pic14e,                  /* check_ibank */
3725   _set_ibank_pic14e,                    /* set_ibank */
3726   _check_page_pic14e,                   /* check_page */
3727   _set_page_pic14e,                     /* set_page */
3728   _pagesel_byte_length_pic14e,          /* pagesel_byte_length */
3729   _page_addr_pic14e,                    /* page_addr */
3730   _addr_from_page_bits_pic14e,          /* addr_from_page_bits */
3731   _reloc_call_pic14,                    /* reloc_call */
3732   _reloc_goto_pic14,                    /* reloc_goto */
3733   _reloc_f_pic14,                       /* reloc_f */
3734   _reloc_tris_pic14,                    /* reloc_tris */
3735   _reloc_movlb_pic14e,                  /* reloc_movlb */
3736   _reloc_bra_pic14e,                    /* reloc_bra */
3737   _reloc_high_pic14e,                   /* reloc_high */
3738   op_16cxx,                             /* instructions */
3739   &num_op_16cxx,                        /* num_instructions */
3740   _find_insn_pic14ex,                   /* find_insn */
3741   gp_mem_i_get_le,                      /* i_memory_get */
3742   gp_mem_i_put_le,                      /* i_memory_put */
3743   _patch_strict_pic14,                  /* patch_strict */
3744 };
3745 
3746 const struct proc_class proc_class_pic16 = {
3747   PIC16_INSN_RETLW,                     /* retlw */
3748   16,                                   /* rom_width */
3749   0,                                    /* page_size */
3750   PIC16_BANK_SIZE,                      /* bank_size */
3751   PIC16_BANK_SHIFT,                     /* bank_bits_shift */
3752   PIC16_RAM_ADDR_BITS,                  /* addr_bits_in_bank */
3753   1,                                    /* org_to_byte_shift */
3754   0,                                    /* pc_mask */
3755   PIC16_PAGE_MASK,                      /* page_mask */
3756   PIC16_BANK_MASK,                      /* bank_mask */
3757   PIC16_CORE_MASK,                      /* core_mask */
3758   (1 << 8) - 1,                         /* config_mask */
3759   6,                                    /* addr_digits */
3760   4,                                    /* word_digits */
3761   2,                                    /* config_digits */
3762   _core_sfr_table_pic16,                /* core_sfr_table */
3763   TABLE_SIZE(_core_sfr_table_pic16),    /* core_sfr_number */
3764   _vector_table_pic16,                  /* vector_table */
3765   TABLE_SIZE(_vector_table_pic16),      /* vector_number */
3766   NULL,                                 /* id_location */
3767   _bank_from_addr_pic16,                /* bank_from_addr */
3768   _set_bank_pic16,                      /* set_bank */
3769   _banksel_byte_length_pic16,           /* banksel_byte_length */
3770   _bank_from_addr_pic16,                /* check_ibank: same as bank_from_addr */
3771   _set_ibank_pic16,                     /* set_ibank */
3772   _check_page_pic16,                    /* check_page */
3773   _set_page_pic16,                      /* set_page */
3774   _pagesel_byte_length_pic16,           /* pagesel_byte_length */
3775   _page_addr_pic16,                     /* page_addr */
3776   _addr_from_page_bits_pic16,           /* addr_from_page_bits */
3777   _reloc_call_pic16,                    /* reloc_call */
3778   _reloc_goto_pic16,                    /* reloc_goto */
3779   _reloc_f_pic16,                       /* reloc_f */
3780   _reloc_unsupported,                   /* reloc_tris */
3781   _reloc_unsupported,                   /* reloc_movlb */
3782   _reloc_bra_unsupported,               /* reloc_bra */
3783   _reloc_high_generic,                  /* reloc_high */
3784   op_17cxx,                             /* instructions */
3785   &num_op_17cxx,                        /* num_instructions */
3786   _find_insn_generic,                   /* find_insn */
3787   gp_mem_i_get_le,                      /* i_memory_get */
3788   gp_mem_i_put_le,                      /* i_memory_put */
3789   NULL,                                 /* patch_strict */
3790 };
3791 
3792 const struct proc_class proc_class_pic16e = {
3793   PIC16E_INSN_RETLW,                    /* retlw */
3794   8,                                    /* rom_width */
3795   0,                                    /* page_size */
3796   PIC16_BANK_SIZE,                      /* bank_size */
3797   PIC16_BANK_SHIFT,                     /* bank_bits_shift */
3798   PIC16_RAM_ADDR_BITS,                  /* addr_bits_in_bank */
3799   0,                                    /* org_to_byte_shift */
3800   0,                                    /* pc_mask */
3801   0,                                    /* page_mask */
3802   PIC16_BANK_MASK,                      /* bank_mask */
3803   PIC16_CORE_MASK,                      /* core_mask */
3804   (1 << 8) - 1,                         /* config_mask */
3805   6,                                    /* addr_digits */
3806   4,                                    /* word_digits */
3807   2,                                    /* config_digits */
3808   _core_sfr_table_pic16e,               /* core_sfr_table */
3809   TABLE_SIZE(_core_sfr_table_pic16e),   /* core_sfr_number */
3810   _vector_table_pic16e,                 /* vector_table */
3811   TABLE_SIZE(_vector_table_pic16e),     /* vector_number */
3812   _id_location_pic16e,                  /* id_location */
3813   _bank_from_addr_pic16,                /* bank_from_addr: Same as for pic16 */
3814   _set_bank_pic16e,                     /* set_bank */
3815   _banksel_byte_length_pic16,           /* banksel_byte_length */
3816   _xbank_from_addr_unsupported,         /* check_ibank */
3817   _set_ibank_unsupported,               /* set_ibank */
3818   _check_page_unsupported,              /* check_page */
3819   _set_page_unsupported,                /* set_page */
3820   _pagesel_byte_length_unsupported,     /* pagesel_byte_length */
3821   _page_addr_unsupported,               /* page_addr */
3822   _addr_from_page_bits_unsupported,     /* addr_from_page_bits */
3823   _reloc_call_pic16e,                   /* reloc_call */
3824   _reloc_goto_pic16e,                   /* reloc_goto */
3825   _reloc_f_pic16,                       /* reloc_f: same as for pic16 */
3826   _reloc_unsupported,                   /* reloc_tris */
3827   _reloc_movlb_pic16e,                  /* reloc_movlb */
3828   _reloc_bra_pic16e,                    /* reloc_bra */
3829   _reloc_high_generic,                  /* reloc_high */
3830   op_18cxx,                             /* instructions */
3831   &num_op_18cxx,                        /* num_instructions */
3832   _find_insn_pic16e,                    /* find_insn */
3833   gp_mem_i_get_le,                      /* i_memory_get */
3834   gp_mem_i_put_le,                      /* i_memory_put */
3835   NULL,                                 /* patch_strict */
3836 };
3837