# split <offset>
# Addresses below <offset> refer to bank 0, addresses above <offset>
# refer to SFRs in bank 15 for references via the access bank.
-# sfrrange <first> <last>
-# SFRs occupy addresses <first> to <last> (both included) and must
-# hence not be used as RAM.
# configrange <first> <last>
# Configuration registers occupy addresses <first> to <last> (both
# included).
-# configword <address> <mask> <value>
+# configword <address> <mask> <value> [<and-mask>]
# The config word at address <address> only implements the bits
# indicated via <mask> (all others will be forced to 0 by the
# compiler).
# Unless overridden in C code, use the given default <value>.
+# The optional <and-mask> will be applied to the value just before
+# emitting it into the .asm file (used to disable XINST by default).
# idlocrange <first> <last>
# ID locations occupy addresses <first> to <last> (both included).
# idword <address> <value>
name 18f1220
ramsize 256
split 0x80
-sfrrange 0xf80 0xfff
configrange 0x300001 0x30000d
configword 0x300001 0xcf 0xff
configword 0x300002 0x0f 0xff
name 18f2220
ramsize 512
split 0x80
-sfrrange 0xf80 0xfff
configrange 0x300001 0x30000d
configword 0x300001 0xcf 0xff
configword 0x300002 0x0f 0xff
name 18f2221
ramsize 512
split 0x80
-sfrrange 0xf80 0xfff
configrange 0x300001 0x30000d
configword 0x300001 0xcf 0x37
configword 0x300002 0x1f 0xff
configword 0x300003 0x1f 0xff
configword 0x300005 0x87 0xfb
-configword 0x300006 0xf5 0x8f
+configword 0x300006 0xf5 0x8f 0xbf
configword 0x300008 0x03 0xff
configword 0x300009 0xc0 0xff
configword 0x30000a 0x03 0xff
name 18f2331
ramsize 768
split 0x60
-sfrrange 0xf60 0xfff
configrange 0x300001 0x30000d
configword 0x300001 0xcf 0xff
configword 0x300002 0x0f 0xff
idlocrange 0x200000 0x200007
+name 18f2410
+ramsize 768
+split 0x80
+configrange 0x300001 0x30000d
+configword 0x300001 0xcf 0x37
+configword 0x300002 0x1f 0xff
+configword 0x300003 0x1f 0xfb
+configword 0x300005 0x87 0xfb
+configword 0x300006 0xc5 0xbf 0xbf
+configword 0x300008 0x0f 0xff
+configword 0x300009 0x40 0xff
+configword 0x30000a 0x0f 0xff
+configword 0x30000b 0x60 0xff
+configword 0x30000c 0x0f 0xff
+configword 0x30000d 0x40 0xff
+idlocrange 0x200000 0x200007
+
+
name 18f242
ramsize 768
split 0x80
-sfrrange 0xf80 0xfff
configrange 0x300001 0x30000d
configword 0x300001 0x27 0xff
configword 0x300002 0x0f 0xff
name 18f2420
ramsize 768
split 0x80
-sfrrange 0xf80 0xfff
configrange 0x300001 0x30000d
configword 0x300001 0xcf 0x07
configword 0x300002 0x1f 0xff
configword 0x300003 0x1f 0xff
configword 0x300005 0x87 0xfb
-configword 0x300006 0xc5 0xbf
+configword 0x300006 0xc5 0xbf 0xbf
configword 0x300008 0x0f 0xff
configword 0x300009 0xc0 0xff
configword 0x30000a 0x0f 0xff
name 18f2423
ramsize 768
split 0x80
-sfrrange 0xf80 0xfff
configrange 0x300001 0x30000d
configword 0x300001 0xcf 0x07
configword 0x300002 0x1f 0xff
configword 0x300003 0x1f 0xff
configword 0x300005 0x87 0xfb
-configword 0x300006 0xc5 0xbf
+configword 0x300006 0xc5 0xbf 0xbf
configword 0x300008 0x0f 0xff
configword 0x300009 0xc0 0xff
configword 0x30000a 0x0f 0xff
using 18f2331
+name 18f2450
+# 0x200..0x3FF is not implemented, but we leave that to the linker ;-)
+ramsize 0x500
+split 0x60
+configrange 0x300000 0x30000d
+configword 0x300000 0x3f 0xc7
+configword 0x300001 0xcf 0x37
+configword 0x300002 0x3f 0xdf
+configword 0x300003 0x1f 0xff
+configword 0x300005 0x86 0xfb
+configword 0x300006 0xed 0x97 0xbf
+configword 0x300008 0x03 0xff
+configword 0x300009 0x40 0xff
+configword 0x30000a 0x03 0xff
+configword 0x30000b 0x60 0xff
+configword 0x30000c 0x03 0xff
+configword 0x30000d 0x40 0xff
+idlocrange 0x200000 0x200007
+
name 18f2455
ramsize 2048
split 0x60
-sfrrange 0xf60 0xfff
configrange 0x300000 0x30000d
configword 0x300000 0x3f 0xc0
configword 0x300001 0xcf 0x35
configword 0x300002 0x3f 0xdf
configword 0x300003 0x1f 0xff
configword 0x300005 0x87 0xfb
-configword 0x300006 0xe5 0x9f
+configword 0x300006 0xe5 0x9f 0xbf
configword 0x300008 0x0f 0xff
configword 0x300009 0xc0 0xff
configword 0x30000a 0x0f 0xff
name 18f248
ramsize 768
split 0x60
-sfrrange 0xf00 0xfff
configrange 0x300001 0x30000d
configword 0x300001 0x27 0xff
configword 0x300002 0x0f 0xff
name 18f2480
ramsize 768
split 0x60
-sfrrange 0xd00 0xfff
configrange 0x300001 0x30000d
configword 0x300001 0xcf 0x37
configword 0x300002 0x1f 0xff
configword 0x300003 0x1f 0xff
configword 0x300005 0x86 0xfb
-configword 0x300006 0xd5 0xaf
+configword 0x300006 0xd5 0xaf 0xbf
configword 0x300008 0x0f 0xff
configword 0x300009 0xc0 0xff
configword 0x30000a 0x0f 0xff
name 18f24j10
ramsize 1024
split 0x80
-sfrrange 0xf80 0xfff
configrange 0x300000 0x300005
configword 0x300000 0xe1 0xff
configword 0x300001 0x04 0xf7
idlocrange 0x200000 0x200007
+name 18f2510
+using 18f2410
+ramsize 1536
+
+
+name 18f2515
+using 18f2410
+ramsize 4096
+
+
name 18f252
using 18f242
ramsize 1536
name 18f2525
ramsize 4096
split 0x80
-sfrrange 0xf80 0xfff
configrange 0x300001 0x30000d
configword 0x300001 0xcf 0x37
configword 0x300002 0x1f 0xff
configword 0x300003 0x1f 0xff
configword 0x300005 0x87 0xfb
-configword 0x300006 0xc5 0xbf
+configword 0x300006 0xc5 0xbf 0xbf
configword 0x300008 0x0f 0xff
configword 0x300009 0xc0 0xff
configword 0x30000a 0x0f 0xff
name 18f2585
ramsize 4096
split 0x60
-sfrrange 0xd00 0xfff
configrange 0x300001 0x30000d
configword 0x300001 0xcf 0x37
configword 0x300002 0x1f 0xff
configword 0x300003 0x1f 0xff
configword 0x300005 0x86 0xfb
-configword 0x300006 0xf5 0x8f
+configword 0x300006 0xf5 0x8f 0xbf
configword 0x300008 0x0f 0xff
configword 0x300009 0xc0 0xff
configword 0x30000a 0x0f 0xff
using 18f24j10
+name 18f2610
+using 18f2410
+ramsize 4096
+
+
name 18f2620
using 18f2525
name 18f2682
ramsize 4096
split 0x60
-sfrrange 0xd00 0xfff
configrange 0x300001 0x30000d
configword 0x300001 0xcf 0x37
configword 0x300002 0x1f 0xff
configword 0x300003 0x1f 0xff
configword 0x300005 0x86 0xfb
-configword 0x300006 0xf5 0x8f
+configword 0x300006 0xf5 0x8f 0xbf
configword 0x300008 0x3f 0xff
configword 0x300009 0xc0 0xff
configword 0x30000a 0x3f 0xff
using 18f2331
+name 18f4410
+using 18f2410
+ramsize 768
+
+
name 18f442
using 18f242
using 18f2331
+name 18f4450
+using 18f2450
+
name 18f4455
using 18f2455
using 18f24j10
+name 18f4510
+using 18f2410
+ramsize 1536
+
+
+name 18f4515
+using 18f2410
+ramsize 4096
+
+
name 18f452
using 18f242
ramsize 1536
using 18f24j10
+name 18f4610
+using 18f2410
+ramsize 4096
+
+
name 18f4620
using 18f2525
name 18f6520
ramsize 2048
split 0x60
-sfrrange 0xf60 0xfff
configrange 0x300001 0x30000d
configword 0x300001 0x27 0xff
configword 0x300002 0x0f 0xff
name 18f6585
ramsize 3328
split 0x60
-sfrrange 0xd00 0xfff
configrange 0x300001 0x30000d
configword 0x300001 0x2f 0xff
configword 0x300002 0x0f 0xff
ramsize 3840
+name 18f66j60
+ramsize 4096
+split 0x60
+configrange 0xfff8 0xfffd
+configword 0xfff8 0xc1 0xff
+configword 0xfff9 0x04 0xf7
+configword 0xfffa 0xc7 0xff
+configword 0xfffb 0x0f 0xff
+configword 0xfffc 0xf8 0xff
+configword 0xfffd 0x07 0xff
+
+
+name 18f66j65
+ramsize 4096
+split 0x60
+configrange 0x17ff8 0x17ffd
+configword 0x17ff8 0xc1 0xff
+configword 0x17ff9 0x04 0xf7
+configword 0x17ffa 0xc7 0xff
+configword 0x17ffb 0x0f 0xff
+configword 0x17ffc 0xf8 0xff
+configword 0x17ffd 0x07 0xff
+
+
+name 18f67j60
+ramsize 4096
+split 0x60
+configrange 0x1fff8 0x1fffd
+configword 0x1fff8 0xc1 0xff
+configword 0x1fff9 0x04 0xf7
+configword 0x1fffa 0xc7 0xff
+configword 0x1fffb 0x0f 0xff
+configword 0x1fffc 0xf8 0xff
+configword 0x1fffd 0x07 0xff
+
+
+name 18f86j60
+using 18f66j60
+
+
+name 18f86j65
+using 18f66j65
+
+
+name 18f87j60
+using 18f67j60
+
+
+name 18f96j60
+using 18f66j60
+
+
+name 18f96j65
+using 18f66j65
+
+
+name 18f97j60
+using 18f67j60
+