# dsPIC30F2020PS
# DOS: DOS-00629 
# PS:  DS-None
# DS:  DS-None
# Device ID: DOS-00527

format=0.1

# device=dsPIC30F2020PS
# Variant 0

# Created by MRK on 9/1 to get some preliminary work going with the dspic30f2020

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-0x1fff)
    vectors (region=0x04-0x7f altregion=0x84-0xff)
testmem (region=0x800000-0x8005FF appregion=0x800080-0x8005BF)
emulreg (region=0xFD0000-0xFD003C)
cfgmem (region=0xf80000-0xf8000D)
# GI 8/17/04 Removed from programming spec
# userid (region=0x8005C0-0x8005FF)

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

NumBanks=0
xymem (region=0x800-0x9ff ymem=0x900-0x9ff)

devid (region=0xFF0000-0xFF0003 idmask=0xFFFF0000 id=0x00D00000)

#
# 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 #------------------------------------------------------#
                               # -------------------------------#
#Check ACCAOV....
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 rw rw rw u rw rw rw rw')
    reset (por='-0000000000-0000' mclr='-0000000000-0000')
    bit (names='- BCLIF I2CIF NVMIF ADIF U1TXIF U1RXIF SPI1IF T3IF T2IF OC2IF - T1IF OC1IF IC1IF INT0IF')
    stimulus (scl=rwb)
sfr (key=IFS1 addr=0x86 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='ACM3IF ACM2IF ACM1IF - - - - - - PWMG4IF PWMG3IF PWMG2IF PWMG1IF PWMSEIF INT2IF INT1IF')
    stimulus (scl=rwb)
sfr (key=IFS2 addr=0x88 size=2 access='u u u u u u u u u u u u u u u rw')
    reset (por='---------------0' mclr='---------------0')
    bit (names='- - - - - - - - - - - - - - - ACM4IF')
    stimulus (scl=rwb)
UnusedRegs (0x8a-0x93)
sfr (key=IEC0 addr=0x94 size=2 access='u rw rw rw rw rw rw rw rw rw rw u rw rw rw rw')
    reset (por='-0000000000-0000' mclr='-0000000000-0000')
    bit (names='- BCLIE I2CIE NVMIE ADIE U1TXIE U1RXIE SPI1IE T3IE T2IE OC2IE - T1IE OC1IE IC1IE INT0IE')
    stimulus (scl=rwb)
sfr (key=IEC1 addr=0x96 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='ACM3IE ACM2IE ACM1IE - - - - - - PWMG4IE PWMG3IE PWMG2IE PWMG1IE PWMSEIE INT2IE INT1IE')
    stimulus (scl=rwb)
sfr (key=IEC2 addr=0x98 size=2 access='u u u u u u u u u u u u u u u rw')
    reset (por='---------------0' mclr='---------------0')
    bit (names='- - - - - - - - - - - - - - - ACM4IE')
    stimulus (scl=rwb)
UnusedRegs (0x9a-0xa3)
sfr (key=IPC0 addr=0xa4 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='- T1IP - OC1IP - IC1IP - INT0IP' width='1 3 1 3 1 3 1 3')
    stimulus (scl=rwb)
sfr (key=IPC1 addr=0xa6 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='- T3IP - T2IP - OC2IP - - - -' width='1 3 1 3 1 3 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 rw rw rw u rw rw rw u rw rw rw')
    reset (por='-----100-100-100' mclr='-----uuu-uuu-uuu')
    bit (names='- - - - - PWMG4IP - PWMG3IP - PWMG2IP' width='1 1 1 1 1 3 1 3 1 3')
    stimulus (scl=rwb)
UnusedRegs (0xb0-0xb1)
sfr (key=IPC7 addr=0xb2 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='- ACM3IP - ACM2IP - ACM1IP - - - -' width='1 3 1 3 1 3 1 1 1 1')
    stimulus (scl=rwb)
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)
UnusedRegs (0xb6-0xde)
sfr (key=INTREG addr=0xe0 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 (0xe2-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)
sfr (key=TMR3HLD addr=0x108 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='TMR3HLD' width='16')
    stimulus (scl=rwb type=int)
sfr (key=TMR3 addr=0x10a 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='TMR3' width='16')
    stimulus (scl=rwb type=int)
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)
sfr (key=PR3 addr=0x10e 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='PR3' width='16')
    stimulus (scl=rwb type=int)
sfr (key=T2CON addr=0x110 size=2 access='rw u rw u u u u u u rw rw rw rw u rw u')
    reset (por='0-0------0000-0-' mclr='0-0------uuuu-u-')
    bit (names='TON - TSIDL - - - - - - TGATE TCKPS T32 - TCS -' width='1 1 1 1 1 1 1 1 1 1 2 1 1 1 1')
    stimulus (scl=rwb)
sfr (key=T3CON addr=0x112 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 (0x114-0x13f)


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

sfr (key=IC1BUF addr=0x140 size=2 access='r r r r r r r r r r r r r r r r')
    reset (por='xxxxxxxxxxxxxxxx' mclr='uuuuuuuuuuuuuuuu')
    bit (names='IC1BUF' width='16')
    stimulus (scl=rwb type=int)
sfr (key=IC1CON addr=0x142 size=2 access='u u rw u u u u u rw rw rw r r rw rw rw')
    reset (por='--0-----00000000' mclr='--0-----00000000')
    bit (names='- - ICSIDL - - - - - ICTMR ICI ICOV ICBNE ICM' width='1 1 1 1 1 1 1 1 1 2 1 1 3' scltype='b b b b b b b b b i b b i')
    stimulus (scl=rwb)
UnusedRegs (0x144-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 rw rw rw rw')
    reset (por='--0--------00000' mclr='--0--------00000')
    bit (names='- - OCSIDL - - - - - - - - OCFLT OCTSEL 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)
sfr (key=OC2RS addr=0x186 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='OC2RS' width='16')
    stimulus (scl=rwb type=int)
sfr (key=OC2R addr=0x188 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='OC2R' width='16')
    stimulus (scl=rwb type=int)
sfr (key=OC2CON addr=0x18a size=2 access='u u rw u u u u u u u u r rw rw rw rw')
    reset (por='--0--------00000' mclr='--0--------00000')
    bit (names='- - OCSIDL - - - - - - - - OCFLT OCTSEL 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 (0x18c-0x1af)
UnusedRegs (0x1b0-0x1bf)

                               # --------------#
#------------------------------# PWM Registers #--------------------------------------------------------------------------------------#
                               # --------------#
# pwm_ps_v1_dos-00484

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 u u u u')
    reset (por='1111111111110000' mclr='1111111111110000')
    bit (names='PERIOD - - - -' width='12 1 1 1 1')
    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 u u u u')
    reset (por='0000000000000000' mclr='0000000000000000')
    bit (names='SEVTCMP - - - -' width='12 1 1 1 1')
    stimulus (scl=rwb)
sfr (key=PWMCON1 addr=0x408 size=2 access='r r r rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='0000000000000000' mclr='0000000000000000')
    bit (names='FLTSTAT CLSTAT TRGSTAT FLTIEN CLIEN TRGIEN ITB MDCS DTC TRGDIV TRGMOD XPRES IUE' width='1 1 1 1 1 1 1 1 2 3 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='00000000000000-0' mclr='00000000000000-0')
    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='rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='0000000000000000' mclr='0000000000000000')
    bit (names='LEB CLSRC CLPOL CLMODE FLTSRC FLTPOL FLTMOD' width='3 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='14 1 1')
    stimulus (scl=rwb)
sfr (key=DTR1 addr=0x412 size=2 access='u u u u u rw rw rw rw rw rw rw rw rw u u')
    reset (por='-----000000000--' mclr='-----000000000--')
    bit (names='- - - - - DTR1 - -' width='1 1 1 1 1 9 1 1')
    stimulus (scl=rwb)
sfr (key=TRIG1 addr=0x414 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw u u u u')
    reset (por='000000000000----' mclr='000000000000----')
    bit (names='TRIG1 - - - -' width='12 1 1 1 1')
    stimulus (scl=rwb)
sfr (key=AUXCON1 addr=0x416 size=2 access='r r r r r r r r r r r r u rw rw rw')
    reset (por='000000000000-000' mclr='000000000000-000')
    bit (names='TRGCAP - TRGSTRT' width='12 1 3')
    stimulus (scl=rwb)
sfr (key=PWMCON2 addr=0x418 size=2 access='r r r rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='0000000000000000' mclr='0000000000000000')
    bit (names='FLTSTAT CLSTAT TRGSTAT FLTIEN CLIEN TRGIEN ITB MDCS DTC TRGDIV TRGMOD XPRES IUE' width='1 1 1 1 1 1 1 1 2 3 1 1 1')
    stimulus (scl=rwb)
sfr (key=IOCON2 addr=0x41a size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw u rw')
    reset (por='00000000000000-0' mclr='00000000000000-0')
    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=0x41c 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='LEB CLSRC CLPOL CLMODE FLTSRC FLTPOL FLTMOD' width='3 4 1 1 4 1 2')
    stimulus (scl=rwb)
sfr (key=DC2 addr=0x41e 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=PHASE2 addr=0x420 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='14 1 1')
    stimulus (scl=rwb)
sfr (key=DTR2 addr=0x422 size=2 access='u u u u u rw rw rw rw rw rw rw rw rw u u')
    reset (por='-----000000000--' mclr='-----000000000--')
    bit (names='- - - - - DTR2 - -' width='1 1 1 1 1 9 1 1')
    stimulus (scl=rwb)
sfr (key=TRIG2 addr=0x424 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw u u u u')
    reset (por='000000000000----' mclr='000000000000----')
    bit (names='TRIG1 - - - -' width='12 1 1 1 1')
    stimulus (scl=rwb)
sfr (key=AUXCON2 addr=0x426 size=2 access='r r r r r r r r r r r r u rw rw rw')
    reset (por='000000000000-000' mclr='000000000000-000')
    bit (names='TRGCAP - TRGSTRT' width='12 1 3')
    stimulus (scl=rwb)
sfr (key=PWMCON3 addr=0x428 size=2 access='r r r rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='0000000000000000' mclr='0000000000000000')
    bit (names='FLTSTAT CLSTAT TRGSTAT FLTIEN CLIEN TRGIEN ITB MDCS DTC TRGDIV TRGMOD XPRES IUE' width='1 1 1 1 1 1 1 1 2 3 1 1 1')
    stimulus (scl=rwb)
sfr (key=IOCON3 addr=0x42a size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw u rw')
    reset (por='00000000000000-0' mclr='00000000000000-0')
    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=0x42c 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='LEB CLSRC CLPOL CLMODE FLTSRC FLTPOL FLTMOD' width='3 4 1 1 4 1 2')
    stimulus (scl=rwb)
sfr (key=DC3 addr=0x42e 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=PHASE3 addr=0x430 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='14 1 1')
    stimulus (scl=rwb)
sfr (key=DTR3 addr=0x432 size=2 access='u u u u u rw rw rw rw rw rw rw rw rw u u')
    reset (por='-----000000000--' mclr='-----000000000--')
    bit (names='- - - - - DTR3 - -' width='1 1 1 1 1 9 1 1')
    stimulus (scl=rwb)
sfr (key=TRIG3 addr=0x434 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw u u u u')
    reset (por='000000000000----' mclr='000000000000----')
    bit (names='TRIG1 - - - -' width='12 1 1 1 1')
    stimulus (scl=rwb)
sfr (key=AUXCON3 addr=0x436 size=2 access='r r r r r r r r r r r r u rw rw rw')
    reset (por='000000000000-000' mclr='000000000000-000')
    bit (names='TRGCAP - TRGSTRT' width='12 1 3')
    stimulus (scl=rwb)
sfr (key=PWMCON4 addr=0x448 size=2 access='r r r rw rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='0000000000000000' mclr='0000000000000000')
    bit (names='FLTSTAT CLSTAT TRGSTAT FLTIEN CLIEN TRGIEN ITB MDCS DTC TRGDIV TRGMOD XPRES IUE' width='1 1 1 1 1 1 1 1 2 3 1 1 1')
    stimulus (scl=rwb)
sfr (key=IOCON4 addr=0x44a size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw rw rw u rw')
    reset (por='00000000000000-0' mclr='00000000000000-0')
    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=0x44c 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='LEB CLSRC CLPOL CLMODE FLTSRC FLTPOL FLTMOD' width='3 4 1 1 4 1 2')
    stimulus (scl=rwb)
sfr (key=DC4 addr=0x44e 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=PHASE4 addr=0x440 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='14 1 1')
    stimulus (scl=rwb)
sfr (key=DTR4 addr=0x442 size=2 access='u u u u u rw rw rw rw rw rw rw rw rw u u')
    reset (por='-----000000000--' mclr='-----000000000--')
    bit (names='- - - - - DTR4 - -' width='1 1 1 1 1 9 1 1')
    stimulus (scl=rwb)
sfr (key=TRIG4 addr=0x444 size=2 access='rw rw rw rw rw rw rw rw rw rw rw rw u u u u')
    reset (por='000000000000----' mclr='000000000000----')
    bit (names='TRIG1 - - - -' width='12 1 1 1 1')
    stimulus (scl=rwb)
sfr (key=AUXCON4 addr=0x446 size=2 access='r r r r r r r r r r r r u rw rw rw')
    reset (por='000000000000-000' mclr='000000000000-000')
    bit (names='TRGCAP - TRGSTRT' width='12 1 3')
    stimulus (scl=rwb)
UnusedRegs (0x448-0x4bf)


                               # ---------------#
#------------------------------# CMP  Registers #--------------------------------------------------#
                               # ---------------#

sfr (key=CMPCON1 addr=0x4c0 size=2 access='')
    reset (por='0------0000-0-00' mclr='0------0000-0-00')
    bit (names='CMPON - - - - - - CMPIEN 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='------0000000000' mclr='------0000000000')
    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)
sfr (key=CMPCON2 addr=0x4c4 size=2 access='')
    reset (por='0------0000-0-00' mclr='0------0000-0-00')
    bit (names='CMPON - - - - - - CMPIEN 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='------0000000000' mclr='------0000000000')
    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)
sfr (key=CMPCON3 addr=0x4c8 size=2 access='')
    reset (por='0------0000-0-00' mclr='0------0000-0-00')
    bit (names='CMPON - - - - - - CMPIEN 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=CMPDAC3 addr=0x4ca 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='- - - - - - 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)
sfr (key=CMPCON4 addr=0x4cc size=2 access='')
    reset (por='0------0000-0-00' mclr='0------0000-0-00')
    bit (names='CMPON - - - - - - CMPIEN 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=CMPDAC4 addr=0x4ce 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='- - - - - - 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 (0x4d0-0x6ff)
UnusedRegs (0x700-0x73f)


                               # --------------#
#------------------------------# 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 u rw rw rw rw rw rw rw rw rw rw')
    reset (por='0-010-0000000000' mclr='0-000-0000000000')
    bit (names='I2CEN - I2CSIDL SCLREL IPMIEN - 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 u r r rc rc r rc rc r r r')
    reset (por='00----0000000000' mclr='00----0000000000')
    bit (names='ACKSTAT TRSTAT - - - - GCSTAT ADD10 IWCOL I2COV D/nA P S R/nW RBF TBF')
    bit (tag=scl names='ACKSTAT TRSTAT - - - - 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)
UnusedRegs (0x20c-0x21f)

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

sfr (key=U1MODE addr=0x220 size=2 access='rw u rw rw rw rw rw rw rw rw rw u u rw rw rw')
    reset (por='0-000000000--000' mclr='0-000000000--000')
    bit (names='UARTEN - USIDL IREN RTSMD ALTIO UEN WAKE LPBACK ABAUD - - PDSEL STSEL' width='1 1 1 1 1 1 2 1 1 1 1 1 2 1')
    stimulus (scl=rwb)
sfr (key=U1STA addr=0x222 size=2 access='rw rw u u rw rw r r rw rw rw r r r rc r')
    reset (por='00--000100010000' mclr='00--000100010000')
    bit (names='UTXISEL UTXIRINV - - 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 u r')
    reset (por='0-0------0-----0' mclr='0-0------0-----0')
    bit (names='SPIEN - SPISIDL - - - - - - SPIROV - - - - - SPIBF')
    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)
UnusedRegs (0x280-0x2bf)



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

sfr (key=ADCON addr=0x300 size=2 access='rw u rw u u rw u rw rw rw u rw rw rw rw rw')
    reset (por='0-0--0-000-00000' mclr='0-0--0-000-00000')
    bit (names='ADON - ADSIDL - - GSWTRG - FORM EIE ORDER - 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 rw rw rw rw rw rw rw rw rw rw rw rw')
    reset (por='----000000000000' mclr='----000000000000')
    bit (names='- - - - PCFG' width='1 1 1 1 12')
    stimulus (scl=rwb)
UnusedRegs (0x304-0x305)
sfr (key=ADSTAT addr=0x306 size=2 access='u u u u u u u u u u rc rc rc rc rc rc')
    reset (por='----------000000' mclr='----------000000')
    bit (names='- - - - - - - - - - PxRDY' width='1 1 1 1 1 1 1 1 1 1 6')
    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 u rw r rw rw rw rw rw u rw r rw rw rw rw')
    reset (por='0-00000000000000' mclr='0-00000000000000')
    bit (names='IRQEN1 - SWTRG1 PEND1 TRGSRC1 IRQEN0 - SWTRG0 PEND0 TRGSRC0' width='1 1 1 1 4 1 1 1 1 4')
    stimulus (scl=rwb)
sfr (key=ADCPC1 addr=0x30c size=2 access='rw u rw r rw rw rw rw rw u rw r rw rw rw rw')
    reset (por='0-00000000000000' mclr='0-00000000000000')
    bit (names='IRQEN3 - SWTRG3 PEND3 TRGSRC3 IRQEN2 - SWTRG2 PEND2 TRGSRC2' width='1 1 1 1 4 1 1 1 1 4')
    stimulus (scl=rwb)
sfr (key=ADCPC2 addr=0x30e size=2 access='rw u rw r rw rw rw rw rw u rw r rw rw rw rw')
    reset (por='0-00000000000000' mclr='0-00000000000000')
    bit (names='IRQEN5 - SWTRG5 PEND5 TRGSRC5 IRQEN4 - SWTRG4 PEND4 TRGSRC4' width='1 1 1 1 4 1 1 1 1 4')
    stimulus (scl=rwb)
UnusedRegs (0x310-0x31f)

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)
sfr (key=ADCBUF8 addr=0x330 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='- - - - - - ADCBUF8' width='1 1 1 1 1 1 10')
    stimulus (scl=rb)
sfr (key=ADCBUF9 addr=0x332 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='- - - - - - ADCBUF9' width='1 1 1 1 1 1 10')
    stimulus (scl=rb)
sfr (key=ADCBUFA addr=0x334 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='- - - - - - ADCBUFA' width='1 1 1 1 1 1 10')
    stimulus (scl=rb)
sfr (key=ADCBUFB addr=0x336 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='- - - - - - ADCBUFB' width='1 1 1 1 1 1 10')
    stimulus (scl=rb)
UnusedRegs (0x338-0x3ff)

                               # ----------------#
#------------------------------# 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)

                               # --------------#
#------------------------------# SIB Registers #----------------------------------------------------------------------------#
                               # --------------#

sfr (key=RCON addr=0x740 size=2 access='rw rw u u u u u u rw rw rw rw rw rw u rw')
    reset (por='00------000000-1' mclr='uu------1uuuuu-u')
    bit (names='TRAPR IOPUWR - - - - - - EXTR SWR SWDTEN WDTO SLEEP IDLE - 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 r r r u rw rw rw rw u r u rc rw u rw')
    reset (por='-yyy-yyy0-0-00-0' mclr='-yyy--yy0-0-00-0')
    bit (names='- COSC - NOSC CLKOUT - LOCK - CF TSEQEN - OSWEN' width='1 3 1 3 1 1 1 1 1 1 1 1')
    stimulus (scl=r)
sfr (key=CLKDIV addr=0x744 size=2 access='rw rw rw rw rw u u u u u u u u u u u')
    reset (por='00000-----------' mclr='00000-----------')
    bit (names='ROI DOZE DOZEN - - - - - - - - - - -' width='1 3 1 1 1 1 1 1 1 1 1 1 1 1')
    stimulus (scl=r)
sfr (key=OSCTUN addr=0x746 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='TSEQ3 TSEQ2 TSEQ1 TUN' width='4 4 4 4')
    stimulus (scl=r)
sfr (key=OSCTUN2 addr=0x748 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='TSEQ7 TSEQ6 TSEQ5 TSEQ4' width='4 4 4 4')
    stimulus (scl=r)
UnusedRegs (0x74a-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 rw u rw rw rw rw rw rw rw')
    reset (por='000----0-0000000' mclr='000----0-0000000')
    bit (names='WR WREN WRERR - - - - TWRI - 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='u u rw rw rw u rw rw rw u rw u rw u u rw')
    reset (por='--000-000-0-0--0' mclr='--000-000-0-0--0')
    bit (names='- - T3MD T2MD T1MD - PWMMD DCIMD I2CMD - U1MD - SPI1MD - - ADCM')
    stimulus (scl=rw)
sfr (key=PMD2 addr=0x772 size=2 access='u u u u u u u rw u u u u u u rw rw')
    reset (por='-------0------00' mclr='-------0------00')
    bit (names='- - - - - - - IC1MD - - - - - - OC2MD OC1MD')
    stimulus (scl=rw)
sfr (key=PMD3 addr=0x774 size=2 access='u u u u rw u u u u u u u u u u u')
    reset (por='----0-----------' mclr='----0-----------')
    bit (names='- - - - CMP_PSMD - - - - - - - - - - -')
    stimulus (scl=rw)
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)
    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' 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)
 
#--------------------------------------------------------------------------------
# 				PORTB
#--------------------------------------------------------------------------------

peripheral (key=PORTB sfrs='TRISB LATB PORTB' type=port)
    iopin (key=RB0 dir=inout)
    iopin (key=RB1 dir=inout)
    iopin (key=RB2 dir=inout)
    iopin (key=RB3 dir=inout)
    iopin (key=RB4 dir=inout)
    iopin (key=RB5 dir=inout)
    iopin (key=RB6 dir=inout)
    iopin (key=RB7 dir=inout)

#--------------------------------------------------------------------------------
# 				PORTC
#--------------------------------------------------------------------------------


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

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

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

peripheral (key=PORTE sfrs='TRISE LATE PORTE INTCON2' 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)
    iopin (key=RE7 dir=inout)

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

peripheral (key=PORTF sfrs='TRISF LATF PORTF INTCON2' 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 TMR3 TMR3HLD PR3 T3CON')
    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)

peripheral (key=TMR3 sfrs='TMR3 TMR3HLD PR3 T3CON')
    interrupt (name=TMR3INT enreg=IEC0 enmask=0x0080 flgreg=IFS0 flgmask=0x0080 prireg=IPC1 primask=0x7000)

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

peripheral (key=ADCPS sfrs='ADCON ADPCFG1 ADSTAT ADBASE ADCPC0 ADCPC1 ADCBUF0 ADCBUF1 ADCBUF2 ADCBUF3 ADCBUF4 ADCBUF5 ADCBUF6 ADCBUF7 ADCBUF8 ADCBUF9 ADCBUFA ADCBUFB')
    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)
    interrupt (name=ADCINT enreg=IEC0 enmask=0x0800 flgreg=IFS0 flgmask=0x0800 prireg=IPC2 primask=0x7000)

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

#2020PS implements pwm_ps_v1, sim30 only supports pwm_ps_v2
#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 PWMCON3 IOCON3 FCLCON3 DC3 PHASE3 DTR3 ALTDTR3 TRIG3 TRGCON3 LEBCON3 PWMCON4 IOCON4 FCLCON4 DC4 PHASE4 DTR4 ALTDTR4 TRIG4 TRGCON4 LEBCON4')
#    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=PWM3L port=RE4 dir=out nextperiph=NONE nextpin=NONE)
#    pinfunc (key=PWM3H port=RE5 dir=out nextperiph=NONE nextpin=NONE)
#    pinfunc (key=PWM4L port=RE6 dir=out nextperiph=TMR1 nextpin=T1CK)
#    pinfunc (key=PWM4H port=RE7 dir=out nextperiph=TMR2 nextpin=T2CK)
#    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)
#    interrupt (name=PWMGEN3INT enreg=IEC1 enmask=0x0020 flgreg=IFS1 flgmask=0x0020 prireg=IPC5 primask=0x0070)
#    interrupt (name=PWMGEN4INT enreg=IEC1 enmask=0x0040 flgreg=IFS1 flgmask=0x0040 prireg=IPC5 primask=0x0700)

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

peripheral (key=IC1 sfrs='IC1CON IC1BUF')
    timers (addr=0x142 mask=0x0080)	 #IC1CON
        setting (val=0 key=TMR3)
        setting (val=1 key=TMR2)
    pinfunc (key=IC1 port=RD0 dir=in nextperiph=NONE nextpin=NONE)
    interrupt (name=IC1INT enreg=IEC0 enmask=0x0002 flgreg=IFS0 flgmask=0x0002 prireg=IPC0 primask=0x0070)

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

peripheral (key=OC1 sfrs='OC1RS OC1R OC1CON')
    timers (addr=0x184 mask=0x0008)	#OC1CON
        setting (val=0 key=TMR2)
        setting (val=1 key=TMR3)
    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)

peripheral (key=OC2 sfrs='OC2RS OC2R OC2CON')
    timers (addr=0x18a mask=0x0008)	#OC2CON
        setting (val=0 key=TMR2)
        setting (val=1 key=TMR3)
    pinfunc (key=OC2 port=RF6 dir=out nextperiph=IC2 nextpin=IC2)
    pinfunc (key=OCFA port=RA9 dir=in nextperiph=NONE nextpin=NONE)
    interrupt (name=OC2INT enreg=IEC0 enmask=0x0020 flgreg=IFS0 flgmask=0x0020 prireg=IPC1 primask=0x0070)

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

peripheral (key=SPI1)
# sfrs='SPI1STAT SPI1CON SPI1BUF')
    pinfunc (key=SCK1 port=RF6 dir=inout nextperiph=none nextpin=none)
    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=none nextpin=none)
    pinfunc (key=SDA port=RF7 dir=inout nextperiph=none nextpin=none)

#--------------------------------------------------------------------------------
# 				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)

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