I upgraded to PBP 3.1 recently and while some PIC code compiles just fine the following does not (although it compiles with PBP3 - I just switched my compiler to the old folder and it worked):

Code:
'****************************************************************
'*  Name    : Nacelle_Steady-On_Lights_12F1840_16Mhz_Int.pbp    *
'*  Author  : Ross A. Waddell                                   *
'*  Notice  : Copyright (c) 2016                                *
'*          : All Rights Reserved                               *
'*  Date    : 11/26/2016                                        *
'*  Version : 9.0                                               *
'*  Notes   : Steady-on nacelle engine lights (TOS Enterprise)  *
'*          : with PWM fade-in/brightness control               *
'****************************************************************

' For production version of this code, comment out the line below re:
' LCD debugging and also update config fuses to have code protect on
'#DEFINE USE_LCD_FOR_DEBUG     ; comment out for non-debug use

' The PWM/fade works perfectly when **not** connected to a FET
'   - if using a FET, the LEDs 'pulse' and blink but don't fade in/out
'   - use a 2N2222A transistor

' ***************************************************************
' Pin Connections
' ***************************************************************

' VDD    -> pin 1            -> +5V
' RA5/Rc -> pin 2            -> EUSART receive
' RA2    -> pin 5            -> 1kohm -> 2N2222A transistor -> LEDs
' RA1    -> pin 6            -> Trim pot input
' RA0/Tx -> pin 7            -> EUSART transmit (LCD)
' VSS    -> pin 8            -> GND

DEFINE OSC 16               ; Set oscillator 16Mhz

' ***************************************************************
' EUSART Settings for Tx/Rc (e.g. LCD)
' ***************************************************************

' > use Mister E PIC Multi-Calc application to get register/DEFINE settings
' > as the values are dependent on the OSC and desired baud rate

DEFINE HSER_RCSTA 90h      ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h      ' Enable transmit, BRGH = 1
DEFINE HSER_CLROERR 1      ' Clear overflow automatically
DEFINE HSER_SPBRG 160      ' 9600 Baud @ 16MHz, -0.08%

' ***************************************************************
' Device Fuses
' ***************************************************************
' PIC chip data sheets can be found here: C:\Program Files\Microchip\MPASM Suite

#CONFIG
   __config _CONFIG1, _FOSC_INTOSC & _WDTE_ON & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _CPD_OFF
   __config _CONFIG2, _PLLEN_OFF & _STVREN_ON & _BORV_LO & _LVP_OFF
#ENDCONFIG

' ***************************************************************
' Initialization
' ***************************************************************

OSCCON    = %01111000        ' 16MHz internal osc
pause 100                    

APFCON.2  = 0                ; Tx on RA0 for LCD display
APFCON.7  = 1                ; Rc on RA5
APFCON.0  = 0                ; CCP1 on RA2

' Some LCD serial modules need inverted data, some do not
' Enable the line below if needed, but for SparkFun SerLCD it should be
' commented out

'BAUDCON.4 = 1               ; Transmit inverted data to the Tx pin  

' From Mister E's Multi-Calc (EUSART):
' *****************************************************************
SPBRGH    = 1
BAUDCON.3 = 1               ' Enable 16 bit baudrate generator
' *****************************************************************

TRISA     = %00100010	     ' Make all pins output except for RA1 (trim pot input)
                             ' and RA5 (EUSART Rc)
ANSELA    = %00000010        ; Analog on PORTA.1 (AN1) only

FVRCON    = 0                ' Fixed Voltage Reference is disabled
ADCON0    = %00000101        ' ADC (analog-to-digital) is enabled on AN1 (RA1) only
PAUSEUS 20                   ; wait for the analog switch 'glitch' to die down
ADCON1    = %00110000        ; Left-justified results in 8-bits; Frc as timer

#IFDEF USE_LCD_FOR_DEBUG
    LCD_INST   CON 254       ' instruction
    LCD_CLR    CON 1         ' Clear screen
    LCD_L1     CON 128       ' LCD line 1
    LCD_L2     CON 192       ' LCD line 2
    LCD_SP_CMD CON 124       ' special command character (for adjusting backlight brightness or toggling splash screen)
    LCD_BR_LVL CON 140       ' 140==40%
    LCD_SPLASH CON 9         ' toggles splash screen display
#ENDIF

' ***************************************************************
' Includes
' ***************************************************************

INCLUDE "DT_INTS-14.bas"    ' Base Interrupt System
INCLUDE "ReEnterPBP.bas"    ' Include if using PBP interrupts
INCLUDE "Elapsed_INT.bas"   ' Contains subs for doing elapsed time
                            ' --> copy files to PBP main folder 
                            ' (i.e. c:\pbp3)

;-- Place a copy of these variables in your Main program -------------------
;--   The compiler will tell you which lines to un-comment                --
;--   Do Not un-comment these lines                                       --
;---------------------------------------------------------------------------
;wsave   VAR BYTE    $20     SYSTEM      ' location for W if in bank0
;wsave   VAR BYTE    $70     SYSTEM      ' alternate save location for W 
                                         ' if using $70, comment wsave1-3

' --- IF any of these three lines cause an error ?? ------------------------
'       Comment them out to fix the problem ----
' -- Which variables are needed, depends on the Chip you are using -- 
;wsave1  VAR BYTE    $A0     SYSTEM      ' location for W if in bank1
;wsave2  VAR BYTE    $120    SYSTEM      ' location for W if in bank2
;wsave3  VAR BYTE    $1A0    SYSTEM      ' location for W if in bank3
' --------------------------------------------------------------------------

ASM
INT_LIST  macro    ; IntSource,        Label,  Type, ResetFlag?
        INT_Handler   TMR1_INT,  _ClockCount,   PBP,  yes
    endm
    INT_CREATE            ; Creates the interrupt processor

    INT_ENABLE  TMR1_INT  ; Enable Timer 1 Interrupts  
ENDASM

' LED Fade Linearization
' ======================
' Increasing the duty cycle by discrete integer amounts leads to a logarithmic
' increase in brightness; the LED appears to quickly reach maximum brightness
' long before it reaches the max duty cycle value. To make the fade in look more
' linear (like an incandescent bulb), the data table below uses 'gamma correction'
 ' to genterate appropriate duty cycle values.
 
' Values generated by C:\Users\Ross\Dropbox\PBP Projects\PBP3 and MCSPX Software\LEDGammaCorrectGenerator.xlsm
' Array size = 100
' Total PWM steps: 512
' Gamma correction: 0.75 (try values in the range of 0.5 - 2.0)
' # of values per line: 15

'-----[The data table]--------------------------------------------------------
DataWord       VAR WORD
numSteps       CON 100
DataTable      CON EXT
GOTO OverData                ; Make sure data doesn't try to execute
ASM
DataTable
  DW   0,  1,  1,  2,  2,  2,  2,  2,  3,  3,  3,  3,  4,  4,  4
  DW   5,  5,  5,  6,  6,  7,  7,  8,  8,  9,  9, 10, 11, 12, 12
  DW  13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 26, 27, 29, 31
  DW  32, 34, 36, 38, 41, 43, 45, 48, 51, 54, 57, 60, 63, 66, 70
  DW  74, 78, 82, 87, 91, 96,101,107,112,118,124,131,138,145,152
  DW 160,168,177,186,196,205,216,227,238,250,263,276,289,304,319
  DW 334,351,368,386,404,424,445,466,488,511
endasm
OverData:
'-----[Continue with code]----------------------------------------------------

' ***************************************************************
' Set up PWM on CCP1
' ***************************************************************

CCP1CON = %00001100          ; Use CCP1 in PWM mode

' Set duty cycle registers initially to 0
CCP1CON.4 = 0
CCP1CON.5 = 0
CCPR1L    = 0

' Use Mister E's PICMultiCalc_1.3.1.exe application (Windows only)   
' to determine prescaler and PR2 values for given OSC frequency (e.g. 16Mhz)
' and duty cycle (use 100% to see highest actual value)

' ************************
' CCP1 uses TMR2
' ************************
                       
T2CON   = %00000110         ; Timer2 on with 1:16 prescaler
PR2     = 127               ; For 16Mhz OSC the desired output freq of 1954Hz
                            ; is achieved with this PR2 value (9-bit resolution
                            ; with 1:16 prescaler)
                            ; MAX DUTY = 512; must match max PWM steps from data
                            ; table above
                            
PWMDuty       VAR WORD      ; Duty cycle variable for PWM

MaxADCVal     CON 255       ; 255 for 8-bit; 1023 for 10-bit

ADCInVal      VAR BYTE      ; stores ADCIN result read from trim pot
compVal       VAR BYTE      ; stores last-changed ADC value

CounterA      var BYTE		' Just a BYTE Temporary working variable
DataW         var WORD		' Just a WORD Temporary working variable
RawData       var BYTE [16] ' Array holding ADC Result

LEDBrIndx     VAR WORD

i             VAR WORD
PulseLimit    VAR WORD
LEDPulse      VAR BIT       ; 1=fully on; 0= start pulsating effect

LCDPause      CON 5         ; Pause for LCD display
FadeInPause   VAR BYTE      ; Pause during LED fade in

#IFDEF USE_LCD_FOR_DEBUG
    FadeInPause = 12
#ELSE
    FadeInPause = 40 + LCDPause  ; was 15 + LCDPause
#ENDIF

' Should only need to do this one time to adjust backlight brightness
'#IFDEF USE_LCD_FOR_DEBUG
'    HSEROUT [LCD_SP_CMD, LCD_BR_LVL]
'    PAUSE LCDPause
'#ENDIF

' Should only need to do this one time to disable splash screen
'#IFDEF USE_LCD_FOR_DEBUG
'    HSEROUT [LCD_SP_CMD, LCD_SPLASH]
'    PAUSE 1000
'#ENDIF

#IFDEF USE_LCD_FOR_DEBUG
    pause 1000
    HSEROUT [LCD_INST, LCD_CLR, "LCD Init"]
    pause LCDPause
    HSEROUT [LCD_INST, LCD_L2, "  SerLCD_V2_5"]
    pause 2000
#ENDIF

' ************************************************
' Get Vref from ADC to set brightness step index
' ************************************************ 
GOSUB Do_ADC
compVal = ADCInVal          ; set initial compare value
GOSUB Map_ADCInVal_to_PWM_Steps

#IFDEF USE_LCD_FOR_DEBUG
    HSEROUT [LCD_INST, LCD_CLR]
    pause LCDPause
    HSEROUT ["LEDBrIndx=",DEC LEDBrIndx,"  "]
    pause 750
#ELSE
    PAUSE 500               ; should match motor spin up
#ENDIF

' Fade in LED to set brightness
FOR i = 0 to (LEDBrIndx  - 1)      ; max is 'numSteps' from data table above
    ReadCODE  (DataTable + i), DataWord
    PWMDuty = DataWord

    GOSUB ChngLEDBrightness 
         
    #IFDEF USE_LCD_FOR_DEBUG
        HSEROUT [LCD_INST, LCD_CLR]
        pause LCDPause
        HSEROUT ["PWMDuty=",DEC PWMDuty,"  "]
    #ENDIF
   
    pause FadeInPause       ; should match motor spin up
NEXT i

LEDPulse = 1               ' set initial value
Gosub ResetTime            ' Reset Time to  0d-00:00:00.00
Gosub StartTimer           ' Start the Elapsed Timer


'    PulseLimit = 95*(LEDBrIndx/100) ' 95%
'    PulseLimit = 9*(LEDBrIndx/10) ' 90%
'    PulseLimit = 4*(LEDBrIndx/5) ' 80%
    PulseLimit = 3*(LEDBrIndx/4) ' 75%
'    PulseLimit = 6*(LEDBrIndx/10) ' 60%
'    PulseLimit = LEDBrIndx/2     ' 50%
'    PulseLimit = LEDBrIndx/4     ' 25%

Main:
'   Check trim pot value
    GOSUB Do_ADC
'    PAUSE 100

'   If trim pot value has changed, update LED brightness level
    If (compVal > (ADCInVal + 1)) or (compVal < (ADCInVal - 1)) THEn
        compVal = ADCInVal
        GOSUB Map_ADCInVal_to_PWM_Steps

        ReadCODE  (DataTable + (LEDBrIndx - 1)), DataWord
        PWMDuty = DataWord

        gosub ChngLEDBrightness

        #IFDEF USE_LCD_FOR_DEBUG
            HSEROUT [LCD_INST, LCD_CLR]
            pause LCDPause
            HSEROUT ["new LEDBrIndx", LCD_INST, LCD_L2, DEC LEDBrIndx, "  "]
        #ENDIF

        Gosub ResetTime           ' Reset Time to  0d-00:00:00.00
    ENDIF

'   Pulse LEDs
    if (Seconds = 1) AND (LEDPulse = 1) then  
    '   Fade down LEDs to a preset minimum    
        FOR i = (LEDBrIndx - 1) to PulseLimit STEP -1
            ReadCODE  (DataTable + i), DataWord
            PWMDuty = DataWord
        
            GOSUB ChngLEDBrightness 
                 
            #IFDEF USE_LCD_FOR_DEBUG
                HSEROUT [LCD_INST, LCD_CLR]
                pause LCDPause
                HSEROUT ["PWMDuty=",DEC PWMDuty,"  "]
            #ENDIF
           
            'pause 15
            pause 12
        NEXT i

        LEDPulse = 0
        Gosub ResetTime           ' Reset Time to  0d-00:00:00.00
    ELSEIF (Ticks = 20) and (LEDPulse = 0) THEN
    '   Fade up LEDs back to trim pot setting    
        FOR i = PulseLimit to (LEDBrIndx  - 1)
            ReadCODE  (DataTable + i), DataWord
            PWMDuty = DataWord
        
            GOSUB ChngLEDBrightness 
                 
            #IFDEF USE_LCD_FOR_DEBUG
                HSEROUT [LCD_INST, LCD_CLR]
                pause LCDPause
                HSEROUT ["PWMDuty=",DEC PWMDuty,"  "]
            #ENDIF
           
            'pause 15
            pause 12
        NEXT i 

        LEDPulse = 1
        Gosub ResetTime           ' Reset Time to  0d-00:00:00.00
    endif    

GOTO Main

Do_ADC:
'   Function to 'average out' changing ADC values when the trim pot swiper arm
'   isn't moving to get a steady value

'	Stuff 16 Element WORD Array full of ADC values
'	----------------------------------------------
	For CounterA = 0 to (16 - 1)
        ADCON0    = %00000101 ' Select Channel, Turn-On A/D
						      '	7=0 Unused
						      '	6=0 Unused
						      '	5=0 )
						      '	4=0 )
						      '	3=0 ) selects AN1
						      '	2=0 )
						      '	1=0 Go-done Bit
						      '	0=1 switch-On ADC Module
		Pauseus 50			     ' Wait for channel to setup
        ADCON0.1 = 1			 ' Start conversion
		While ADCON0.1=1:Wend	 ' Wait for conversion
'		DataW.HighByte=ADRESH	 
'		DataW.LowByte=ADRESL
        DataW = ADRESH           ' Read variable from ADC and save
		RawData(CounterA) = DataW

	Next CounterA

'	Sort ADC Input
'	--------------
	CounterA = 0
 
 GetADCSortLoop:

	If RawData(CounterA + 1) < RawData(CounterA) then
		DataW = RawData(CounterA)
		RawData(CounterA) = RawData(CounterA+1)
		RawData(CounterA+1) = DataW
		If CounterA > 0 then CounterA = CounterA - 2
	endif
	CounterA=CounterA+1
	If CounterA < (16 - 1) then goto GetADCSortLoop

'	Quanticise, discarding top and bottom FOUR elements
'	----------------------------------------------------
	DataW = 0
	For CounterA = 4 to 11
		DataW = DataW+RawData(CounterA)
	Next CounterA
	
    ADCInVal = DataW>>3			' Divide Result by EIGHT

return

'*********** Map Vref to PWM step **************************************
Map_ADCInVal_to_PWM_Steps:
'   Map ADC value to the range of accetable PWM steps, as the two ranges may
'   not be the same( e.g. ADC: 0-255, PWM: 50-100)

'   Arduino Map function to emulate:
'   ===============================
'   map(value, fromLow, fromHigh, toLow, toHigh)

'   long map(long x, long in_min, long in_max, long out_min, long out_max)
'   {
'     return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
'   }

'   Need to split up the operations to get full value using DIV32
'   50% PWM step range
    'LEDBrIndx = ((compVal - 0) * (numSteps - numSteps/2))
    'LEDBrIndx = DIV32 (MaxADCVal - 0) + numSteps/2

'   90% PWM step range
    LEDBrIndx = ((compVal - 0) * (numSteps - numSteps/10))
    LEDBrIndx = DIV32 (MaxADCVal - 0) + numSteps/10

RETURN

'*********** Set duty registers ****************************************
ChngLEDBrightness:
    CCP1CON.4 = PWMDuty.0
    CCP1CON.5 = PWMDuty.1
    CCPR1L    = PWMDuty >> 2
    
RETURN
I get this error:

Code:
[ERROR] nacelle_steady-on_lights_12F1840_16Mhz_int_v9.pbp (74) : Syntax error
I have copied the 3 INCLUDES to C:\Program Files (x86)\PBP3.1 and made sure MicroCode Studio Plus is set to use the MPASMX assembler. Why won't this work now with PBP 3.1?