# dsPIC30F1010
# DOS: DOS-00713 
# PS:  DS-None
# DS:  DS-None
# Device ID: DOS-00xxx

format=0.1

# device=dsPIC30F1010
# Variant 4


vpp (range=2.000-5.500  dflt=5.000)
vdd (range=2.000-5.500  dfltrange=4.000-5.500  nominal=5.000)
pgming (memtech=ee tries=1)
   wait (pgm=1000 eedata=10000 cfg=10000 userid=10000 erase=600)
   latches(pgm=64 eedata=2 cfg=2)

pgmmem (region=0x0-0x0fff)
    vectors (region=0x04-0x7f altregion=0x84-0xff)
testmem (region=0x800000-0x8005FF appregion=0x800080-0x8005BF)
emulreg (region=0xFD0000-0xFD0027)
cfgmem (region=0xf80000-0xf8000D)
# GI 8/17/04 Removed from programming spec
# userid (region=0x8005C0-0x8005FF)
devid (region=0xFF0000-0xFF0003 idmask=0xFFFF0000 id=0x01C00000)
    ver (id=0x03401000 desc="msp2 a0")
    variant (addr=0xF80104 val=0x0)

#
# For the ICD2. This is the top of testmem.
bkbgvectmem (region=0x800000-0x800007)

NumBanks=0
xymem (region=0x800-0x8ff ymem=0x880-0x8ff)

devid (region=0xFF0000-0xFF0003 idmask=0xFFFF0000 id=0x01000000)
    ver (id=0x01001000 desc="mm1 a0")
#    variant (addr=0xF80104 val=0x0)

#
# For the ICD2. This is the top of testmem.
bkbgvectmem (region=0x800000-0x800007)

                               # ---------------#
#------------------------------# CORE Registers #------------------------------------------------#
                               # ---------------#

sfr (key=WREG0 addr=0x0 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxxxxxxxxxx' mclr='uuuuuuuuuuuuuuuu')
    bit (names='WREG0' width='16')
    stimulus (scl=r type=int)
sfr (key=WREG1 addr=0x2 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxxxxxxxxxx' mclr='uuuuuuuuuuuuuuuu')
    bit (names='WREG1' width='16')
    stimulus (scl=r type=int)
sfr (key=WREG2 addr=0x4 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxxxxxxxxxx' mclr='uuuuuuuuuuuuuuuu')
    bit (names='WREG2' width='16')
    stimulus (scl=r type=int)
sfr (key=WREG3 addr=0x6 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxxxxxxxxxx' mclr='uuuuuuuuuuuuuuuu')
    bit (names='WREG3' width='16')
    stimulus (scl=r type=int)
sfr (key=WREG4 addr=0x8 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxxxxxxxxxx' mclr='uuuuuuuuuuuuuuuu')
    bit (names='WREG4' width='16')
    stimulus (scl=r type=int)
sfr (key=WREG5 addr=0xa size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxxxxxxxxxx' mclr='uuuuuuuuuuuuuuuu')
    bit (names='WREG5' width='16')
    stimulus (scl=r type=int)
sfr (key=WREG6 addr=0xc size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxxxxxxxxxx' mclr='uuuuuuuuuuuuuuuu')
    bit (names='WREG6' width='16')
    stimulus (scl=r type=int)
sfr (key=WREG7 addr=0xe size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxxxxxxxxxx' mclr='uuuuuuuuuuuuuuuu')
    bit (names='WREG7' width='16')
    stimulus (scl=r type=int)
sfr (key=WREG8 addr=0x10 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxxxxxxxxxx' mclr='uuuuuuuuuuuuuuuu')
    bit (names='WREG8' width='16')
    stimulus (scl=r type=int)
sfr (key=WREG9 addr=0x12 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxxxxxxxxxx' mclr='uuuuuuuuuuuuuuuu')
    bit (names='WREG9' width='16')
    stimulus (scl=r type=int)
sfr (key=WREG10 addr=0x14 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxxxxxxxxxx' mclr='uuuuuuuuuuuuuuuu')
    bit (names='WREG10' width='16')
    stimulus (scl=r type=int)
sfr (key=WREG11 addr=0x16 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxxxxxxxxxx' mclr='uuuuuuuuuuuuuuuu')
    bit (names='WREG11' width='16')
    stimulus (scl=r type=int)
sfr (key=WREG12 addr=0x18 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxxxxxxxxxx' mclr='uuuuuuuuuuuuuuuu')
    bit (names='WREG12' width='16')
    stimulus (scl=r type=int)
sfr (key=WREG13 addr=0x1a size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxxxxxxxxxx' mclr='uuuuuuuuuuuuuuuu')
    bit (names='WREG13' width='16')
    stimulus (scl=r type=int)
sfr (key=WREG14 addr=0x1c size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxxxxxxxxxx' mclr='uuuuuuuuuuuuuuuu')
    bit (names='WREG14' width='16')
    stimulus (scl=r type=int)
sfr (key=WREG15 addr=0x1e size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='0000100000000000' mclr='0000100000000000')
    bit (names='WREG15' width='16')
    stimulus (scl=r type=int)
sfr (key=SPLIM addr=0x20 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw r')
    reset (por='0000000000000000' mclr='0000000000000000')
    bit (names='SPLIM' width='16')
    stimulus (scl=r type=int)

sfr (key=ACCA addr=0x22 size=5 flags=j)
# The j flag means all these registers together form one larger register 
    stimulus (scl=r type=int)
sfr (key=ACCAL addr=0x22 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxxxxxxxxxx' mclr='uuuuuuuuuuuuuuuu')
    bit (names='ACCAL' width='16')
    stimulus (scl=r type=int)
sfr (key=ACCAH addr=0x24 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxxxxxxxxxx' mclr='uuuuuuuuuuuuuuuu')
    bit (names='ACCAH' width='16')
    stimulus (scl=r type=int)
sfr (key=ACCAU addr=0x26 size=2 access='r r r r r r r r rw rw rw rw rw rw rw rw')
    reset (por='00000000xxxxxxxx' mclr='00000000uuuuuuuu')
    bit (names='SIGNEXT ACCAU' width='8 8')
    stimulus (scl=r type=int)

sfr (key=ACCB addr=0x28 size=5 flags=j)
# The j flag means all these registers together form one larger register
    stimulus (scl=r type=int)
sfr (key=ACCBL addr=0x28 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxxxxxxxxxx' mclr='uuuuuuuuuuuuuuuu')
    bit (names='ACCBL' width='16')
    stimulus (scl=r type=int)
sfr (key=ACCBH addr=0x2a size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxxxxxxxxxx' mclr='uuuuuuuuuuuuuuuu')
    bit (names='ACCBH' width='16')
    stimulus (scl=r type=int)
sfr (key=ACCBU addr=0x2c size=2 access='r r r r r r r r rw rw rw rw rw rw rw rw')
    reset (por='00000000xxxxxxxx' mclr='00000000uuuuuuuu')
    bit (names='SIGNEXT ACCBU' width='8 8')
    stimulus (scl=r type=int)

sfr (key=PC addr=0x2e size=3 flags=j)
# The j flag means all these registers together form one larger register
    stimulus (scl=rb type=pc)
sfr (key=PCL addr=0x2e size=2 access='r r r r r r r r r r r r r r r r')
    reset (por='0000000000000000' mclr='0000000000000000')
    bit (names='PCL' width='16')
    stimulus (scl=rb)
sfr (key=PCH addr=0x30 size=2 access='u u u u u u u u u r r r r r r r')
# Bit 23 of the PC Register (bit 7 of the PCH) is reserved for Testing.
    reset (por='--------00000000' mclr='--------00000000')
    bit (names='- - - - - - - - - PCH' width='1 1 1 1 1 1 1 1 1 7')
    stimulus (scl=rb)

sfr (key=TBLPAG addr=0x32 size=2 access='u u u u u u u u rw rw rw rw rw rw rw rw')
    reset (por='--------00000000' mclr='--------00000000')
    bit (names='- - - - - - - - TBLPAG' width='1 1 1 1 1 1 1 1 8')
    stimulus (scl=r type=int)
sfr (key=PSVPAG addr=0x34 size=2 access='u u u u u u u u rw rw rw rw rw rw rw rw')
    reset (por='--------00000000' mclr='--------00000000')
    bit (names='- - - - - - - - PSVPAG' width='1 1 1 1 1 1 1 1 8')
    stimulus (scl=r type=int)
sfr (key=RCOUNT addr=0x36 size=2 access='u u rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='--xxxxxxxxxxxxxx' mclr='--uuuuuuuuuuuuuu')
    bit (names='- - RCOUNT' width='1 1 14')
    stimulus (scl=r type=int)
sfr (key=DCOUNT addr=0x38 size=2 access='u u rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='--xxxxxxxxxxxxxx' mclr='--uuuuuuuuuuuuuu')
    bit (names='- - DCOUNT' width='1 1 14')
    stimulus (scl=r type=int)

sfr (key=DOSTART addr=0x3a size=3 flags=j)
# The j flag means all these registers together form one larger register
    stimulus (scl=r type=addr)
sfr (key=DOSTARTL addr=0x3a size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw r')
    reset (por='xxxxxxxxxxxxxxx0' mclr='uuuuuuuuuuuuuuu0')
    bit (names='DOSTARTL' width='16')
    stimulus (scl=r)
sfr (key=DOSTARTH addr=0x3c size=2 access='u u u u u u u u u rw rw rw rw rw rw rw')
    reset (por='---------xxxxxxx' mclr='---------uuuuuuu')
    bit (names='- - - - - - - - - DOSTARTH' width='1 1 1 1 1 1 1 1 1 7')
    stimulus (scl=r)

sfr (key=DOEND addr=0x3e size=3 flags=j)
# The j flag means all these registers together form one larger register
    stimulus (scl=r type=addr)
sfr (key=DOENDL addr=0x3e size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw r')
    reset (por='xxxxxxxxxxxxxxx0' mclr='uuuuuuuuuuuuuuu0')
    bit (names='DOENDL' width='16')
    stimulus (scl=r)
sfr (key=DOENDH addr=0x40 size=2 access='u u u u u u u u u rw rw rw rw rw rw rw')
    reset (por='---------xxxxxxx' mclr='---------uuuuuuu')
    bit (names='- - - - - - - - - DOENDH' width='1 1 1 1 1 1 1 1 1 7')
    stimulus (scl=r)

sfr (key=SR addr=0x42 size=2 access='r r rc rc r rc r rw rw rw rw r rw rw rw rw')
    reset (por='0000000000000000' mclr='0000000000000000')
    bit (names='OA OB SA SB OAB SAB DA DC IPL RA N OV Z C' width='1 1 1 1 1 1 1 1 3 1 1 1 1 1')
    stimulus (scl=r)
sfr (key=CORCON addr=0x44 size=2 access='u u u rw w r r r rw rw rw rw rc rw rw rw')
    reset (por='---0000000100000' mclr='---0000000100000')
    bit (names='- - - US EDT DL SATA SATB SATDW ACCSAT IPL3 PSV RND IF' width='1 1 1 1 1 3 1 1 1 1 1 1 1 1')
    stimulus (scl=r)
sfr (key=MODCON addr=0x46 size=2 access='rw rw u u rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='00--000000000000' mclr='00--000000000000')
    bit (names='XMODEN YMODEN - - BWM YWM XWM' width='1 1 1 1 4 4 4')
    stimulus (scl=r)
sfr (key=XMODSRT addr=0x48 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw r')
    reset (por='xxxxxxxxxxxxxxx0' mclr='uuuuuuuuuuuuuuu0')
    bit (names='XS' width='16')
    stimulus (scl=r type=int)
sfr (key=XMODEND addr=0x4a size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw r')
    reset (por='xxxxxxxxxxxxxxx1' mclr='uuuuuuuuuuuuuuu1')
    bit (names='XE' width='16')
    stimulus (scl=r type=int)
sfr (key=YMODSRT addr=0x4c size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw r')
    reset (por='xxxxxxxxxxxxxxx0' mclr='uuuuuuuuuuuuuuu0')
    bit (names='YS' width='16')
    stimulus (scl=r type=int)
sfr (key=YMODEND addr=0x4e size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw r')
    reset (por='xxxxxxxxxxxxxxx1' mclr='uuuuuuuuuuuuuuu1')
    bit (names='YE' width='16')
    stimulus (scl=r type=int)
sfr (key=XBREV addr=0x50 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='0xxxxxxxxxxxxxxx' mclr='uuuuuuuuuuuuuuuu')
    bit (names='BREN XB' width='1 15')
    stimulus (scl=r)
sfr (key=DISICNT addr=0x52 size=2 access='u u rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='--00000000000000' mclr='--00000000000000')
    bit (names='- - DISICNT' width='1 1 14')
    stimulus (scl=r type=int)
UnusedRegs (0x54-0x7f)


                               # -------------------------------#
#------------------------------# Interrupt Controller Registers #------------------------------------------------------#
                               # -------------------------------#

sfr (key=INTCON1 addr=0x80 size=2 access='rw u u u u rw rw rw u u u rw rw rw rw u')
    reset (por='0----000---0000-' mclr='0----000---0000-')
    bit (names='NSTDIS - - - - OVATE OVBTE COVTE - - - MATHERR ADDRERR STKERR OSCFAIL -')
    stimulus (scl=rwb)
sfr (key=INTCON2 addr=0x82 size=2 access='rw u u u u u u u u u u u u rw rw rw')
    reset (por='0------------000' mclr='0------------000')
    bit (names='ALTIVT - - - - - - - - - - - - INT2EP INT1EP INT0EP')
    stimulus (scl=rwb)
sfr (key=IFS0 addr=0x84 size=2 access='u rw rw rw rw rw rw rw u rw u u rw rw u rw')
    reset (por='-0000000-0--00-0' mclr='-0000000-0--00-0')
    bit (names='- BCLIF I2CIF NVMIF ADIF U1TXIF U1RXIF SPI1IF - T2IF - - T1IF OC1IF - INT0IF')
    stimulus (scl=rwb)
sfr (key=IFS1 addr=0x86 size=2 access='u rw rw u rw u u u u u u rw rw rw rw rw')
    reset (por='-00-0------00000' mclr='-00-0------00000')
    bit (names='- ACM2IF ACM1IF - CNIF - - - - - - PWMG2IF PWMG1IF PWMSEIF INT2IF INT1IF')
    stimulus (scl=rwb)
sfr (key=IFS2 addr=0x88 size=2 access='u u u u u u u rw rw rw rw u u u u rw')
    reset (por='-------0000-----' mclr='-------0000-----')
    bit (names='- - - - - - - ADCP3IF ADCP2IF ADCP1IF ADCP0IF - - - - ACM4IF')
    stimulus (scl=rwb)
UnusedRegs (0x8a-0x93)
sfr (key=IEC0 addr=0x94 size=2 access='u rw rw rw rw rw rw rw u rw u u rw rw u rw')
    reset (por='-0000000-0--00-0' mclr='-0000000-0--00-0')
    bit (names='- BCLIE I2CIE NVMIE ADIE U1TXIE U1RXIE SPI1IE - T2IE - - T1IE OC1IE - INT0IE')
    stimulus (scl=rwb)
sfr (key=IEC1 addr=0x96 size=2 access='u rw rw u u u u u u u u rw rw rw rw rw')
    reset (por='-00-0------00000' mclr='-00-0------00000')
    bit (names='- ACM2IE ACM1IE - CNIE - - - - - - PWMG2IE PWMG1IE PWMSEIE INT2IE INT1IE')
    stimulus (scl=rwb)
sfr (key=IEC2 addr=0x98 size=2 access='u u u u u u u rw rw rw rw u u u u rw')
    reset (por='-------0000-----' mclr='-------0000-----')
    bit (names='- - - - - - - ADCP3IE ADCP2IE ADCP1IE ADCP0IE - - - - ACM4IE')
    stimulus (scl=rwb)
UnusedRegs (0x9a-0xa3)
sfr (key=IPC0 addr=0xa4 size=2 access='u rw rw rw u rw rw rw u u u u u rw rw rw')
    reset (por='-100-100-----100' mclr='-uuu-uuu-----uuu')
    bit (names='- T1IP - OC1IP - - - - - INT0IP' width='1 3 1 3 1 1 1 1 1 3')
    stimulus (scl=rwb)
sfr (key=IPC1 addr=0xa6 size=2 access='u u u u u rw rw rw u u u u u u u u')
    reset (por='-----100--------' mclr='-----uuu--------')
    bit (names='- - - - - T2IP - - - - - - - -' width='1 1 1 1 1 3 1 1 1 1 1 1 1 1')
    stimulus (scl=rwb)
sfr (key=IPC2 addr=0xa8 size=2 access='u rw rw rw u rw rw rw u rw rw rw u rw rw rw')
    reset (por='-100-100-100-100' mclr='-uuu-uuu-uuu-uuu')
    bit (names='- ADIP - U1TXIP - U1RXIP - SPI1IP' width='1 3 1 3 1 3 1 3')
    stimulus (scl=rwb)
##BOMB##    
sfr (key=IPC3 addr=0xaa size=2 access='u u u u u rw rw rw u rw rw rw u rw rw rw')
    reset (por='-----100-100-100' mclr='-----uuu-uuu-uuu')
    bit (names='- - - - - BCLIP - I2CIP - NVMIP' width='1 1 1 1 1 3 1 3 1 3')
    stimulus (scl=rwb)
sfr (key=IPC4 addr=0xac size=2 access='u rw rw rw u rw rw rw u rw rw rw u rw rw rw')
    reset (por='-100-100-100-100' mclr='-uuu-uuu-uuu-uuu')
    bit (names='- PWMG1IP - PWMSEIP - INT2IP - INT1IP' width='1 3 1 3 1 3 1 3')
    stimulus (scl=rwb)
sfr (key=IPC5 addr=0xae size=2 access='u u u u u u u u u u u u u rw rw rw')
    reset (por='-------------100' mclr='-------------uuu')
    bit (names='- - - - - - - - - - - - - PWMG2IP' width='1 1 1 1 1 1 1 1 1 1 1 1 1 3')
    stimulus (scl=rwb)
sfr (key=IPC6 addr=0xb0 size=2 access='u rw rw rw u u u u u u u u u u u u')
    reset (por='-100------------' mclr='-uuu------------')
    bit (names='- CNIP - - - - - - - - - - - -' width='1 3 1 1 1 1 1 1 1 1 1 1')
    stimulus (scl=rwb)
sfr (key=IPC7 addr=0xb2 size=2 access='u u u u u rw rw rw u rw rw rw u u u u')
    reset (por='-----100-100----' mclr='-----uuu-uuu----')
    bit (names='- - - - - ACM2IP - ACM1IP - - - -' width='1 1 1 1 1 3 1 3 1 1 1 1')
    stimulus (scl=rwb)
UnusedRegs (0xb4-0xb5)
#sfr (key=IPC8 addr=0xb4 size=2 access='u u u u u u u u u u u u u rw rw rw')
#    reset (por='-------------100' mclr='-------------uuu')
#    bit (names='- - - - - - - - - - - - - ACM4IP' width='1 1 1 1 1 1 1 1 1 1 1 1 1 3')
#    stimulus (scl=rwb)
sfr (key=IPC9 addr=0xb6 size=2 access='u rw rw rw u rw rw rw u rw rw rw u u u u')
    reset (por='-100-100-100----' mclr='-uuu-uuu-uuu----')
    bit (names='- ADCP2IP - ADCP1IP - ADCP0IP - - - -' width='1 3 1 3 1 3 1 1 1 1')
    stimulus (scl=rwb)
sfr (key=IPC10 addr=0xb8 size=2 access='u u u u u u u u u u u u u rw rw rw')
    reset (por='-------------100' mclr='-------------uuu')
    bit (names='- - - - - - - - - - - - - ADCP3IP' width='1 1 1 1 1 1 1 1 1 1 1 1 1 3')
    stimulus (scl=rwb)
#---
# NOTE:  The IPC11 is not used here because the IPC11 is used only on devices with  
# 8-channel MPWM, and this device only has a 6-channel MPWM.
# 
# sfr (key=IPC11 addr=0xaa size=2 access='u u u u u u u u u u u u u rw rw rw')
#    reset (por='-------------100' mclr='-------------uuu')
#    bit (names='- - - - - - - - - - - - - FLTBIP' width='1 1 1 1 1 1 1 1 1 1 1 1 1 3')
#    stimulus (scl=rwb)
#---
#UnusedRegs (0xba-0xab)
#UnusedRegs (0xac-0xaf)  # currently no IPC12 or IPC13
sfr (key=INTREG addr=0xb0 size=2 access='r rw u u r r r r u u r r r r r r')
    reset (por='00--0000--000000' mclr='00--0000--000000')
    bit (names='IRQtoCPU TMODE - - ILR - - VECNUM' width='1 1 1 1 4 1 1 6')
    stimulus (scl=rwb)
#UnusedRegs (0xb2-0xbf)


                               # --------------#
#------------------------------# ICN Registers #-------------------------------------------------------------------------------------------#
                               # --------------#

sfr (key=CNEN1 addr=0xc0 size=2 access='u u u u u u u u rw rw rw rw rw rw rw rw')
    reset (por='--------00000000' mclr='--------00000000')
    bit (names='- - - - - - - - CN7IE CN6IE CN5IE CN4IE CN3IE CN2IE CN1IE CN0IE')
    stimulus (scl=rwb)
UnusedRegs (0xc2-0xc3)
sfr (key=CNPU1 addr=0xc4 size=2 access='u u u u u u u u rw rw rw rw rw rw rw rw')
    reset (por='--------00000000' mclr='--------00000000')
    bit (names='- - - - - - - - CN7PUE CN6PUE CN5PUE CN4PUE CN3PUE CN2PUE CN1PUE CN0PUE')
    stimulus (scl=rwb)
UnusedRegs (0xc6-0xc7)
UnusedRegs (0xc8-0xff)

                               # ----------------#
#------------------------------# TIMER Registers #-------------------------------------------------#
                               # ----------------#

sfr (key=TMR1 addr=0x100 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxxxxxxxxxx' mclr='uuuuuuuuuuuuuuuu')
    bit (names='TMR1' width='16')
    stimulus (scl=rwb type=int)
sfr (key=PR1 addr=0x102 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='1111111111111111' mclr='1111111111111111')
    bit (names='PR1' width='16')
    stimulus (scl=rwb type=int)
sfr (key=T1CON addr=0x104 size=2 access='rw u rw u u u u u u rw rw rw u rw rw u')
    reset (por='0-0------000-00-' mclr='0-0------uuu-uu-')
    bit (names='TON - TSIDL - - - - - - TGATE TCKPS - TSYNC TCS -' width='1 1 1 1 1 1 1 1 1 1 2 1 1 1 1')
    stimulus (scl=rwb)
sfr (key=TMR2 addr=0x106 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxxxxxxxxxx' mclr='uuuuuuuuuuuuuuuu')
    bit (names='TMR2' width='16')
    stimulus (scl=rwb type=int)
UnusedRegs (0x108-0x10b)
sfr (key=PR2 addr=0x10c size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='1111111111111111' mclr='1111111111111111')
    bit (names='PR2' width='16')
    stimulus (scl=rwb type=int)
UnusedRegs (0x10e-0x10f)
sfr (key=T2CON addr=0x110 size=2 access='rw u rw u u u u u u rw rw rw u u rw u')
    reset (por='0-0------000--0-' mclr='0-0------uuu--u-')
    bit (names='TON - TSIDL - - - - - - TGATE TCKPS - - TCS -' width='1 1 1 1 1 1 1 1 1 1 2 1 1 1 1')
    stimulus (scl=rwb)
UnusedRegs (0x112-0x13f)


                               # ------------------------#
#------------------------------# Input Capture Registers #----------------------------------------------#
                               # ------------------------#

UnusedRegs (0x140-0x17f)


                               # -------------------------#
#------------------------------# Output Compare Registers #---------------------------------------------#
                               # -------------------------#

sfr (key=OC1RS addr=0x180 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='0000000000000000' mclr='0000000000000000')
    bit (names='OC1RS' width='16')
    stimulus (scl=rwb type=int)
sfr (key=OC1R addr=0x182 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='0000000000000000' mclr='0000000000000000')
    bit (names='OC1R' width='16')
    stimulus (scl=rwb type=int)
sfr (key=OC1CON addr=0x184 size=2 access='u u rw u u u u u u u u r u rw rw rw')
    reset (por='--0--------00000' mclr='--0--------00000')
    bit (names='- - OCSIDL - - - - - - - - OCFLT - OCM' width='1 1 1 1 1 1 1 1 1 1 1 1 1 3' scltype='b b b b b b b b b b b b b i')
    stimulus (scl=rwb)
UnusedRegs (0x186-0x1af)
UnusedRegs (0x1b0-0x1bf)

                               # --------------#
#------------------------------# PWM Registers #--------------------------------------------------------------------------------------#
                               # --------------#

sfr (key=PTCON addr=0x400 size=2 access='rw u rw r rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='0-00000000000000' mclr='0-00---000000000')
    bit (names='PTEN - PTSIDL SESTAT SEIE EIPU SYNCPOL SYNCOEN SYNCEN SYNCSRC SEVTPS' width='1 1 1 1 1 1 1 1 1 3 4')
    stimulus (scl=rwb)
sfr (key=PERIOD addr=0x402 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw u u u')
    reset (por='1111111111110000' mclr='1111111111110000')
    bit (names='PERIOD' width='16')
    stimulus (scl=rwb)
sfr (key=MDC addr=0x404 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='0000000000000000' mclr='0000000000000000')
    bit (names='MDC' width='16')
    stimulus (scl=rwb)
sfr (key=SEVTCMP addr=0x406 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw u u u')
    reset (por='0000000000000000' mclr='0000000000000000')
    bit (names='SEVTCMP' width='16')
    stimulus (scl=rwb)
sfr (key=PWMCON1 addr=0x408 size=2 access='r r r rw rw rw rw rw rw rw u u u u rw rw')
    reset (por='0000000000----00' mclr='0000000000----00')
    bit (names='FLTSTAT CLSTAT TRGSTAT FLTIEN CLIEN TRGIEN ITB MDCS DTC XPRES IUE' width='1 1 1 1 1 1 1 1 2 1 1 1 1 1 1')
    stimulus (scl=rwb)
sfr (key=IOCON1 addr=0x40a size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw u rw')
    reset (por='11000000111111-1' mclr='11000000111111-1')
    bit (names='PENH PENL POLH POLL PMOD OVRENH OVRENL OVRDAT FLTDAT CLDAT - OSYNC' width='1 1 1 1 2 1 1 2 2 2 1 1')
    stimulus (scl=rwb)
sfr (key=FCLCON1 addr=0x40c size=2 access='u u u rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='---0000000000000' mclr='---0000000000000')
    bit (names='- - - CLSRC CLPOL CLMODE FLTSRC FLTPOL FLTMOD' width='1 1 1 4 1 1 4 1 2')
    stimulus (scl=rwb)
sfr (key=DC1 addr=0x40e size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='0000000000000000' mclr='0000000000000000')
    bit (names='DC1' width='16')
    stimulus (scl=rwb)
sfr (key=PHASE1 addr=0x410 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw u u')
    reset (por='00000000000000--' mclr='00000000000000--')
    bit (names='PHASE1' width='16')
    stimulus (scl=rwb)
sfr (key=DTR1 addr=0x412 size=2 access='u u rw rw rw rw rw rw rw rw rw rw rw rw u u')
    reset (por='--000000000000--' mclr='--000000000000--')
    bit (names='DTR1' width='16')
    stimulus (scl=rwb)
sfr (key=ALTDTR1 addr=0x414 size=2 access='u u rw rw rw rw rw rw rw rw rw rw rw rw u u')
    reset (por='--000000000000--' mclr='--000000000000--')
    bit (names='ALTDTR1' width='16')
    stimulus (scl=rwb)
sfr (key=TRIG1 addr=0x416 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw u u u')
    reset (por='0000000000000---' mclr='0000000000000---')
    bit (names='TRIG1' width='16')
    stimulus (scl=rwb)
sfr (key=TRGCON1 addr=0x418 size=2 access='rw rw rw u u u u u u u rw rw rw rw rw rw')
    reset (por='000-------000000' mclr='000-------000000')
    bit (names='TRGDIV - - - - - - - TRGSTRT' width='3 1 1 1 1 1 1 1 6')
    stimulus (scl=rwb)
sfr (key=LEBCON1 addr=0x41a size=2 access='rw rw rw rw u u rw rw rw rw rw rw rw u u u')
    reset (por='0000--0000000---' mclr='0000--0000000---')
    bit (names='PHR PHF PLR PLF - - LEB - - -' width='1 1 1 1 1 1 7 1 1 1')
    stimulus (scl=rwb)
sfr (key=PWMCON2 addr=0x41c size=2 access='r r r rw rw rw rw rw rw rw u u u u rw rw')
    reset (por='0000000000----00' mclr='0000000000----00')
    bit (names='FLTSTAT CLSTAT TRGSTAT FLTIEN CLIEN TRGIEN ITB MDCS DTC XPRES IUE' width='1 1 1 1 1 1 1 1 2 1 1 1 1 1 1')
    stimulus (scl=rwb)
sfr (key=IOCON2 addr=0x41e size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw u rw')
    reset (por='11000000111111-1' mclr='11000000111111-1')
    bit (names='PENH PENL POLH POLL PMOD OVRENH OVRENL OVRDAT FLTDAT CLDAT - OSYNC' width='1 1 1 1 2 1 1 2 2 2 1 1')
    stimulus (scl=rwb)
sfr (key=FCLCON2 addr=0x420 size=2 access='u u u rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='---0000000000000' mclr='---0000000000000')
    bit (names='- - - CLSRC CLPOL CLMODE FLTSRC FLTPOL FLTMOD' width='1 1 1 4 1 1 4 1 2')
    stimulus (scl=rwb)
sfr (key=DC2 addr=0x422 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='0000000000000000' mclr='0000000000000000')
    bit (names='DC2' width='16')
    stimulus (scl=rwb)
sfr (key=PHASE2 addr=0x424 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw u u')
    reset (por='00000000000000--' mclr='00000000000000--')
    bit (names='PHASE2' width='16')
    stimulus (scl=rwb)
sfr (key=DTR2 addr=0x426 size=2 access='u u rw rw rw rw rw rw rw rw rw rw rw rw u u')
    reset (por='--000000000000--' mclr='--000000000000--')
    bit (names='DTR2' width='16')
    stimulus (scl=rwb)
sfr (key=ALTDTR2 addr=0x428 size=2 access='u u rw rw rw rw rw rw rw rw rw rw rw rw u u')
    reset (por='--000000000000--' mclr='--000000000000--')
    bit (names='ALTDTR2' width='16')
    stimulus (scl=rwb)
sfr (key=TRIG2 addr=0x42a size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw u u u')
    reset (por='0000000000000---' mclr='0000000000000---')
    bit (names='TRIG2' width='16')
    stimulus (scl=rwb)
sfr (key=TRGCON2 addr=0x42c size=2 access='rw rw rw u u u u u u u rw rw rw rw rw rw')
    reset (por='000-------000000' mclr='000-------000000')
    bit (names='TRGDIV - - - - - - - TRGSTRT' width='3 1 1 1 1 1 1 1 6')
    stimulus (scl=rwb)
sfr (key=LEBCON2 addr=0x42e size=2 access='rw rw rw rw u u rw rw rw rw rw rw rw u u u')
    reset (por='0000--0000000---' mclr='0000--0000000---')
    bit (names='PHR PHF PLR PLF - - LEB - - -' width='1 1 1 1 1 1 7 1 1 1')
    stimulus (scl=rwb)
UnusedRegs (0x430-0x457)
#sfr (key=PWMCON3 addr=0x430 size=2 access='r r r rw rw rw rw rw rw rw u u u u rw rw')
#    reset (por='0000000000----00' mclr='0000000000----00')
#    bit (names='FLTSTAT CLSTAT TRGSTAT FLTIEN CLIEN TRGIEN ITB MDCS DTC XPRES IUE' width='1 1 1 1 1 1 1 1 2 1 1 1 1 1 1')
#    stimulus (scl=rwb)
#sfr (key=IOCON3 addr=0x432 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw u rw')
#    reset (por='11000000111111-1' mclr='11000000111111-1')
#    bit (names='PENH PENL POLH POLL PMOD OVRENH OVRENL OVRDAT FLTDAT CLDAT - OSYNC' width='1 1 1 1 2 1 1 2 2 2 1 1')
#    stimulus (scl=rwb)
#sfr (key=FCLCON3 addr=0x434 size=2 access='u u u rw rw rw rw rw rw rw rw rw rw rw rw rw')
#    reset (por='---0000000000000' mclr='---0000000000000')
#    bit (names='- - - CLSRC CLPOL CLMODE FLTSRC FLTPOL FLTMOD' width='1 1 1 4 1 1 4 1 2')
#    stimulus (scl=rwb)
#sfr (key=DC3 addr=0x436 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
#    reset (por='0000000000000000' mclr='0000000000000000')
#    bit (names='DC3' width='16')
#    stimulus (scl=rwb)
#sfr (key=PHASE3 addr=0x438 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw u u')
#    reset (por='00000000000000--' mclr='00000000000000--')
#    bit (names='PHASE3' width='16')
#    stimulus (scl=rwb)
#sfr (key=DTR3 addr=0x43a size=2 access='u u rw rw rw rw rw rw rw rw rw rw rw rw u u')
#    reset (por='--000000000000--' mclr='--000000000000--')
#    bit (names='DTR3' width='16')
#    stimulus (scl=rwb)
#sfr (key=ALTDTR3 addr=0x43c size=2 access='u u rw rw rw rw rw rw rw rw rw rw rw rw u u')
#    reset (por='--000000000000--' mclr='--000000000000--')
#    bit (names='ALTDTR3' width='16')
#    stimulus (scl=rwb)
#sfr (key=TRIG3 addr=0x43e size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw u u u')
#    reset (por='0000000000000---' mclr='0000000000000---')
#    bit (names='TRIG3' width='16')
#    stimulus (scl=rwb)
#sfr (key=TRGCON3 addr=0x440 size=2 access='rw rw rw u u u u u u u rw rw rw rw rw rw')
#    reset (por='000-------000000' mclr='000-------000000')
#    bit (names='TRGDIV - - - - - - - TRGSTRT' width='3 1 1 1 1 1 1 1 6')
#    stimulus (scl=rwb)
#sfr (key=LEBCON3 addr=0x442 size=2 access='rw rw rw rw u u rw rw rw rw rw rw rw u u u')
#    reset (por='0000--0000000---' mclr='0000--0000000---')
#    bit (names='PHR PHF PLR PLF - - LEB - - -' width='1 1 1 1 1 1 7 1 1 1')
#    stimulus (scl=rwb)
#sfr (key=PWMCON4 addr=0x444 size=2 access='r r r rw rw rw rw rw rw rw u u u u rw rw')
#    reset (por='0000000000----00' mclr='0000000000----00')
#    bit (names='FLTSTAT CLSTAT TRGSTAT FLTIEN CLIEN TRGIEN ITB MDCS DTC XPRES IUE' width='1 1 1 1 1 1 1 1 2 1 1 1 1 1 1')
#    stimulus (scl=rwb)
#sfr (key=IOCON4 addr=0x446 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw u rw')
#    reset (por='11000000111111-1' mclr='11000000111111-1')
#    bit (names='PENH PENL POLH POLL PMOD OVRENH OVRENL OVRDAT FLTDAT CLDAT - OSYNC' width='1 1 1 1 2 1 1 2 2 2 1 1')
#    stimulus (scl=rwb)
#sfr (key=FCLCON4 addr=0x448 size=2 access='u u u rw rw rw rw rw rw rw rw rw rw rw rw rw')
#    reset (por='---0000000000000' mclr='---0000000000000')
#    bit (names='- - - CLSRC CLPOL CLMODE FLTSRC FLTPOL FLTMOD' width='1 1 1 4 1 1 4 1 2')
#    stimulus (scl=rwb)
#sfr (key=DC4 addr=0x44a size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
#    reset (por='0000000000000000' mclr='0000000000000000')
#    bit (names='DC4' width='16')
#    stimulus (scl=rwb)
#sfr (key=PHASE4 addr=0x44c size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw u u')
#    reset (por='00000000000000--' mclr='00000000000000--')
#    bit (names='PHASE4' width='16')
#    stimulus (scl=rwb)
#sfr (key=DTR4 addr=0x44e size=2 access='u u rw rw rw rw rw rw rw rw rw rw rw rw u u')
#    reset (por='--000000000000--' mclr='--000000000000--')
#    bit (names='DTR4' width='16')
#    stimulus (scl=rwb)
#sfr (key=ALTDTR4 addr=0x450 size=2 access='u u rw rw rw rw rw rw rw rw rw rw rw rw u u')
#    reset (por='--000000000000--' mclr='--000000000000--')
#    bit (names='ALTDTR4' width='16')
#    stimulus (scl=rwb)
#sfr (key=TRIG4 addr=0x452 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw u u u')
#    reset (por='0000000000000---' mclr='0000000000000---')
#    bit (names='TRIG4' width='16')
#    stimulus (scl=rwb)
#sfr (key=TRGCON4 addr=0x454 size=2 access='rw rw rw u u u u u u u rw rw rw rw rw rw')
#    reset (por='000-------000000' mclr='000-------000000')
#    bit (names='TRGDIV - - - - - - - TRGSTRT' width='3 1 1 1 1 1 1 1 6')
#    stimulus (scl=rwb)
#sfr (key=LEBCON4 addr=0x456 size=2 access='rw rw rw rw u u rw rw rw rw rw rw rw u u u')
#    reset (por='0000--0000000---' mclr='0000--0000000---')
#    bit (names='PHR PHF PLR PLF - - LEB - - -' width='1 1 1 1 1 1 7 1 1 1')
#    stimulus (scl=rwb)
UnusedRegs (0x458-0x47f)

                               # --------------#
#------------------------------# I2C Registers #-------------------------------------------------------------#
                               # --------------#

sfr (key=I2CRCV addr=0x200 size=2 access='u u u u u u u u r r r r r r r r')
    reset (por='--------00000000' mclr='--------00000000')
    bit (names='- - - - - - - - I2CRCV' width='1 1 1 1 1 1 1 1 8')
    stimulus (scl=rwb regfiles=r pcfiles=r)
sfr (key=I2CTRN addr=0x202 size=2 access='u u u u u u u u w w w w w w w w')
    reset (por='--------00000000' mclr='--------00000000')
    bit (names='- - - - - - - - I2CTRN' width='1 1 1 1 1 1 1 1 8')
    stimulus (scl=rwb regfiles=w pcfiles=w)
sfr (key=I2CBRG addr=0x204 size=2 access='u u u u u u u rw rw rw rw rw rw rw rw rw')
    reset (por='-------000000000' mclr='-------000000000')
    bit (names='- - - - - - - I2CBRG' width='1 1 1 1 1 1 1 9')
    stimulus (scl=rwb)
sfr (key=I2CCON addr=0x206 size=2 access='rw u rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='0-01000000000000' mclr='0-00000000000000')
    bit (names='I2CEN - I2CSIDL SCLREL IPMIEN A10M DISSLW SMEN GCEN STREN ACKDT ACKEN RCEN PEN RSEN SEN')
    stimulus (scl=rwb)
sfr (key=I2CSTAT addr=0x208 size=2 access='r r u u u rc r r rc rc r rc rc r r r')
    reset (por='00---00000000000' mclr='00---00000000000')
    bit (names='ACKSTAT TRSTAT - - - BCL GCSTAT ADD10 IWCOL I2COV D/nA P S R/nW RBF TBF')
    bit (tag=scl names='ACKSTAT TRSTAT - - - BCL GCSTAT ADD10 IWCOL I2COV D_nA P S R_nW RBF TBF')
    stimulus (scl=rwb)
sfr (key=I2CADD addr=0x20a size=2 access='u u u u u u rw rw rw rw rw rw rw rw rw rw')
    reset (por='------0000000000' mclr='------0000000000')
    bit (names='- - - - - - I2CADD' width='1 1 1 1 1 1 10')
    stimulus (scl=rwb)

                               # ----------------#
#------------------------------# UART1 Registers #----------------------------------------------------------------#
                               # ----------------#

sfr (key=U1MODE addr=0x220 size=2 access='rw u rw u u rw u u rw rw rw u u rw rw rw')
    reset (por='0-0--0--000--000' mclr='0-0--0--000--000')
    bit (names='UARTEN - USIDL - - ALTIO - - WAKE LPBACK ABAUD - - PDSEL STSEL' width='1 1 1 1 1 1 1 1 1 1 1 1 1 2 1')
    stimulus (scl=rwb)
sfr (key=U1STA addr=0x222 size=2 access='rw u u u rw rw r r rw rw rw r r r rc r')
    reset (por='0---000100010000' mclr='0---000100010000')
    bit (names='UTXISEL - - - UTXBRK UTXEN UTXBF TRMT URXISEL ADDEN RIDLE PERR FERR OERR URXDA' width='1 1 1 1 1 1 1 1 2 1 1 1 1 1 1')
    stimulus (scl=rwb)
sfr (key=U1TXREG addr=0x224 size=2 access='u u u u u u u rw rw rw rw rw rw rw rw rw')
    reset (por='-------xxxxxxxxx' mclr='-------000000000')
    bit (names='- - - - - - - TX' width='1 1 1 1 1 1 1 9')
    stimulus (scl=rwb regfiles=w)
sfr (key=U1RXREG addr=0x226 size=2 access='u u u u u u u r r r r r r r r r')
    reset (por='-------000000000' mclr='-------000000000')
    bit (names='- - - - - - - RX' width='1 1 1 1 1 1 1 9')
    stimulus (scl=rb regfiles=rp)
sfr (key=U1BRG addr=0x228 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='0000000000000000' mclr='0000000000000000')
    bit (names='BRG' width='16')
    stimulus (scl=rwb)

                               # ----------------#
#------------------------------# UART2 Registers #-------------------------------------------------#
                               # ----------------#

UnusedRegs (0x22a-0x23f)

                               # ---------------#
#------------------------------# SPI1 Registers #------------------------------------------------------------#
                               # ---------------#

sfr (key=SPI1STAT addr=0x220 size=2 access='rw u rw u u u u u u rc u u u u r r')
    reset (por='0-0------0----00' mclr='0-0------0----00')
    bit (names='SPIEN - SPISIDL - - - - - - SPIROV - - - - SPITBF SPIRBF')
    stimulus (scl=rwb)
sfr (key=SPI1CON addr=0x222 size=2 access='u rw rw u rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='-00-000000000000' mclr='-00-000000000000')
    bit (names='- FRMEN SPIFSD - DISSDO MODE16 SMP CKE SSEN CKP MSTEN SPRE2 SPRE1 SPRE0 PPRE1 PPRE0')
    stimulus (scl=rwb)
sfr (key=SPI1BUF addr=0x224 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='0000000000000000' mclr='0000000000000000')
    bit (names='SPI1BUF' width='16')
    stimulus (scl=rwb type=int regfiles=rw pcfiles=rw)

                               # ---------------#
#------------------------------# SPI2 Registers #--------------------------------------------------#
                               # ---------------#

UnusedRegs (0x226-0x22b)
UnusedRegs (0x22c-0x23f)

                               # --------------#
#------------------------------# DCI Registers #---------------------------------------------------#
                               # --------------#

UnusedRegs (0x240-0x25f)
UnusedRegs (0x260-0x27f)



                               # ---------------#
#------------------------------# ADCPS Registers #---------------------------------------------------------------------------#
                               # ---------------#

sfr (key=ADCON addr=0x300 size=2 access='rw u rw u u rw u rw rw rw rw rw rw rw rw rw')
    reset (por='0-0--0-000000000' mclr='0-0--0-000000000')
    bit (names='ADON - ADSIDL - - GSWTRG - FORM EIE ORDER SEQSAMP ADCS' width='1 1 1 1 1 1 1 1 1 1 1 5')
    stimulus (scl=rwb)
sfr (key=ADPCFG1 addr=0x302 size=2 access='u u u u u u u u rw rw rw rw rw rw rw rw')
    reset (por='--------00000000' mclr='--------00000000')
    bit (names='- - - - - - - - PCFG' width='1 1 1 1 1 1 1 1 8')
    stimulus (scl=rwb)
UnusedRegs (0x304-0x304)
sfr (key=ADSTAT addr=0x306 size=2 access='u u u u u u u u u u u u rc rc rc rc')
    reset (por='------------0000' mclr='------------0000')
    bit (names='- - - - - - - - - - - - PxRDY' width='1 1 1 1 1 1 1 1 1 1 1 1 4')
    stimulus (scl=rwb)
sfr (key=ADBASE addr=0x308 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw u')
    reset (por='0000000000000000' mclr='0000000000000000')
    bit (names='ADBASE' width='16')
    stimulus (scl=rwb)
sfr (key=ADCPC0 addr=0x30a size=2 access='rw r rw rw rw rw rw rw rw r rw rw rw rw rw rw')
    reset (por='0000000000000000' mclr='0000000000000000')
    bit (names='IRQEN1 PEND1 SWTRG1 TRGSRC1 IRQEN0 PEND0 SWTRG0 TRGSRC0' width='1 1 1 5 1 1 1 5')
    stimulus (scl=rwb)
sfr (key=ADCPC1 addr=0x30c size=2 access='rw r rw rw rw rw rw rw rw r rw rw rw rw rw rw')
    reset (por='0000000000000000' mclr='0000000000000000')
    bit (names='IRQEN3 PEND3 SWTRG3 TRGSRC3 IRQEN2 PEND2 SWTRG2 TRGSRC2' width='1 1 1 5 1 1 1 5')
    stimulus (scl=rwb)
#sfr (key=ADCPC2 addr=0x30e size=2 access='rw r rw rw rw rw rw rw rw r rw rw rw rw rw rw')
#    reset (por='0000000000000000' mclr='0000000000000000')
#    bit (names='IRQEN5 PEND5 SWTRG5 TRGSRC5 IRQEN4 PEND4 SWTRG4 TRGSRC4' width='1 1 1 5 1 1 1 5')
#    stimulus (scl=rwb)
UnusedRegs (0x30e-0x31e)

sfr (key=ADCBUF0 addr=0x320 size=2 access='u u u u u u r r r r r r r r r r')
    reset (por='------xxxxxxxxxx' mclr='------uuuuuuuuuu')
    bit (names='- - - - - - ADCBUF0' width='1 1 1 1 1 1 10')
    stimulus (scl=rb regfiles=r)
sfr (key=ADCBUF1 addr=0x322 size=2 access='u u u u u u r r r r r r r r r r')
    reset (por='------xxxxxxxxxx' mclr='------uuuuuuuuuu')
    bit (names='- - - - - - ADCBUF1' width='1 1 1 1 1 1 10')
    stimulus (scl=rb)
sfr (key=ADCBUF2 addr=0x324 size=2 access='u u u u u u r r r r r r r r r r')
    reset (por='------xxxxxxxxxx' mclr='------uuuuuuuuuu')
    bit (names='- - - - - - ADCBUF2' width='1 1 1 1 1 1 10')
    stimulus (scl=rb)
sfr (key=ADCBUF3 addr=0x326 size=2 access='u u u u u u r r r r r r r r r r')
    reset (por='------xxxxxxxxxx' mclr='------uuuuuuuuuu')
    bit (names='- - - - - - ADCBUF3' width='1 1 1 1 1 1 10')
    stimulus (scl=rb)
sfr (key=ADCBUF4 addr=0x328 size=2 access='u u u u u u r r r r r r r r r r')
    reset (por='------xxxxxxxxxx' mclr='------uuuuuuuuuu')
    bit (names='- - - - - - ADCBUF4' width='1 1 1 1 1 1 10')
    stimulus (scl=rb)
sfr (key=ADCBUF5 addr=0x32a size=2 access='u u u u u u r r r r r r r r r r')
    reset (por='------xxxxxxxxxx' mclr='------uuuuuuuuuu')
    bit (names='- - - - - - ADCBUF5' width='1 1 1 1 1 1 10')
    stimulus (scl=rb)
sfr (key=ADCBUF6 addr=0x32c size=2 access='u u u u u u r r r r r r r r r r')
    reset (por='------xxxxxxxxxx' mclr='------uuuuuuuuuu')
    bit (names='- - - - - - ADCBUF6' width='1 1 1 1 1 1 10')
    stimulus (scl=rb)
sfr (key=ADCBUF7 addr=0x32e size=2 access='u u u u u u r r r r r r r r r r')
    reset (por='------xxxxxxxxxx' mclr='------uuuuuuuuuu')
    bit (names='- - - - - - ADCBUF7' width='1 1 1 1 1 1 10')
    stimulus (scl=rb)
UnusedRegs (0x338-0x33e)

                               # ----------------#
#------------------------------# PORTA Registers #-------------------------------------------------#
                               # ----------------#

sfr (key=TRISA addr=0x2c0 size=2 access='u u u u u u rw u u u u u u u u u')
    reset (por='1111111111111111' mclr='1111111111111111')
    bit (names='- - - - - - TRISA9 - - - - - - - - -')
    bit (tag=scl names='TRISA' width='16')
    stimulus (scl=rwb)
sfr (key=PORTA addr=0x2c2 size=2 access='u u u u u u rw u u u u u u u u u')
    reset (por='xxxxxxxxxxxxxxxx' mclr='uuuuuuuuuuuuuuuu')
    bit (names='- - - - - - RA9 - - - - - - - - -')
    bit (tag=scl names='RA' width='16')
    stimulus (scl=rwb)
sfr (key=LATA addr=0x2c4 size=2 access='u u u u u u rw u u u u u u u u u')
    reset (por='0000000000000000' mclr='uuuuuuuuuuuuuuuu')
    bit (names='- - - - - - LATA9 - - - - - - - - -')
    bit (tag=scl names='LATA' width='16')
    stimulus (scl=rwb)


                               # ----------------#
#------------------------------# PORTB Registers #-----------------------------------------------------------------------------------------#
                               # ----------------#

sfr (key=TRISB addr=0x2c6 size=2 access='u u u u u u u u rw rw rw rw rw rw rw rw')
    reset (por='1111111111111111' mclr='1111111111111111')
    bit (names='- - - - - - - - TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0')
    bit (tag=scl names='TRISB' width='16')
    stimulus (scl=rwb)
sfr (key=PORTB addr=0x2c8 size=2 access='u u u u u u u u rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxxxxxxxxxx' mclr='uuuuuuuuuuuuuuuu')
    bit (names='- - - - - - - - RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0')
    bit (tag=scl names='RB' width='16')
    stimulus (scl=rwb)
sfr (key=LATB addr=0x2ca size=2 access='u u u u u u u u rw rw rw rw rw rw rw rw')
    reset (por='0000000000000000' mclr='uuuuuuuuuuuuuuuu')
    bit (names='- - - - - - - - LATB7 LATB6 LATB5 LATB4 LATB3 LATB2 LATB1 LATB0')
    bit (tag=scl names='LATB' width='16')
    stimulus (scl=rwb)


                               # ----------------#
#------------------------------# PORTC Registers #---------------------------------------#
                               # ----------------#

UnusedRegs (0x2cc-0x2d1)

                               # ----------------#
#------------------------------# PORTD Registers #-----------------------------------------------------------------------------------------#
                               # ----------------#

sfr (key=TRISD addr=0x2d2 size=2 access='u u u u u u u u u u u u u u u rw')
    reset (por='1111111111111111' mclr='1111111111111111')
    bit (names='- - - - - - - - - - - - - - - TRISD0')
    bit (tag=scl names='TRISD' width='16')
    stimulus (scl=rwb)
sfr (key=PORTD addr=0x2d4 size=2 access='u u u u u u u u u u u u u u u rw')
    reset (por='xxxxxxxxxxxxxxxx' mclr='uuuuuuuuuuuuuuuu')
    bit (names='- - - - - - - - - - - - - - - RD0')
    bit (tag=scl names='RD' width='16')
    stimulus (scl=rwb)
sfr (key=LATD addr=0x2d6 size=2 access='u u u u u u u u u u u u u u u rw')
    reset (por='0000000000000000' mclr='uuuuuuuuuuuuuuuu')
    bit (names='- - - - - - - - - - - - - - - LATD0')
    bit (tag=scl names='LATD' width='16')
    stimulus (scl=rwb)

                               # ----------------#
#------------------------------# PORTE Registers #------------------------------------------------------#
                               # ----------------#

sfr (key=TRISE addr=0x2d8 size=2 access='u u u u u u u u rw rw rw rw rw rw rw rw')
    reset (por='0000000011111111' mclr='0000000011111111')
    bit (names='- - - - - - - - TRISE7 TRISE6 TRISE5 TRISE4 TRISE3 TRISE2 TRISE1 TRISE0')
    bit (tag=scl names='TRISE' width='16')
    stimulus (scl=rwb)
sfr (key=PORTE addr=0x2da size=2 access='u u u u u u u u rw rw rw rw rw rw rw rw')
    reset (por='00000000xxxxxxxx' mclr='uuuuuuuuuuuuuuuu')
    bit (names='- - - - - - - - RE7 RE6 RE5 RE4 RE3 RE2 RE1 RE0')
    bit (tag=scl names='RE' width='16')
    stimulus (scl=rwb)
sfr (key=LATE addr=0x2dc size=2 access='u u u u u u u u rw rw rw rw rw rw rw rw')
    reset (por='0000000000000000' mclr='uuuuuuuuuuuuuuuu')
    bit (names='- - - - - - - - LATE7 LATE6 LATE5 LATE4 LATE3 LATE2 LATE1 LATE0')
    bit (tag=scl names='LATE' width='16')
    stimulus (scl=rwb)

                               # ----------------#
#------------------------------# PORTF Registers #-------------------------------------------------#
                               # ----------------#

sfr (key=TRISF addr=0x2de size=2 access='u u u u u u u rw rw rw u u u u u u')
    reset (por='0000000111000000' mclr='0000000111000000')
    bit (names='- - - - - - - TRISF8 TRISF7 TRISF6 - - - - - -')
    bit (tag=scl names='TRISF' width='16')
    stimulus (scl=rwb)
sfr (key=PORTF addr=0x2e0 size=2 access='u u u u u u u rw rw rw u u u u u u')
    reset (por='xxxxxxx000xxxxxx' mclr='uuuuuuuuuuuuuuuu')
    bit (names='- - - - - - - RF8 RF7 RF6 - - - - - -')
    bit (tag=scl names='RF' width='16')
    stimulus (scl=rwb)
sfr (key=LATF addr=0x2e2 size=2 access='u u u u u u u rw rw rw u u u u u u')
    reset (por='0000000000000000' mclr='uuuuuuuuuuuuuuuu')
    bit (names='- - - - - - - LATF8 LATF7 LATF6 - - - - - -')
    bit (tag=scl names='LATF' width='16')
    stimulus (scl=rwb)

                               # ----------------#
#------------------------------# PORTG Registers #-------------------------------------------------#
                               # ----------------#

UnusedRegs (0x2e4-0x2e9)
UnusedRegs (0x2ea-0x2ff)


                               # ---------------#
#------------------------------# CAN1 Registers #--------------------------------------------------#
                               # ---------------#

UnusedRegs (0x39c-0x3bf)


                               # ---------------#
#------------------------------# CAN2 Registers #--------------------------------------------------#
                               # ---------------#

UnusedRegs (0x3c0-0x3ff)
UnusedRegs (0x4A8-0x73f)


                               # ---------------#
#------------------------------# CMP1 Registers #--------------------------------------------------#
                               # ---------------#

sfr (key=CMPCON1 addr=0x4c0 size=2 access='rw rw rw u u u u rw rw rw rw u rw u rw rw')
    reset (por='000----0000-0-00' mclr='000----0000-0-00')
    bit (names='CMPON - CMPSIDL - - - - FLTSEL INSEL EXTREF - CMPSTAT - CMPPOL RANGE' width='1 1 1 1 1 1 1 1 2 1 1 1 1 1 1')
    stimulus (scl=rwb regfiles=w)
sfr (key=CMPDAC1 addr=0x4c2 size=2 access='u u u u u u rw rw rw rw rw rw rw rw rw rw')
    reset (por='000-----000-0-00' mclr='000-----000-0-00')
    bit (names='- - - - - - CMREF9 CMREF8 CMREF7 CMREF6 CMREF5 CMREF4 CMREF3 CMREF2 CMREF1 CMREF0' width='1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1')
    stimulus (scl=rwb regfiles=w pcfiles=rw)

                               # ---------------#
#------------------------------# CMP2 Registers #--------------------------------------------------#
                               # ---------------#

sfr (key=CMPCON2 addr=0x4c4 size=2 access='rw rw rw u u u u rw rw rw rw u rw u rw rw')
    reset (por='000----0000-0-00' mclr='000----0000-0-00')
    bit (names='CMPON - CMPSIDL - - - - FLTSEL INSEL EXTREF - CMPSTAT - CMPPOL RANGE' width='1 1 1 1 1 1 1 1 2 1 1 1 1 1 1')
    stimulus (scl=rwb regfiles=w)
sfr (key=CMPDAC2 addr=0x4c6 size=2 access='u u u u u u rw rw rw rw rw rw rw rw rw rw')
    reset (por='000-----000-0-00' mclr='000-----000-0-00')
    bit (names='- - - - - - CMREF9 CMREF8 CMREF7 CMREF6 CMREF5 CMREF4 CMREF3 CMREF2 CMREF1 CMREF0' width='1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1')
    stimulus (scl=rwb regfiles=w pcfiles=rw)

UnusedRegs (0x4C8-0x4ff)
UnusedRegs (0x500-0x73f)
                               # --------------#
#------------------------------# SIB Registers #----------------------------------------------------------------------------#
                               # --------------#

sfr (key=RCON addr=0x740 size=2 access='rw rw u u u u u u rw rw rw rw rw rw rw rw')
    reset (por='00------00000011' mclr='uu------1uuuuuuu')
    bit (names='TRAPR IOPUWR - - - - - - EXTR SWR SWDTEN WDTO SLEEP IDLE BOR POR' width='1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1')
    stimulus (scl=r)
sfr (key=OSCCON addr=0x742 size=2 access='u u r r u u rw rw rw rw r u rc u rw rw')
    reset (por='--yy--yy000-0-00' mclr='--yy--yy000-0-00')
    bit (names='- - COSC - - NOSC POST LOCK - CF - LPOSCEN OSWEN' width='1 1 2 1 1 2 2 1 1 1 1 1 1')
    stimulus (scl=r)
UnusedRegs (0x744-0x74f)

                               # -------------------#
#------------------------------# Security Registers #----------------------------------------------#
                               # -------------------#

UnusedRegs (0x750-0x755)
UnusedRegs (0x756-0x75f)

                               # --------------#
#------------------------------# NVM Registers #---------------------------------------------------#
                               # --------------#

sfr (key=NVMCON addr=0x760 size=2 access='rw rw rw u u u u u u rw rw rw rw rw rw rw')
    reset (por='000------0000000' mclr='000------0000000')
    bit (names='WR WREN WRERR - - - - - - PROGOP' width='1 1 1 1 1 1 1 1 1 7')
    stimulus (scl=r)
sfr (key=NVMADR addr=0x762 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxxxxxxxxxx' mclr='0000000000000000')
    bit (names='NVMADR' width='16')
    stimulus (scl=r type=int)
sfr (key=NVMADRU addr=0x764 size=2 access='u u u u u u u u rw rw rw rw rw rw rw rw')
    reset (por='--------xxxxxxxx' mclr='--------00000000')
    bit (names='- - - - - - - - NVMADR' width='1 1 1 1 1 1 1 1 8')
    stimulus (scl=r)
sfr (key=NVMKEY addr=0x766 size=2 access='u u u u u u u u w w w w w w w w')
    reset (por='--------00000000' mclr='--------00000000')
    bit (names='- - - - - - - - KEY' width='1 1 1 1 1 1 1 1 8')
    stimulus (scl=r)
UnusedRegs (0x768-0x76f)

                               # --------------#
#------------------------------# PMD Registers #-----------------------------------------------------------------------#
                               # --------------#

sfr (key=PMD1 addr=0x770 size=2 access='rw rw rw rw rw rw rw u rw u rw u rw u rw rw')
    reset (por='0000000-0-0-0-00' mclr='0000000-0-0-0-00')
    bit (names='T5MD T4MD T3MD T2MD T1MD QEIMD PWMMD - I2CMD - U1MD - SPI1MD - C1MD ADCM')
    stimulus (scl=rw)
sfr (key=PMD2 addr=0x772 size=2 access='rw rw u u u u rw rw u u u u u u rw rw')
    reset (por='00----00------00' mclr='00----00------00')
    bit (names='IC8MD IC7MD - - - - IC2MD IC1MD - - - - - - OC2MD 0C1MD')
    stimulus (scl=rw)
UnusedRegs (0x774-0x775)
UnusedRegs (0x776-0x7ff)

                               # -------------------#
#------------------------------# Configuration Bits #------------------------------------#
                               # -------------------#

    # See SIB DOS-00616 merge with DOS-00629
cfgbits (key=FOSC addr=0xF80000 unused=0x0000)
    field (key=FCKSMEN mask=0xC000 desc="Clock Switching and Monitor" init=0xC000)
        setting (req=0x8000 value=0x8000 desc="Sw Disabled, Mon Disabled")
        setting (req=0xC000 value=0x4000 desc="Sw Enabled, Mon Disabled")
        setting (req=0xC000 value=0x0000 desc="Sw Enabled, Mon Enabled")
   field (key=BGSEL mask=0x1000 desc="Bandgap Select")
        setting (req=0x1000 value=0x1000 desc="FRC Bandgap Select")
        setting (req=0x1000 value=0x0000 desc="Precise Bandgap B Select")    
    field (key=FGS mask=0x0700 desc="Primary Oscillator Source" init=0x0100)
        setting (req=0x0700 value=0x0000 desc="Fast RC Oscillator (FRC)")
        setting (req=0x0700 value=0x0100 desc="Fast RC Oscillator (FRC) with PLL")
        setting (req=0x0700 value=0x0200 desc="Primary Oscillator (HS, EC)")
        setting (req=0x0700 value=0x0300 desc="Primary Oscillator (HS, EC) with PLL")
    field (key=FRANGE mask=0x0080 desc="Frequency Range Select")
        setting (req=0x0080 value=0x0000 desc="Low Range (FRC 9.57Mhz PLL 301Mhz)")
        setting (req=0x0080 value=0x0080 desc="High Range (FRC 14.1Mhz PLL 451Mhz)")        
   field (key=OSCOEN mask=0x0010 desc="OSCO Pin I/O Function")
        setting (req=0x0010 value=0x0010 desc="OSCO pin has digital I/O function")
        setting (req=0x0010 value=0x0000 desc="OSCO pin defined at CLOCKOUT")         
#    field (key=FG1 mask=0x03 desc="External Oscillator Selection and Control")
#        setting (req=0x03 value=0x03 desc="External HS/EC Mode Disabled")
#        setting (req=0x03 value=0x01 desc="External Clock Mode, OSCO as OSCOEN")
#        setting (req=0x03 value=0x00 desc="HS Oscillator Mode, OSCO as clockout") 
    field (key=FG1 mask=0x03 desc="External Oscillator Selection and Control")
        setting (req=0x03 value=0x03 desc="HS/EC Mode Disabled (FRC selected)")
        setting (req=0x03 value=0x02 desc="HS Oscillator, OSCO as OSCOEN")
#       setting (req=0x03 value=0x01 desc="XT Oscillator, OSCO as OSCOEN")
        setting (req=0x03 value=0x00 desc="EC Oscillator, OSCO as OSCOEN")

cfgbits (key=FWDT addr=0xF80002 unused=0x0000)
    # Using DFAL0 DOS DOS-00629
    field (key=WDT mask=0x8000 desc="Watchdog Timer" min=2)
        setting (req=0x8000 value=0x8000 desc="Enabled")
        setting (req=0x8000 value=0x0000 desc="Disabled")
    field (key=FWPSA mask=0x0030 desc="WDT Prescaler A")
        setting (req=0x30 value=0x00 desc="1:1")
        setting (req=0x30 value=0x10 desc="1:8")
        setting (req=0x30 value=0x20 desc="1:64")
        setting (req=0x30 value=0x30 desc="1:512")
    field (key=FWPSB mask=0x000F desc="WDT Prescaler B")
        setting (req=0xf value=0x0 desc="1:1")
        setting (req=0xf value=0x1 desc="1:2")
        setting (req=0xf value=0x2 desc="1:3")
        setting (req=0xf value=0x3 desc="1:4")
        setting (req=0xf value=0x4 desc="1:5")
        setting (req=0xf value=0x5 desc="1:6")
        setting (req=0xf value=0x6 desc="1:7")
        setting (req=0xf value=0x7 desc="1:8")
        setting (req=0xf value=0x8 desc="1:9")
        setting (req=0xf value=0x9 desc="1:10")
        setting (req=0xf value=0xa desc="1:11")
        setting (req=0xf value=0xb desc="1:12")
        setting (req=0xf value=0xc desc="1:13")
        setting (req=0xf value=0xd desc="1:14")
        setting (req=0xf value=0xe desc="1:15")
        setting (req=0xf value=0xf desc="1:16")
        
cfgbits (key=FBORPOR addr=0xF80004 unused=0x07b0)
    field (key=MCLRE mask=0x8000 desc="Master Clear Enable")
        setting (req=0x8000 value=0x8000 desc="Enabled")
        setting (req=0x8000 value=0x0000 desc="Disabled")
    field (key=RESERVED mask=0x07b0 desc="Reserved" init=0x07b0 flags=h)
        setting (req=0x07b0 value=0x07b0 desc="Reserved")        
        setting (req=0x07b0 value=0x0000 desc="Reserved")        
# JLD 4/5/06: PWRTEN seems to be stuck at 0. Leaving default value as 0
# JLD 4/6/06: Confirmed by Bryan Kris PWRTEN does not exist
#    field (key=PWRTEN mask=0x0008 desc="Power Up Timer Enable" init=0x0000)
#        setting (req=0x0008 value=0x0008 desc="Enable")
#        setting (req=0x0008 value=0x0000 desc="Disable")
    field (key=FPWRT mask=0x0007 desc="POR Timer Value")
        setting (req=0x7 value=0x0 desc="1ms")        
        setting (req=0x7 value=0x1 desc="2ms")        
        setting (req=0x7 value=0x2 desc="4ms")        
        setting (req=0x7 value=0x3 desc="8ms")        
        setting (req=0x7 value=0x4 desc="16ms")        
        setting (req=0x7 value=0x5 desc="32ms")        
        setting (req=0x7 value=0x6 desc="64ms")          
        setting (req=0x7 value=0x7 desc="128ms")

cfgbits (key=FGS addr=0xF8000A unused=0x0000)
    field (key=GCP mask=0x0002 desc="General Code Segment Code Protect")
        setting (req=0x0002 value=0x0002 desc="Disabled")
            checksum (type=0x0 protregion=0x00-0x00)
        setting (req=0x0002 value=0x0000 desc="Enabled")
checksum (type=0x27 protregion=0x0000-0x1FFF)
    field (key=GWRP mask=0x0001 desc="General Code Segment Write Protect")
        setting (req=0x0001 value=0x0001 desc="Disabled")
        setting (req=0x0001 value=0x0000 desc="Enabled")

cfgbits (key=ICD addr=0xF8000C unused=0x4000)
    field (key=BACKBUG mask=0x8000 desc="Background Debug" flags=h)
        setting (req=0x8000 value=0x8000 desc="Disabled")
        setting (req=0x8000 value=0x0000 desc="Enabled")
    field (key=COE mask=0x4000 desc="Set Clip On Emulation Mode" flags=h)
        setting (req=0x4000 value=0x4000 desc="Reset Into Operational Mode")
        setting (req=0x4000 value=0x0000 desc="Reset Into Clip On Emulation Mode")
    field (key=ICS mask=0x0003 desc="Comm Channel Select")
        setting (req=0x0003 value=0x3 desc="Use PGC/EMUC and PGD/EMUD")
        setting (req=0x0003 value=0x2 desc="Use EMUC1 and EMUD1")
        setting (req=0x0003 value=0x1 desc="Use EMUC2 and EMUD2")
        setting (req=0x0003 value=0x0 desc="Use EMUC3 and EMUD3")

                               # ------------#
#------------------------------# Peripherals #------------------------------------#
                               # ------------#

#--------------------------------------------------------------------------------
# Note: nextpin=NONE when next pinfunc is a portpin (eg RB3), CNx, or INTx.
# nextperiph=NONE when nextpin=NONE
#--------------------------------------------------------------------------------


#--------------------------------------------------------------------------------
# 				UARTs
#--------------------------------------------------------------------------------

peripheral (key=UART1 sfrs='U1MODE U1STA U1TXREG U1RXREG U1BRG')
    pinfunc (key=U1RX port=RF7 dir=in nextperiph=NONE nextpin=NONE)
    pinfunc (key=U1TX port=RF8 dir=out nextperiph=NONE nextpin=NONE)
    pinfunc (key=U1ARX port=RE6 dir=in nextperiph=NONE nextpin=NONE)
    pinfunc (key=U1ATX port=RE7 dir=out nextperiph=NONE nextpin=NONE)
    interrupt (name=RXINT1 enreg=IEC0 enmask=0x0200 flgreg=IFS0 flgmask=0x0200 prireg=IPC2 primask=0x0070)
    interrupt (name=TXINT1 enreg=IEC0 enmask=0x0400 flgreg=IFS0 flgmask=0x0400 prireg=IPC2 primask=0x0700)

#--------------------------------------------------------------------------------
# 				PORTA
#--------------------------------------------------------------------------------

peripheral (key=PORTA sfrs='TRISA LATA PORTA INTCON2 CNEN1' type=port)
    iopin (key=RA9 dir=inout)
        extint (key=INT0 enreg=IEC0 enmask=0x0001 flgreg=IFS0 flgmask=0x0001 prireg=IPC0 primask=0x0007)
        cnpin (key=SFLT2 notify=PWMPS)
        cnpin (key=OCFA notify=OC1)

#--------------------------------------------------------------------------------
# 				PORTB
#--------------------------------------------------------------------------------

peripheral (key=PORTB sfrs='TRISB LATB PORTB INTCON2 CNEN1' type=port)
    iopin (key=RB0 dir=inout)
        cnint (key=CNIRQ enreg=IEC1 enmask=0x0800 flgreg=IFS1 flgmask=0x0800 prireg=IPC6 primask=0x7000)
        cn (key=CN2 enreg=CNEN1 enmask=0x0004)
        cnpin (key=CINP0 notify=CMMUL)
    iopin (key=RB1 dir=inout)
        cnint (key=CNIRQ enreg=IEC1 enmask=0x0800 flgreg=IFS1 flgmask=0x0800 prireg=IPC6 primask=0x7000)
        cn (key=CN3 enreg=CNEN1 enmask=0x0008)
        cnpin (key=CINP1 notify=CMMUL)
    iopin (key=RB2 dir=inout)
        cnint (key=CNIRQ enreg=IEC1 enmask=0x0800 flgreg=IFS1 flgmask=0x0800 prireg=IPC6 primask=0x7000)
        cn (key=CN4 enreg=CNEN1 enmask=0x0010)
        cnpin (key=CINP2 notify=CMMUL)
        cnpin (key=CINP0 notify=CMMUL2)
    iopin (key=RB3 dir=inout)
        cnint (key=CNIRQ enreg=IEC1 enmask=0x0800 flgreg=IFS1 flgmask=0x0800 prireg=IPC6 primask=0x7000)
        cn (key=CN5 enreg=CNEN1 enmask=0x0020)
        cnpin (key=CINP3 notify=CMMUL)
        cnpin (key=CINP1 notify=CMMUL2)
    iopin (key=RB4 dir=inout)
        cnint (key=CNIRQ enreg=IEC1 enmask=0x0800 flgreg=IFS1 flgmask=0x0800 prireg=IPC6 primask=0x7000)
        cn (key=CN6 enreg=CNEN1 enmask=0x0040)
        cnpin (key=CINP2 notify=CMMUL2)
    iopin (key=RB5 dir=inout)
        cnint (key=CNIRQ enreg=IEC1 enmask=0x0800 flgreg=IFS1 flgmask=0x0800 prireg=IPC6 primask=0x7000)
        cn (key=CN7 enreg=CNEN1 enmask=0x0080)
        cnpin (key=CINP3 notify=CMMUL2)
    iopin (key=RB6 dir=inout)
    iopin (key=RB7 dir=inout)


#--------------------------------------------------------------------------------
# 				PORTD
#--------------------------------------------------------------------------------

peripheral (key=PORTD sfrs='TRISD LATD PORTD INTCON2 CNEN1' type=port)
    iopin (key=RD0 dir=inout)
        extint (key=INT1 enreg=IEC1 enmask=0x0001 flgreg=IFS1 flgmask=0x0001 prireg=IPC4 primask=0x0007)
        cnpin (key=SFLT1 notify=PWMPS)

#--------------------------------------------------------------------------------
# 				PORTE
#--------------------------------------------------------------------------------

peripheral (key=PORTE sfrs='TRISE LATE PORTE INTCON2 CNEN1' type=port)
    iopin (key=RE0 dir=inout)
    iopin (key=RE1 dir=inout)
    iopin (key=RE2 dir=inout)
    iopin (key=RE3 dir=inout)
    iopin (key=RE4 dir=inout)
    iopin (key=RE5 dir=inout)
    iopin (key=RE6 dir=inout)
        cnint (key=CNIRQ enreg=IEC1 enmask=0x0800 flgreg=IFS1 flgmask=0x0800 prireg=IPC6 primask=0x7000)
        cn (key=CN0 enreg=CNEN1 enmask=0x0001)
    iopin (key=RE7 dir=inout)
        cnint (key=CNIRQ enreg=IEC1 enmask=0x0800 flgreg=IFS1 flgmask=0x0800 prireg=IPC6 primask=0x7000)
        cn (key=CN1 enreg=CNEN1 enmask=0x0002)

#--------------------------------------------------------------------------------
# 				PORTF
#--------------------------------------------------------------------------------

peripheral (key=PORTF sfrs='TRISF LATF PORTF INTCON2 CNEN1' type=port)
    iopin (key=RF6 dir=inout)
        extint (key=INT2 enreg=IEC1 enmask=0x0002 flgreg=IFS1 flgmask=0x0002 prireg=IPC4 primask=0x0070)
        cnpin (key=SFLT3 notify=PWMPS)
    iopin (key=RF7 dir=inout)
    iopin (key=RF8 dir=inout)

#--------------------------------------------------------------------------------
# 				TIMERs
#--------------------------------------------------------------------------------

peripheral (key=TMR1 sfrs='TMR1 PR1 T1CON')
    pinfunc (key=T1CK port=RE6 dir=in nextperiph=NONE nextpin=NONE)
    interrupt (name=TMR1INT enreg=IEC0 enmask=0x0008 flgreg=IFS0 flgmask=0x0008 prireg=IPC0 primask=0x7000)

peripheral (key=TMR2 sfrs='TMR2 PR2 T2CON')
    pinfunc (key=T2CK port=RE7 dir=in nextperiph=NONE nextpin=NONE)
    interrupt (name=TMR2INT enreg=IEC0 enmask=0x0040 flgreg=IFS0 flgmask=0x0040 prireg=IPC1 primask=0x0700)

#--------------------------------------------------------------------------------
# 				ADCPS
#--------------------------------------------------------------------------------

peripheral (key=ADCPS sfrs='ADCON ADPCFG1 ADSTAT ADBASE ADCPC0 ADCPC1 ADCBUF0 ADCBUF1 ADCBUF2 ADCBUF3 ADCBUF4 ADCBUF5 ADCBUF6 ADCBUF7')
    pinfunc (key=AN0 port=RB0 dir=in nextperiph=NONE nextpin=NONE)
    pinfunc (key=AN1 port=RB1 dir=in nextperiph=NONE nextpin=NONE)
    pinfunc (key=AN2 port=RB2 dir=in nextperiph=NONE nextpin=NONE)
    pinfunc (key=AN3 port=RB3 dir=in nextperiph=NONE nextpin=NONE)
    pinfunc (key=AN4 port=RB4 dir=in nextperiph=NONE nextpin=NONE)
    pinfunc (key=AN5 port=RB5 dir=in nextperiph=NONE nextpin=NONE)
    pinfunc (key=AN6 port=RB6 dir=in nextperiph=NONE nextpin=NONE)
    pinfunc (key=AN7 port=RB7 dir=in nextperiph=NONE nextpin=NONE)
    access (key=ADCPS mode=AD_TWO_SAMPHOLD)
    interrupt (name=ADCINT enreg=IEC0 enmask=0x0800 flgreg=IFS0 flgmask=0x0800 prireg=IPC2 primask=0x7000)
    interrupt (name=ADCP0INT enreg=IEC2 enmask=0x0020 flgreg=IFS2 flgmask=0x0020 prireg=IPC9 primask=0x0070)
    interrupt (name=ADCP1INT enreg=IEC2 enmask=0x0040 flgreg=IFS2 flgmask=0x0040 prireg=IPC9 primask=0x0700)

#--------------------------------------------------------------------------------
# 				PWMPS
#--------------------------------------------------------------------------------

peripheral (key=PWMPS sfrs='PTCON PERIOD MDC SEVTCMP PWMCON1 IOCON1 FCLCON1 DC1 PHASE1 DTR1 ALTDTR1 TRIG1 TRGCON1 LEBCON1 PWMCON2 IOCON2 FCLCON2 DC2 PHASE2 DTR2 ALTDTR2 TRIG2 TRGCON2 LEBCON2')
    pinfunc (key=PWM1L port=RE0 dir=out nextperiph=NONE nextpin=NONE)
    pinfunc (key=PWM1H port=RE1 dir=out nextperiph=NONE nextpin=NONE)
    pinfunc (key=PWM2L port=RE2 dir=out nextperiph=NONE nextpin=NONE)
    pinfunc (key=PWM2H port=RE3 dir=out nextperiph=NONE nextpin=NONE)
    pinfunc (key=SFLT1 port=RD0 dir=out nextperiph=NONE nextpin=NONE)
    pinfunc (key=SFLT2 port=RA9 dir=out nextperiph=NONE nextpin=NONE)
    pinfunc (key=SFLT3 port=RF6 dir=out nextperiph=NONE nextpin=NONE)
    interrupt (name=PWMINT enreg=IEC1 enmask=0x0004 flgreg=IFS1 flgmask=0x0004 prireg=IPC4 primask=0x0700)
    interrupt (name=PWMGEN1INT enreg=IEC1 enmask=0x0008 flgreg=IFS1 flgmask=0x0008 prireg=IPC4 primask=0x7000)
    interrupt (name=PWMGEN2INT enreg=IEC1 enmask=0x0010 flgreg=IFS1 flgmask=0x0010 prireg=IPC5 primask=0x0007)

#--------------------------------------------------------------------------------
# 				Input Capture
#--------------------------------------------------------------------------------


#--------------------------------------------------------------------------------
# 				Output Compare
#--------------------------------------------------------------------------------

peripheral (key=OC1 sfrs='OC1RS OC1R OC1CON')
    timers (addr=0x184 mask=0x0008)	#OC1CON
        setting (val=0 key=TMR2)
        setting (val=1 key=TMR2)
    pinfunc (key=OC1 port=RD0 dir=out nextperiph=NONE nextpin=NONE)
    pinfunc (key=OCFA port=RA9 dir=in nextperiph=NONE nextpin=NONE)
    interrupt (name=OC1INT enreg=IEC0 enmask=0x0004 flgreg=IFS0 flgmask=0x0004 prireg=IPC0 primask=0x0700)

#--------------------------------------------------------------------------------
# 				SPIs
#--------------------------------------------------------------------------------

peripheral (key=SPI1)
# sfrs='SPI1STAT SPI1CON SPI1BUF')
    pinfunc (key=SCK1 port=RF6 dir=inout nextperiph=OC1_4 nextpin=OCFA)
    pinfunc (key=SDI1 port=RF7 dir=in nextperiph=I2C nextpin=SDA)
    pinfunc (key=SDO1 port=RF8 dir=out nextperiph=I2C nextpin=SCL)

#--------------------------------------------------------------------------------
# 				I2C
#--------------------------------------------------------------------------------

peripheral (key=I2C)
# sfrs='I2CRCV I2CTRN I2CBRG I2CCON I2CSTAT I2CADD')
    pinfunc (key=SCL port=RF8 dir=inout nextperiph=CAN1 nextpin=C1TX)
    pinfunc (key=SDA port=RF7 dir=inout nextperiph=CAN1 nextpin=C1RX)

#--------------------------------------------------------------------------------
# 				OSC
#--------------------------------------------------------------------------------
peripheral (key=OSC sfrs='OSCCON')
    pinfunc (key=OSC2 port=RB7 dir=out nextperiph=NONE nextpin=NONE)
    pinfunc (key=SOSC1 port=RB6 dir=out nextperiph=NONE nextpin=NONE)
    pinfunc (key=CLKO port=RB7 dir=out nextperiph=NONE nextpin=NONE)

#--------------------------------------------------------------------------------
# 				CMMUL
#--------------------------------------------------------------------------------

#
#
#                     +--------------------+
#  FLTA pin --------> | FLTCTL             |------> to PWM FLTA
#                     +--------------------+
#                        ^   ^  ... ^
#                        |   |      |
#                        |   |      +---<-- CMMULn
#                        |   +---<--- CMMUL2
#                        +---<---CMMUL
#
#
#
peripheral (key=FLTACTL)
    pinfunc (key=PWMFLTA port=RE8 dir=in nextperiph=SPI1 nextpin=SCK1)
    specialevent (key=PWM)

peripheral (key=CMMUL sfrs='CMPCON1 CMPDAC1')
    specialevent (key=FLTACTL)
    pinfunc (key=CINP port=multi dir=inout nextperiph=CMMUL2)
        portpins (muxaddr=0x4c0 muxmask=0xc0)
            setting (muxval=0x00 port=RB2 dir=in)
            setting (muxval=0x40 port=RB3 dir=in)
            setting (muxval=0x80 port=RB4 dir=in)
            setting (muxval=0xC0 port=RB5 dir=in)
    interrupt (name=CMINT enreg=IEC1 enmask=0x2000 flgreg=IFS1 flgmask=0x2000 prireg=IPC7 primask=0x0070)

peripheral (key=CMMUL2 sfrs='CMPCON2 CMPDAC2')
    specialevent (key=FLTACTL)
    pinfunc (key=CINP port=multi dir=inout nextperiph=NONE)
        portpins (muxaddr=0x4c4 muxmask=0xc0)
            setting (muxval=0x00 port=RB2 dir=in)
            setting (muxval=0x40 port=RB3 dir=in)
            setting (muxval=0x80 port=RB4 dir=in)
            setting (muxval=0xC0 port=RB5 dir=in)
    interrupt (name=CMINT enreg=IEC1 enmask=0x4000 flgreg=IFS1 flgmask=0x4000 prireg=IPC7 primask=0x0700)


#--------------------------------------------------------------------------------
# 				CORE SFRs
#--------------------------------------------------------------------------------
peripheral (key=CORE sfrs='INTCON1 INTCON2 IFS0 IFS1 IFS2 IEC0 IEC1 IEC2 IPC0 IPC1 IPC2 IPC3 IPC4 IPC5 IPC6 IPC7 IPC8 IPC9 IPC10 INTREG NVMCON NVMADR NVMADRU NVMKEY')
