Compiled OK with line...

pbpw -p16f876a sample -v

Lots of embedded comments to tell you what's happening...

Enjoy

Code:
	'	Sample.BAS
	'	==========
	'	Target Processor PIC16F876A-04
	'
	'	Write value '1234' to internal EEPROM
	'	When Button Pressed Read EEPROM value and Display on LCD
	'
	'
	'	CPU Hardware Layout
	'	-------------------
	'
	'	PortA.0 - Unused - Set to INPUT
	'	PortA.1 - Unused - Set to INPUT
	'	PortA.2 - Unused - Set to INPUT
	'	PortA.3 - Unused - Set to INPUT
	'	PortA.4 - Unused - Set to INPUT
	'	PortA.5 - Unused - Set to INPUT
	'
	'	PortB.0	- Button - Connect between this PIC Pin and Vss (0v)
	'		- uses internal PICs pull-up's
	'	PortB.1 - Unused - Set to OUTPUT
	'	PortB.2 - LCD - RS
	'	PortB.3 - LCD - E
	'	PortB.4 - LCD - DB4
	'	PortB.5 - LCD - DB5
	'	PortB.6 - LCD - DB6
	'	PortB.7 - LCD - DB7
	'
	'	PortC.0	- Unused - Set to OUTPUT
	'	PortC.1 - Unused - Set to OUTPUT
	'	PortC.2 - Unused - Set to OUTPUT
	'	PortC.3 - Unused - Set to OUTPUT
	'	PortC.4 - Unused - Set to OUTPUT
	'	PortC.5 - Unused - Set to OUTPUT
	'	PortC.6 - Unused - Set to OUTPUT
	'	PortC.7 - Unused - Set to OUTPUT

	'
	'	PIC Defines
	'	-----------
	@ DEVICE pic16F876A, XT_OSC		' System Clock Options	
	@ DEVICE pic16F876A, WDT_ON		' Watchdog Timer
	@ DEVICE pic16F876A, PWRT_ON		' Power-On Timer
	@ DEVICE pic16F876A, BOD_ON		' Brown-Out Detect
	@ DEVICE pic16F876A, LVP_OFF		' Low-Voltage Programming
	@ DEVICE pic16F876A, CPD_OFF		' Data Memory Code Protect
	@ DEVICE pic16F876A, PROTECT_OFF	' Program Code Protection
	@ DEVICE pic16F876A, WRT_OFF		' Flash Memory Word Enable

	'
	'	Hardware Defines
	'	----------------
		'
		' 	LCD Display
		'	-----------
	Define LCD_DREG PORTB			' Port for LCD Data
	Define LCD_DBIT 4			' Use upper 4 bits of Port
	Define LCD_RSREG PORTB			' Port for RegisterSelect (RS) bit
	Define LCD_RSBIT 2			' Port Pin for RS bit
	Define LCD_EREG PORTB			' Port for Enable (E) bit
	Define LCD_EBIT 3			' Port Pin for E bit
	Define LCB_BITS 4			' Using 4-bit bus
	Define LCD_LINES 2			' Using 2 line Display
	Define LCD_COMMANDUS 2000		' Command Delay (uS)
	Define LCD_DATAUS 50			' Data Delay (uS)

		'
		'	Button Inputs
		'	-------------
	ButtonPRESS var PortB.0			' Push Button 

	'
	'	EEPROM
	'	------
	MemoryA		DATA @0,0		' The TWO memory locations for saving WORD variable
	MemoryB		DATA 0			' Both Preset to Zero

	'
	'	RAM Assignments & Variables
	'	---------------------------
	WORDVariable var WORD			' Just a WORD variable we're going to use
	
	'
	'	Start Program
	'	=============

	'
	'	Set-up Hardware
	'	---------------
	TRISA=%00111111				' All available PortA is Input
						' Remember it's still in ANALOG Mode
	TRISB=%00000001				' All PortB is Output - except
							' B.0 = Button
	TRISC=%00000000				' All PortC is Output
	CMCON=%00000111				' Disable Comparators
	CVRCON=%00000000			' Disable Reference Module
	OPTION_REG.7=0				' Enable Weak Pull-Up's
	Pause 2000				' Wait for LCD to settle
	'
	'	Save Value into EEPROM
	'	-----------------------
	WORDVariable=1234
	LCDOut $FE,1,"Writing=",#WordVariable	' Tell user what we're doing...
	WRITE MemoryA,WORDVariable.HighByte	' Save one Byte from Word to EEPROM Location 0
	WRITE MemoryB,WORDVariable.LowByte	' Save other Byte from Word to EEPROM Location 1
	Pause 2000				' Just a pause so you can read what's on the LCD
	'
	'	Prompt for Button Press
	'	-----------------------
PromptLoop:
	LCDOut $FE,1,"Press Button..."
	While ButtonPRESS=1:Wend		' Wait here until Button Pressed
	READ MemoryA,WORDVariable.HighByte	' Reconstruct Word variable from EEPROM
	READ MemoryB,WORDVariable.LowByte
	LCDOut $FE,1,"Reading=",#WORDVariable	' Display Result
	While ButtonPress=0:Wend		' Wait here as long as finger is on Button
	Goto PromptLoop
	'
	End