
format=0.1

#device=PIC17C766

vpp (range=12.750-13.750  dflt=13.000)
vdd (range=3.000-5.500  dfltrange=4.500-5.500  nominal=5.000)

pgming (memtech=eprom ovrpgm=3 tries=25)
    wait (pgm=100 cfg=100) 

pgmmem (region=0x0-0x3FFF)
extpgmmem (region=0x4000-0xFFFF modeaddr=0xFE00)
cfgmem (region=0xFE00-0xFE00)
testmem (region=0xFE10-0xFFDF)


NumBanks=9
UnusedRegs (0x412-0x412)
UnusedRegs (0x615-0x617)
UnusedRegs (0x717-0x717)
UnusedRegs (0x814-0x817)
UnusedRegs (0x100-0x10f)
UnusedRegs (0x118-0x11f)
UnusedRegs (0x200-0x20f)
UnusedRegs (0x218-0x21f)
UnusedRegs (0x300-0x30f)
UnusedRegs (0x318-0x31f)
UnusedRegs (0x400-0x40f)
UnusedRegs (0x418-0x4ff)
UnusedRegs (0x500-0x50f)
UnusedRegs (0x518-0x5ff)
UnusedRegs (0x600-0x60f)
UnusedRegs (0x618-0x6ff)
UnusedRegs (0x700-0x70f)
UnusedRegs (0x718-0x7ff)
UnusedRegs (0x800-0x80f)
UnusedRegs (0x818-0x8ff)


sfr (key=INDF0 addr=0x0 size=1 flags=i access='u u u u u u u u')
    reset (por='--------' mclr='--------')
    bit (names='INDF0' width='8')
sfr (key=FSR0 addr=0x1 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='FSR0' width='8')
sfr (key=PCL addr=0x2 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='00000000' mclr='00000000')
    bit (names='PCL' width='8')
sfr (key=PCLATH addr=0x3 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='00000000' mclr='uuuuuuuu')
    bit (names='PCLATH' width='8')
sfr (key=ALUSTA addr=0x4 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='1111xxxx' mclr='1111uuuu')
    bit (names='FSR1 FSR0 OV Z DC C' width='2 2 1 1 1 1')
sfr (key=T0STA addr=0x5 size=1 access='rw rw rw rw rw rw rw u')
    reset (por='0000000-' mclr='0000000-')
    bit (names='INTEDG T0SE T0CS T0PS -' width='1 1 1 4 1')
sfr (key=CPUSTA addr=0x6 size=1 access='u u r rw r r rw rw')
    reset (por='--1111qq' mclr='--11qquu')
    bit (names='- - STKAV GLINTD nTO nPD nPOR nBOR')
sfr (key=INTSTA addr=0x7 size=1 access='r rw rw rw rw rw rw rw')
    reset (por='00000000' mclr='00000000')
    bit (names='PEIF T0CKIF T0IF INTF PEIE T0CKIE T0IE INTE')
sfr (key=INDF1 addr=0x8 size=1 flags=i access='u u u u u u u u')
    reset (por='--------' mclr='--------')
    bit (names='INDF1' width='8')
sfr (key=FSR1 addr=0x9 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='FSR1' width='8')
sfr (key=WREG addr=0xA size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='WREG' width='8')
sfr (key=TMR0 addr=0xB size=2 flags=j)
# The j flag means all these registers together form one larger register
sfr (key=TMR0L addr=0xB size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='TMR0L' width='8')
sfr (key=TMR0H addr=0xC size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='TMR0H' width='8')
sfr (key=TBLPTR addr=0xD size=2 flags=j)
# The j flag means all these registers together form one larger register
sfr (key=TBLPTRL addr=0xD size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='00000000' mclr='00000000')
    bit (names='TBLPTRL' width='8')
sfr (key=TBLPTRH addr=0xE size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='00000000' mclr='00000000')
    bit (names='TBLPTRH' width='8')
sfr (key=BSR addr=0xF size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='00000000' mclr='00000000')
    bit (names='BSR' width='8')
sfr (key=PORTA addr=0x10 size=1 access='rw u r r rw rw r r')
    reset (por='0-xx11xx' mclr='0-uu11uu')
    bit (names='nRBPU - RA5 RA4 RA3 RA2 RA1 RA0')
sfr (key=DDRB addr=0x11 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='11111111' mclr='11111111')
    bit (names='DDRB7 DDRB6 DDRB5 DDRB4 DDRB3 DDRB2 DDRB1 DDRB0')
sfr (key=PORTB addr=0x12 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0')
sfr (key=RCSTA1 addr=0x13 size=1 access='rw rw rw rw u r r r')
    reset (por='0000-00x' mclr='0000-00u')
    bit (names='SPEN RX9 SREN CREN - FERR OERR RX9D')
sfr (key=RCREG1 addr=0x14 size=1 access='r r r r r r r r')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='RCREG1' width='8')
sfr (key=TXSTA1 addr=0x15 size=1 access='rw rw rw rw u u r rw')
    reset (por='0000--1x' mclr='0000--1u')
    bit (names='CSRC TX9 TXEN SYNC - - TRMT TX9D')
sfr (key=TXREG1 addr=0x16 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='TXREG1' width='8')
sfr (key=SPBRG1 addr=0x17 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='00000000' mclr='00000000')
    bit (names='SPBRG1' width='8')

sfr (key=DDRC addr=0x110 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='11111111' mclr='11111111')
    bit (names='DDRC7 DDRC6 DDRC5 DDRC4 DDRC3 DDRC2 DDRC1 DDRC0')
sfr (key=PORTC addr=0x111 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0')
sfr (key=DDRD addr=0x112 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='11111111' mclr='11111111')
    bit (names='DDRD7 DDRD6 DDRD5 DDRD4 DDRD3 DDRD2 DDRD1 DDRD0')
sfr (key=PORTD addr=0x113 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0')
sfr (key=DDRE addr=0x114 size=1 access='u u u u rw rw rw rw')
    reset (por='----1111' mclr='----1111')
    bit (names='- - - - DDRE3 DDRE2 DDRE1 DDRE0')
sfr (key=PORTE addr=0x115 size=1 access='u u u u rw rw rw rw')
    reset (por='----xxxx' mclr='----uuuu')
    bit (names='- - - - RE3 RE2 RE1 RE0')
sfr (key=PIR1 addr=0x116 size=1 access='rw rw rw rw rw rw r r')
    reset (por='x0000010' mclr='u0000010')
    bit (names='RBIF TMR3IF TMR2IF TMR1IF CA2IF CA1IF TX1IF RC1IF')
sfr (key=PIE1 addr=0x117 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='00000000' mclr='00000000')
    bit (names='RBIE TMR3IE TMR2IE TMR1IE CA2IE CA1IE TX1IE RC1IE')

sfr (key=TMR1 addr=0x210 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='TMR1' width='8')
sfr (key=TMR2 addr=0x211 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='TMR2' width='8')
sfr (key=TMR3 addr=0x212 size=2 flags=j)
# The j flag means all these registers together form one larger register
sfr (key=TMR3L addr=0x212 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='TMR3L' width='8')
sfr (key=TMR3H addr=0x213 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='TMR3H' width='8')
sfr (key=PR1 addr=0x214 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='PR1' width='8')
sfr (key=PR2 addr=0x215 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='PR2' width='8')
sfr (key=PR3 addr=0x216 size=2 flags=j)
# The j flag means all these registers together form one larger register
sfr (key=PR3L addr=0x216 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='PR3L' width='8')
sfr (key=PR3H addr=0x217 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='PR3H' width='8')

sfr (key=CA1 addr=0x216 size=2 flags=j)
# The j flag means all these registers together form one larger register
sfr (key=CA1L addr=0x216 size=1 access='r r r r r r r r')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='CA1L' width='8')
sfr (key=CA1H addr=0x217 size=1 access='r r r r r r r r')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='CA1H' width='8')

sfr (key=PW1DCL addr=0x310 size=1 access='rw rw u u u u u u')
    reset (por='xx------' mclr='uu------')
    bit (names='DC1 DC0 - - - - - -')
sfr (key=PW2DCL addr=0x311 size=1 access='rw rw rw u u u u u')
    reset (por='xx0-----' mclr='uu0-----')
    bit (names='DC1 DC0 TM2PW2 - - - - -')
sfr (key=PW1DCH addr=0x312 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='DC9 DC8 DC7 DC6 DC5 DC4 DC3 DC2')
sfr (key=PW2DCH addr=0x313 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='DC9 DC8 DC7 DC6 DC5 DC4 DC3 DC2')
sfr (key=CA2 addr=0x314 size=2 flags=j)
# The j flag means all these registers together form one larger register
sfr (key=CA2L addr=0x314 size=1 access='r r r r r r r r')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='CA2L' width='8')
sfr (key=CA2H addr=0x315 size=1 access='r r r r r r r r')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='CA2H' width='8')
sfr (key=TCON1 addr=0x316 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='00000000' mclr='00000000')
    bit (names='CA2ED CA1ED T16 TMR3CS TMR2CS TMR1CS' width='2 2 1 1 1 1')
sfr (key=TCON2 addr=0x317 size=1 access='r r rw rw rw rw rw rw')
    reset (por='00000000' mclr='00000000')
    bit (names='CA2OVF CA1OVF PWM2ON PWM1ON CA1/nPR3 TMR3ON TMR2ON TMR1ON')

sfr (key=PIR2 addr=0x410 size=1 access='rw rw rw u rw rw r r')
    reset (por='000-0010' mclr='000-0010')
    bit (names='SSPIF BCLIF ADIF - CA4IF CA3IF TX2IF RC2IF')
sfr (key=PIE2 addr=0x411 size=1 access='rw rw rw u rw rw rw rw')
    reset (por='000-0000' mclr='000-0000')
    bit (names='SSPIE BCLIE ADIE - CA4IE CA3IE TX2IE RC2IE')
sfr (key=RCSTA2 addr=0x413 size=1 access='rw rw rw rw u r r r')
    reset (por='0000-00x' mclr='0000-00u')
    bit (names='SPEN RX9 SREN CREN - FERR OERR RX9D')
sfr (key=RCREG2 addr=0x414 size=1 access='r r r r r r r r')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='RCREG2' width='8')
sfr (key=TXSTA2 addr=0x415 size=1 access='rw rw rw rw u u r rw')
    reset (por='0000--1x' mclr='0000--1u')
    bit (names='CSRC TX9 TXEN SYNC - - TRMT TX9D')
sfr (key=TXREG2 addr=0x416 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='TXREG2' width='8')
sfr (key=SPBRG2 addr=0x417 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='00000000' mclr='00000000')
    bit (names='SPBRG2' width='8')

sfr (key=DDRF addr=0x510 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='11111111' mclr='11111111')
    bit (names='DDRF7 DDRF6 DDRF5 DDRF4 DDRF3 DDRF2 DDRF1 DDRF0')
sfr (key=PORTF addr=0x511 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='00000000' mclr='00000000')
    bit (names='RF7 RF6 RF5 RF4 RF3 RF2 RF1 RF0')
sfr (key=DDRG addr=0x512 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='11111111' mclr='11111111')
    bit (names='DDRG7 DDRG6 DDRG5 DDRG4 DDRG3 DDRG2 DDRG1 DDRG0')
sfr (key=PORTG addr=0x513 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='xxxx0000' mclr='uuuu0000')
    bit (names='RG7 RG6 RG5 RG4 RG3 RG2 RG1 RG0')
sfr (key=ADCON0 addr=0x514 size=1 access='rw rw rw rw u rw u rw')
    reset (por='0000-0-0' mclr='0000-0-0')
    bit (names='CHS - GO/nDONE - ADON' width='4 1 1 1 1')
sfr (key=ADCON1 addr=0x515 size=1 access='rw rw rw u rw rw rw rw')
    reset (por='000-0000' mclr='000-0000')
    bit (names='ADCS ADFM - PCFG' width='2 1 1 4')
sfr (key=ADRES addr=0x516 size=2 flags=j)
# The j flag means all these registers together form one larger register
sfr (key=ADRESL addr=0x516 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='ADRESL' width='8')
sfr (key=ADRESH addr=0x517 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='ADRESH' width='8')

sfr (key=SSPADD addr=0x610 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='00000000' mclr='00000000')
    bit (names='SSPADD' width='8')
sfr (key=SSPCON1 addr=0x611 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='00000000' mclr='00000000')
    bit (names='WCOL SSPOV SSPEN CKP SSPM' width='1 1 1 1 4')
sfr (key=SSPCON2 addr=0x612 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='00000000' mclr='00000000')
    bit (names='GCEN AKSTAT AKDT AKEN RCEN PEN RSEN SEN')
# Bits are rw so they can be simulated
# sfr (key=SSPSTAT addr=0x613 size=1 access='rw rw r r r r r r')
sfr (key=SSPSTAT addr=0x613 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='00000000' mclr='00000000')
    bit (names='SMP CKE D/nA P S R/nW UA BF')
sfr (key=SSPBUF addr=0x614 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='SSPBUF' width='8')

sfr (key=PW3DC addr=0x710 size=2 flags=j)
# The j flag means all these registers together form one larger register
sfr (key=PW3DCL addr=0x710 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='xx0-----' mclr='uu0-----')
    bit (names='DC1 DC0 TM2PW3 - - - - -')
sfr (key=PW3DCH addr=0x711 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='DC9 DC8 DC7 DC6 DC5 DC4 DC3 DC2')
sfr (key=CA3 addr=0x712 size=2 flags=j)
# The j flag means all these registers together form one larger register
sfr (key=CA3L addr=0x712 size=1 access='r r r r r r r r')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='CA3L' width='8')
sfr (key=CA3H addr=0x713 size=1 access='r r r r r r r r')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='CA3H' width='8')
sfr (key=CA4 addr=0x714 size=2 flags=j)
# The j flag means all these registers together form one larger register
sfr (key=CA4L addr=0x714 size=1 access='r r r r r r r r')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='CA4L' width='8')
sfr (key=CA4H addr=0x715 size=1 access='r r r r r r r r')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='CA4H' width='8')
sfr (key=TCON3 addr=0x716 size=1 access='u r r rw rw rw rw rw')
    reset (por='-0000000' mclr='-0000000')
    bit (names='- CA4OVF CA3OVF CA4ED1 CA4ED0 CA3ED1 CA3ED0 PWM3ON')

sfr (key=DDRH addr=0x810 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='11111111' mclr='11111111')
    bit (names='DDRH7 DDRH6 DDRH5 DDRH4 DDRH3 DDRH2 DDRH1 DDRH0')
sfr (key=PORTH addr=0x811 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='RH7 RH6 RH5 RH4 RH3 RH2 RH1 RH0')
sfr (key=DDRJ addr=0x812 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='11111111' mclr='11111111')
    bit (names='DDRJ7 DDRJ6 DDRJ5 DDRJ4 DDRJ3 DDRJ2 DDRJ1 DDRJ0')
sfr (key=PORTJ addr=0x813 size=1 access='rw rw rw rw rw rw rw rw')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='RJ7 RJ6 RJ5 RJ4 RJ3 RJ2 RJ1 RJ0')

sfr (key=PROD addr=0x18 size=2 flags=j)
# The j flag means all these registers together form one larger register
sfr (key=PRODL addr=0x18 size=1 access='r r r r r r r r')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='PRODL' width='8')
sfr (key=PRODH addr=0x19 size=1 access='r r r r r r r r')
    reset (por='xxxxxxxx' mclr='uuuuuuuu')
    bit (names='PRODH' width='8')
 
                               # -------------------#
#------------------------------# Configuration Bits #------------------------------------#
                               # -------------------#

cfgbits (key=CONFIG addr=0xFE00 unused=0x3FA0)
    field (key=OSC mask=0x3 desc="Oscillator")
        setting (req=0x3 value=0x3 desc="EC")
        setting (req=0x3 value=0x0 desc="LF")
        setting (req=0x3 value=0x1 desc="RC")
        setting (req=0x3 value=0x2 desc="XT")
# NOTE: The watch dog timer values 64/256 have been replaced by
#       the correct values 128/512. The data sheet as of today 1/2003
#       is incorrect.
    field (key=WDT mask=0xC desc="Watchdog Timer")
        setting (req=0xC value=0xC desc="x1")
        setting (req=0xC value=0x8 desc="x512")
        setting (req=0xC value=0x4 desc="x128")
        setting (req=0xC value=0x0 desc="TMR")
    field (key=PMODE mask=0x8050 desc="Processor Mode")
        setting (req=0x8050 value=0x8050 desc="Microprocessor" mode=microproc region=0x0-0xFFFF nocfgtest)
            checksum (type=0x0 protregion=0x00-0x00)
        setting (req=0x8050 value=0x0 desc="Prot. Microcontroller" mode=cpmicroctrl)
            checksum (type=0x3 protregion=0x0-0x3FFF)
        setting (req=0x8050 value=0x8040 desc="Microcontroller" mode=microctrl)
            checksum (type=0x0 protregion=0x00-0x00)
        setting (req=0x8050 value=0x8010 desc="Ext. Microcontroller" mode=extmicroctrl region=0x4000-0xFFFF nocfgtest)
            checksum (type=0x0 protregion=0x00-0x00)
    field (key=BODEN mask=0x4000 desc="Brown Out Detect")
        setting (req=0x4000 value=0x4000 desc="On")
        setting (req=0x4000 value=0x0 desc="Off")
