;--------------------------------------------------------
; File Created by SDCC : free open source ANSI-C Compiler
; Version 2.8.3 #5235 (Sep 15 2008) (UNIX)
; This file was generated Mon Sep 15 21:38:48 2008
;--------------------------------------------------------
; PIC16 port for the Microchip 16-bit core micros
;--------------------------------------------------------

	.ident "SDCC version 2.8.3 #5235 [pic16 port]"
	.file	"testLcd.c"
	list	p=18f2520

	radix dec

;--------------------------------------------------------
; public variables in this module
;--------------------------------------------------------
	global _stack
	global _stack_end
	global _timerHigh
	global _delayMs
	global _i2cReset
	global _i2cInit
	global _i2cWaitForIdle1
	global _i2cWaitForIdle
	global _i2cStart
	global _i2cRepStart
	global _i2cStop
	global _i2cPutByte
	global _i2cGetByte
	global _i2cWrite
	global _i2cRead
	global _lcdInit
	global _lcdPutChar
	global _lcdWriteStr
	global _lcdPutHexByte
	global _strByte
	global _strWordDec
	global _usartInit
	global _usartRxRdy
	global _usartGetc
	global _usartPutc
	global _usartPuts
	global _usartWrite
	global _eepromRead8
	global _eepromWrite8
	global _eepromRead16
	global _eepromWrite16
	global _eepromRead32
	global _eepromWrite32
	global _timerInit
	global _timerClear
	global _timerTick
	global _timerGetMicroSec
	global _timerGetMilliSec
	global _timerGetSec
	global _adcInit
	global _adcRead
	global _main

;--------------------------------------------------------
; extern variables in this module
;--------------------------------------------------------
	extern __gptrget1
	extern __gptrput1
	extern __divuchar
	extern __moduchar
	extern _PORTAbits
	extern _PORTBbits
	extern _PORTCbits
	extern _PORTDbits
	extern _PORTEbits
	extern _LATAbits
	extern _LATBbits
	extern _LATCbits
	extern _LATDbits
	extern _LATEbits
	extern _DDRAbits
	extern _TRISAbits
	extern _DDRBbits
	extern _TRISBbits
	extern _DDRCbits
	extern _TRISCbits
	extern _DDRDbits
	extern _TRISDbits
	extern _DDREbits
	extern _TRISEbits
	extern _OSCTUNEbits
	extern _PIE1bits
	extern _PIR1bits
	extern _IPR1bits
	extern _PIE2bits
	extern _PIR2bits
	extern _IPR2bits
	extern _EECON1bits
	extern _RCSTAbits
	extern _TXSTAbits
	extern _T3CONbits
	extern _CMCONbits
	extern _CVRCONbits
	extern _ECCP1ASbits
	extern _PWM1CONbits
	extern _BAUDCONbits
	extern _BAUDCTLbits
	extern _CCP2CONbits
	extern _CCP1CONbits
	extern _ADCON2bits
	extern _ADCON1bits
	extern _ADCON0bits
	extern _SSPCON2bits
	extern _SSPCON1bits
	extern _SSPSTATbits
	extern _T2CONbits
	extern _T1CONbits
	extern _RCONbits
	extern _WDTCONbits
	extern _HLVDCONbits
	extern _LVDCONbits
	extern _OSCCONbits
	extern _T0CONbits
	extern _STATUSbits
	extern _INTCON3bits
	extern _INTCON2bits
	extern _INTCONbits
	extern _STKPTRbits
	extern _PORTA
	extern _PORTB
	extern _PORTC
	extern _PORTD
	extern _PORTE
	extern _LATA
	extern _LATB
	extern _LATC
	extern _LATD
	extern _LATE
	extern _DDRA
	extern _TRISA
	extern _DDRB
	extern _TRISB
	extern _DDRC
	extern _TRISC
	extern _DDRD
	extern _TRISD
	extern _DDRE
	extern _TRISE
	extern _OSCTUNE
	extern _PIE1
	extern _PIR1
	extern _IPR1
	extern _PIE2
	extern _PIR2
	extern _IPR2
	extern _EECON1
	extern _EECON2
	extern _EEDATA
	extern _EEADR
	extern _RCSTA
	extern _TXSTA
	extern _TXREG
	extern _RCREG
	extern _SPBRG
	extern _SPBRGH
	extern _T3CON
	extern _TMR3L
	extern _TMR3H
	extern _CMCON
	extern _CVRCON
	extern _ECCP1AS
	extern _PWM1CON
	extern _BAUDCON
	extern _BAUDCTL
	extern _CCP2CON
	extern _CCPR2
	extern _CCPR2L
	extern _CCPR2H
	extern _CCP1CON
	extern _CCPR1
	extern _CCPR1L
	extern _CCPR1H
	extern _ADCON2
	extern _ADCON1
	extern _ADCON0
	extern _ADRES
	extern _ADRESL
	extern _ADRESH
	extern _SSPCON2
	extern _SSPCON1
	extern _SSPSTAT
	extern _SSPADD
	extern _SSPBUF
	extern _T2CON
	extern _PR2
	extern _TMR2
	extern _T1CON
	extern _TMR1L
	extern _TMR1H
	extern _RCON
	extern _WDTCON
	extern _HLVDCON
	extern _LVDCON
	extern _OSCCON
	extern _T0CON
	extern _TMR0L
	extern _TMR0H
	extern _STATUS
	extern _FSR2L
	extern _FSR2H
	extern _PLUSW2
	extern _PREINC2
	extern _POSTDEC2
	extern _POSTINC2
	extern _INDF2
	extern _BSR
	extern _FSR1L
	extern _FSR1H
	extern _PLUSW1
	extern _PREINC1
	extern _POSTDEC1
	extern _POSTINC1
	extern _INDF1
	extern _WREG
	extern _FSR0L
	extern _FSR0H
	extern _PLUSW0
	extern _PREINC0
	extern _POSTDEC0
	extern _POSTINC0
	extern _INDF0
	extern _INTCON3
	extern _INTCON2
	extern _INTCON
	extern _PROD
	extern _PRODL
	extern _PRODH
	extern _TABLAT
	extern _TBLPTR
	extern _TBLPTRL
	extern _TBLPTRH
	extern _TBLPTRU
	extern _PC
	extern _PCL
	extern _PCLATH
	extern _PCLATU
	extern _STKPTR
	extern _TOS
	extern _TOSL
	extern _TOSH
	extern _TOSU
	extern __divuint
	extern __moduint
	extern __divulong
;--------------------------------------------------------
;	Equates to used internal registers
;--------------------------------------------------------
STATUS	equ	0xfd8
WREG	equ	0xfe8
FSR0L	equ	0xfe9
FSR1L	equ	0xfe1
FSR2L	equ	0xfd9
POSTDEC1	equ	0xfe5
PREINC1	equ	0xfe4
PLUSW2	equ	0xfdb
PRODL	equ	0xff3
PRODH	equ	0xff4


; Internal registers
.registers	udata_ovr	0x0000
r0x00	res	1
r0x01	res	1
r0x02	res	1
r0x03	res	1
r0x04	res	1
r0x05	res	1
r0x06	res	1
r0x07	res	1
r0x08	res	1
r0x09	res	1
r0x0a	res	1
r0x0b	res	1

udata_testLcd_0	udata
_lcdInit_dat_1_1	res	3

udata_testLcd_1	udata
_lcdPutChar_dat_1_1	res	2

udata_testLcd_2	udata
_lcdPutHexByte_dat_1_1	res	3

udata_testLcd_3	udata
_timerHigh	res	2

udata_testLcd_4	udata
_main_d1_1_1	res	4


ustat_testLcd_00	udata	0X0200
_stack	res	255
_stack_end	res	1

;--------------------------------------------------------
; interrupt vector 
;--------------------------------------------------------

;--------------------------------------------------------
; global & static initialisations
;--------------------------------------------------------
; I code from now on!
; ; Starting pCode block
S_testLcd__main	code
_main:
	.line	18; testLcd.c	UInt8	d1[] = { 0x11, 0x22, 0x33, 0x44 };
	MOVLW	0x11
	BANKSEL	_main_d1_1_1
	MOVWF	_main_d1_1_1, B
	MOVLW	0x22
	BANKSEL	(_main_d1_1_1 + 1)
	MOVWF	(_main_d1_1_1 + 1), B
	MOVLW	0x33
	BANKSEL	(_main_d1_1_1 + 2)
	MOVWF	(_main_d1_1_1 + 2), B
	MOVLW	0x44
	BANKSEL	(_main_d1_1_1 + 3)
	MOVWF	(_main_d1_1_1 + 3), B
	.line	21; testLcd.c	OSCCON = 0x62;				// Internal 4MHZ
	MOVLW	0x62
	MOVWF	_OSCCON
	.line	22; testLcd.c	TRISB = 0x0F;           		// PORTB top 4 bits Output
	MOVLW	0x0f
	MOVWF	_TRISB
	.line	24; testLcd.c	PORTB = 0;
	CLRF	_PORTB
	.line	26; testLcd.c	PORTBbits.RB7 = 1;
	BSF	_PORTBbits, 7
	.line	28; testLcd.c	i2cInit();
	CALL	_i2cInit
	.line	29; testLcd.c	lcdInit();
	CALL	_lcdInit
	.line	31; testLcd.c	lcdWriteStr(2,1, "Testing");
	MOVLW	UPPER(__str_0)
	MOVWF	POSTDEC1
	MOVLW	HIGH(__str_0)
	MOVWF	POSTDEC1
	MOVLW	LOW(__str_0)
	MOVWF	POSTDEC1
	MOVLW	0x01
	MOVWF	POSTDEC1
	MOVLW	0x02
	MOVWF	POSTDEC1
	CALL	_lcdWriteStr
	MOVLW	0x05
	ADDWF	FSR1L, F
_00460_DS_:
	.line	33; testLcd.c	while(1){
	BRA	_00460_DS_
	RETURN	

; ; Starting pCode block
S_testLcd__adcRead	code
_adcRead:
	.line	660; /data/src/greenpower/carComputer/softwareC/picLib3.c	UInt16 adcRead(UInt8 channel){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	MOVFF	r0x00, POSTDEC1
	MOVFF	r0x01, POSTDEC1
	MOVFF	r0x02, POSTDEC1
	MOVFF	r0x03, POSTDEC1
	MOVLW	0x02
	MOVFF	PLUSW2, r0x00
	.line	662; /data/src/greenpower/carComputer/softwareC/picLib3.c	ADCON0 = (channel << 2) | 0x03;
	RLNCF	r0x00, W
	RLNCF	WREG, W
	ANDLW	0xfc
	MOVWF	r0x01
	MOVLW	0x03
	IORWF	r0x01, W
	MOVWF	_ADCON0
_00451_DS_:
	.line	664; /data/src/greenpower/carComputer/softwareC/picLib3.c	while(ADCON0bits.NOT_DONE){
	BTFSC	_ADCON0bits, 1
	BRA	_00451_DS_
	.line	668; /data/src/greenpower/carComputer/softwareC/picLib3.c	return (ADRESH << 8) + ADRESL;
	MOVFF	_ADRESH, r0x00
	CLRF	r0x01
	MOVF	r0x00, W
	MOVWF	r0x03
	CLRF	r0x02
	MOVFF	_ADRESL, r0x00
	CLRF	r0x01
	MOVF	r0x00, W
	ADDWF	r0x02, F
	MOVF	r0x01, W
	ADDWFC	r0x03, F
	MOVFF	r0x03, PRODL
	MOVF	r0x02, W
	MOVFF	PREINC1, r0x03
	MOVFF	PREINC1, r0x02
	MOVFF	PREINC1, r0x01
	MOVFF	PREINC1, r0x00
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__adcInit	code
_adcInit:
	.line	654; /data/src/greenpower/carComputer/softwareC/picLib3.c	void adcInit(){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	.line	655; /data/src/greenpower/carComputer/softwareC/picLib3.c	ADCON0 = 0x01;		// Enable ADC
	MOVLW	0x01
	MOVWF	_ADCON0
	.line	656; /data/src/greenpower/carComputer/softwareC/picLib3.c	ADCON1 = 0x05;		// Enable first 9 ADC inputs and use internal voltage reference
	MOVLW	0x05
	MOVWF	_ADCON1
	.line	657; /data/src/greenpower/carComputer/softwareC/picLib3.c	ADCON2 = 0x94;		// Setup Aquisition times for 4MHz Clock
	MOVLW	0x94
	MOVWF	_ADCON2
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__timerGetSec	code
_timerGetSec:
	.line	644; /data/src/greenpower/carComputer/softwareC/picLib3.c	UInt16 timerGetSec(){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	MOVFF	r0x00, POSTDEC1
	MOVFF	r0x01, POSTDEC1
	MOVFF	r0x02, POSTDEC1
	MOVFF	r0x03, POSTDEC1
	.line	645; /data/src/greenpower/carComputer/softwareC/picLib3.c	return timerGetMicroSec() / 1000000;
	CALL	_timerGetMicroSec
	MOVWF	r0x00
	MOVFF	PRODL, r0x01
	MOVFF	PRODH, r0x02
	MOVFF	FSR0L, r0x03
	MOVLW	0x00
	MOVWF	POSTDEC1
	MOVLW	0x0f
	MOVWF	POSTDEC1
	MOVLW	0x42
	MOVWF	POSTDEC1
	MOVLW	0x40
	MOVWF	POSTDEC1
	MOVF	r0x03, W
	MOVWF	POSTDEC1
	MOVF	r0x02, W
	MOVWF	POSTDEC1
	MOVF	r0x01, W
	MOVWF	POSTDEC1
	MOVF	r0x00, W
	MOVWF	POSTDEC1
	CALL	__divulong
	MOVWF	r0x00
	MOVFF	PRODL, r0x01
	MOVFF	PRODH, r0x02
	MOVFF	FSR0L, r0x03
	MOVLW	0x08
	ADDWF	FSR1L, F
	MOVFF	r0x01, PRODL
	MOVF	r0x00, W
	MOVFF	PREINC1, r0x03
	MOVFF	PREINC1, r0x02
	MOVFF	PREINC1, r0x01
	MOVFF	PREINC1, r0x00
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__timerGetMilliSec	code
_timerGetMilliSec:
	.line	640; /data/src/greenpower/carComputer/softwareC/picLib3.c	UInt16 timerGetMilliSec(){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	MOVFF	r0x00, POSTDEC1
	MOVFF	r0x01, POSTDEC1
	MOVFF	r0x02, POSTDEC1
	MOVFF	r0x03, POSTDEC1
	.line	641; /data/src/greenpower/carComputer/softwareC/picLib3.c	return timerGetMicroSec() / 1000;
	CALL	_timerGetMicroSec
	MOVWF	r0x00
	MOVFF	PRODL, r0x01
	MOVFF	PRODH, r0x02
	MOVFF	FSR0L, r0x03
	MOVLW	0x00
	MOVWF	POSTDEC1
	MOVLW	0x00
	MOVWF	POSTDEC1
	MOVLW	0x03
	MOVWF	POSTDEC1
	MOVLW	0xe8
	MOVWF	POSTDEC1
	MOVF	r0x03, W
	MOVWF	POSTDEC1
	MOVF	r0x02, W
	MOVWF	POSTDEC1
	MOVF	r0x01, W
	MOVWF	POSTDEC1
	MOVF	r0x00, W
	MOVWF	POSTDEC1
	CALL	__divulong
	MOVWF	r0x00
	MOVFF	PRODL, r0x01
	MOVFF	PRODH, r0x02
	MOVFF	FSR0L, r0x03
	MOVLW	0x08
	ADDWF	FSR1L, F
	MOVFF	r0x01, PRODL
	MOVF	r0x00, W
	MOVFF	PREINC1, r0x03
	MOVFF	PREINC1, r0x02
	MOVFF	PREINC1, r0x01
	MOVFF	PREINC1, r0x00
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__timerGetMicroSec	code
_timerGetMicroSec:
	MOVFF r0x00, POSTDEC1
	MOVFF r0x01, POSTDEC1
	MOVFF r0x02, POSTDEC1
	MOVFF r0x03, POSTDEC1
	MOVFF r0x04, POSTDEC1
	MOVFF r0x05, POSTDEC1
	; t1 = (TMR3H << 8) | TMR3L;
	MOVFF _TMR3L, r0x00
	MOVFF _TMR3H, r0x01
	MOVFF _timerHigh, r0x02
	MOVFF (_timerHigh + 1), r0x03
	; t3 = (TMR3H << 8) | TMR3L;
	MOVFF _TMR3L, r0x04
	MOVFF _TMR3H, r0x05
	; if(t3 < t1){
	MOVF r0x01, W
	SUBWF r0x05, W
	BNZ _00001
	MOVF r0x00, W
	SUBWF r0x04, W
_00001:
	BC _00002
	MOVFF _timerHigh, r0x02
	MOVFF (_timerHigh + 1), r0x03
_00002:
	; return ((UInt32)timerHigh << 16) | t3;
	MOVFF r0x03, FSR0L
	MOVFF r0x02, PRODH
	MOVFF r0x05, PRODL
	MOVF r0x04, W
	MOVFF PREINC1, r0x05
	MOVFF PREINC1, r0x04
	MOVFF PREINC1, r0x03
	MOVFF PREINC1, r0x02
	MOVFF PREINC1, r0x01
	MOVFF PREINC1, r0x00
	RETURN
	
; ; Starting pCode block
S_testLcd__timerTick	code
_timerTick:
	.line	574; /data/src/greenpower/carComputer/softwareC/picLib3.c	void timerTick(){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	BANKSEL	_timerHigh
	.line	575; /data/src/greenpower/carComputer/softwareC/picLib3.c	timerHigh++;
	INCF	_timerHigh, F, B
	BNC	_10459_DS_
	BANKSEL	(_timerHigh + 1)
	INCF	(_timerHigh + 1), F, B
_10459_DS_:
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__timerClear	code
_timerClear:
	.line	567; /data/src/greenpower/carComputer/softwareC/picLib3.c	void timerClear(){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	.line	568; /data/src/greenpower/carComputer/softwareC/picLib3.c	TMR3H = 0;
	CLRF	_TMR3H
	.line	569; /data/src/greenpower/carComputer/softwareC/picLib3.c	TMR3L = 0;
	CLRF	_TMR3L
	BANKSEL	_timerHigh
	.line	571; /data/src/greenpower/carComputer/softwareC/picLib3.c	timerHigh = 0;
	CLRF	_timerHigh, B
	BANKSEL	(_timerHigh + 1)
	CLRF	(_timerHigh + 1), B
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__timerInit	code
_timerInit:
	.line	558; /data/src/greenpower/carComputer/softwareC/picLib3.c	void timerInit(){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	.line	560; /data/src/greenpower/carComputer/softwareC/picLib3.c	T3CON = 0x81;
	MOVLW	0x81
	MOVWF	_T3CON
	.line	561; /data/src/greenpower/carComputer/softwareC/picLib3.c	TMR3H = 0;
	CLRF	_TMR3H
	.line	562; /data/src/greenpower/carComputer/softwareC/picLib3.c	TMR3L = 0;
	CLRF	_TMR3L
	BANKSEL	_timerHigh
	.line	564; /data/src/greenpower/carComputer/softwareC/picLib3.c	timerHigh = 0;
	CLRF	_timerHigh, B
	BANKSEL	(_timerHigh + 1)
	CLRF	(_timerHigh + 1), B
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__eepromWrite32	code
_eepromWrite32:
	.line	483; /data/src/greenpower/carComputer/softwareC/picLib3.c	void eepromWrite32(UInt8 address, UInt32 value){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	MOVFF	r0x00, POSTDEC1
	MOVFF	r0x01, POSTDEC1
	MOVFF	r0x02, POSTDEC1
	MOVFF	r0x03, POSTDEC1
	MOVFF	r0x04, POSTDEC1
	MOVFF	r0x05, POSTDEC1
	MOVFF	r0x06, POSTDEC1
	MOVLW	0x02
	MOVFF	PLUSW2, r0x00
	MOVLW	0x03
	MOVFF	PLUSW2, r0x01
	MOVLW	0x04
	MOVFF	PLUSW2, r0x02
	MOVLW	0x05
	MOVFF	PLUSW2, r0x03
	MOVLW	0x06
	MOVFF	PLUSW2, r0x04
	.line	484; /data/src/greenpower/carComputer/softwareC/picLib3.c	eepromWrite16(address, value);
	MOVF	r0x01, W
	MOVWF	r0x05
	MOVF	r0x02, W
	MOVWF	r0x06
	MOVF	r0x06, W
	MOVWF	POSTDEC1
	MOVF	r0x05, W
	MOVWF	POSTDEC1
	MOVF	r0x00, W
	MOVWF	POSTDEC1
	CALL	_eepromWrite16
	MOVLW	0x03
	ADDWF	FSR1L, F
	.line	485; /data/src/greenpower/carComputer/softwareC/picLib3.c	eepromWrite16(address + 2, value >> 16);
	INCF	r0x00, F
	INCF	r0x00, F
	MOVF	r0x03, W
	MOVWF	r0x01
	MOVF	r0x04, W
	MOVWF	r0x02
	CLRF	r0x03
	CLRF	r0x04
	MOVF	r0x02, W
	MOVWF	POSTDEC1
	MOVF	r0x01, W
	MOVWF	POSTDEC1
	MOVF	r0x00, W
	MOVWF	POSTDEC1
	CALL	_eepromWrite16
	MOVLW	0x03
	ADDWF	FSR1L, F
	MOVFF	PREINC1, r0x06
	MOVFF	PREINC1, r0x05
	MOVFF	PREINC1, r0x04
	MOVFF	PREINC1, r0x03
	MOVFF	PREINC1, r0x02
	MOVFF	PREINC1, r0x01
	MOVFF	PREINC1, r0x00
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__eepromRead32	code
_eepromRead32:
	.line	475; /data/src/greenpower/carComputer/softwareC/picLib3.c	UInt32 eepromRead32(UInt8 address){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	MOVFF	r0x00, POSTDEC1
	MOVFF	r0x01, POSTDEC1
	MOVFF	r0x02, POSTDEC1
	MOVFF	r0x03, POSTDEC1
	MOVFF	r0x04, POSTDEC1
	MOVFF	r0x05, POSTDEC1
	MOVFF	r0x06, POSTDEC1
	MOVFF	r0x07, POSTDEC1
	MOVFF	r0x08, POSTDEC1
	MOVFF	r0x09, POSTDEC1
	MOVFF	r0x0a, POSTDEC1
	MOVFF	r0x0b, POSTDEC1
	MOVLW	0x02
	MOVFF	PLUSW2, r0x00
	.line	478; /data/src/greenpower/carComputer/softwareC/picLib3.c	v = eepromRead16(address);
	MOVF	r0x00, W
	MOVWF	POSTDEC1
	CALL	_eepromRead16
	MOVWF	r0x01
	MOVFF	PRODL, r0x02
	INCF	FSR1L, F
	CLRF	r0x03
	CLRF	r0x04
	.line	479; /data/src/greenpower/carComputer/softwareC/picLib3.c	v |= ((UInt32)eepromRead16(address + 2) << 16);
	INCF	r0x00, F
	INCF	r0x00, F
	MOVF	r0x00, W
	MOVWF	POSTDEC1
	CALL	_eepromRead16
	MOVWF	r0x00
	MOVFF	PRODL, r0x05
	INCF	FSR1L, F
	CLRF	r0x06
	CLRF	r0x07
	MOVF	r0x05, W
	MOVWF	r0x0b
	MOVF	r0x00, W
	MOVWF	r0x0a
	CLRF	r0x08
	CLRF	r0x09
	MOVF	r0x08, W
	IORWF	r0x01, F
	MOVF	r0x09, W
	IORWF	r0x02, F
	MOVF	r0x0a, W
	IORWF	r0x03, F
	MOVF	r0x0b, W
	IORWF	r0x04, F
	.line	480; /data/src/greenpower/carComputer/softwareC/picLib3.c	return v;
	MOVFF	r0x04, FSR0L
	MOVFF	r0x03, PRODH
	MOVFF	r0x02, PRODL
	MOVF	r0x01, W
	MOVFF	PREINC1, r0x0b
	MOVFF	PREINC1, r0x0a
	MOVFF	PREINC1, r0x09
	MOVFF	PREINC1, r0x08
	MOVFF	PREINC1, r0x07
	MOVFF	PREINC1, r0x06
	MOVFF	PREINC1, r0x05
	MOVFF	PREINC1, r0x04
	MOVFF	PREINC1, r0x03
	MOVFF	PREINC1, r0x02
	MOVFF	PREINC1, r0x01
	MOVFF	PREINC1, r0x00
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__eepromWrite16	code
_eepromWrite16:
	.line	445; /data/src/greenpower/carComputer/softwareC/picLib3.c	void eepromWrite16(UInt8 address, UInt16 value){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	MOVFF	r0x00, POSTDEC1
	MOVFF	r0x01, POSTDEC1
	MOVFF	r0x02, POSTDEC1
	MOVLW	0x02
	MOVFF	PLUSW2, r0x00
	MOVLW	0x03
	MOVFF	PLUSW2, r0x01
	MOVLW	0x04
	MOVFF	PLUSW2, r0x02
	.line	447; /data/src/greenpower/carComputer/softwareC/picLib3.c	EECON1bits.EEPGD = 0;
	BCF	_EECON1bits, 7
	.line	448; /data/src/greenpower/carComputer/softwareC/picLib3.c	EECON1bits.CFGS = 0;
	BCF	_EECON1bits, 6
	.line	449; /data/src/greenpower/carComputer/softwareC/picLib3.c	EECON1bits.WREN = 1;		// Enable writes to data EEPROM
	BSF	_EECON1bits, 2
	.line	450; /data/src/greenpower/carComputer/softwareC/picLib3.c	INTCONbits.GIE = 0;		// Disable interrupts
	BCF	_INTCONbits, 7
	.line	452; /data/src/greenpower/carComputer/softwareC/picLib3.c	EEADR = address;
	MOVFF	r0x00, _EEADR
	.line	453; /data/src/greenpower/carComputer/softwareC/picLib3.c	EEDATA = value;
	MOVF	r0x01, W
	MOVWF	_EEDATA
	.line	454; /data/src/greenpower/carComputer/softwareC/picLib3.c	EECON2 = 0x55;
	MOVLW	0x55
	MOVWF	_EECON2
	.line	455; /data/src/greenpower/carComputer/softwareC/picLib3.c	EECON2 = 0x0AA;
	MOVLW	0xaa
	MOVWF	_EECON2
	.line	456; /data/src/greenpower/carComputer/softwareC/picLib3.c	EECON1bits.WR = 1;		// Start writing
	BSF	_EECON1bits, 1
_00395_DS_:
	.line	457; /data/src/greenpower/carComputer/softwareC/picLib3.c	while(EECON1bits.WR);
	BTFSC	_EECON1bits, 1
	BRA	_00395_DS_
	.line	459; /data/src/greenpower/carComputer/softwareC/picLib3.c	EEADR = address + 1;
	INCF	r0x00, W
	MOVWF	_EEADR
	.line	460; /data/src/greenpower/carComputer/softwareC/picLib3.c	EEDATA = value >> 8;
	MOVF	r0x02, W
	MOVWF	r0x01
	CLRF	r0x02
	MOVF	r0x01, W
	MOVWF	_EEDATA
	.line	461; /data/src/greenpower/carComputer/softwareC/picLib3.c	EECON2 = 0x55;
	MOVLW	0x55
	MOVWF	_EECON2
	.line	462; /data/src/greenpower/carComputer/softwareC/picLib3.c	EECON2 = 0x0AA;
	MOVLW	0xaa
	MOVWF	_EECON2
	.line	463; /data/src/greenpower/carComputer/softwareC/picLib3.c	EECON1bits.WR = 1;		// Start writing
	BSF	_EECON1bits, 1
_00398_DS_:
	.line	464; /data/src/greenpower/carComputer/softwareC/picLib3.c	while(EECON1bits.WR);
	BTFSC	_EECON1bits, 1
	BRA	_00398_DS_
	.line	471; /data/src/greenpower/carComputer/softwareC/picLib3.c	EECON1bits.WREN = 0;
	BCF	_EECON1bits, 2
	.line	472; /data/src/greenpower/carComputer/softwareC/picLib3.c	INTCONbits.GIE = 1;  // enable interrupts
	BSF	_INTCONbits, 7
	MOVFF	PREINC1, r0x02
	MOVFF	PREINC1, r0x01
	MOVFF	PREINC1, r0x00
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__eepromRead16	code
_eepromRead16:
	.line	431; /data/src/greenpower/carComputer/softwareC/picLib3.c	UInt16 eepromRead16(UInt8 address){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	MOVFF	r0x00, POSTDEC1
	MOVFF	r0x01, POSTDEC1
	MOVFF	r0x02, POSTDEC1
	MOVFF	r0x03, POSTDEC1
	MOVFF	r0x04, POSTDEC1
	MOVFF	r0x05, POSTDEC1
	MOVLW	0x02
	MOVFF	PLUSW2, r0x00
	.line	434; /data/src/greenpower/carComputer/softwareC/picLib3.c	EECON1bits.CFGS = 0;
	BCF	_EECON1bits, 6
	.line	435; /data/src/greenpower/carComputer/softwareC/picLib3.c	EECON1bits.EEPGD = 0;
	BCF	_EECON1bits, 7
	.line	436; /data/src/greenpower/carComputer/softwareC/picLib3.c	EEADR = address;
	MOVFF	r0x00, _EEADR
	.line	437; /data/src/greenpower/carComputer/softwareC/picLib3.c	EECON1bits.RD = 1;
	BSF	_EECON1bits, 0
	.line	438; /data/src/greenpower/carComputer/softwareC/picLib3.c	v = EEDATA;
	MOVFF	_EEDATA, r0x01
	CLRF	r0x02
	.line	439; /data/src/greenpower/carComputer/softwareC/picLib3.c	EEADR = address + 1;
	INCF	r0x00, W
	MOVWF	_EEADR
	.line	440; /data/src/greenpower/carComputer/softwareC/picLib3.c	EECON1bits.RD = 1;
	BSF	_EECON1bits, 0
	.line	441; /data/src/greenpower/carComputer/softwareC/picLib3.c	v |= (EEDATA << 8);
	MOVFF	_EEDATA, r0x00
	CLRF	r0x03
	MOVF	r0x00, W
	MOVWF	r0x05
	CLRF	r0x04
	MOVF	r0x04, W
	IORWF	r0x01, F
	MOVF	r0x05, W
	IORWF	r0x02, F
	.line	442; /data/src/greenpower/carComputer/softwareC/picLib3.c	return v;
	MOVFF	r0x02, PRODL
	MOVF	r0x01, W
	MOVFF	PREINC1, r0x05
	MOVFF	PREINC1, r0x04
	MOVFF	PREINC1, r0x03
	MOVFF	PREINC1, r0x02
	MOVFF	PREINC1, r0x01
	MOVFF	PREINC1, r0x00
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__eepromWrite8	code
_eepromWrite8:
	.line	409; /data/src/greenpower/carComputer/softwareC/picLib3.c	void eepromWrite8(UInt8 address, UInt8 value){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	MOVFF	r0x00, POSTDEC1
	MOVFF	r0x01, POSTDEC1
	MOVLW	0x02
	MOVFF	PLUSW2, r0x00
	MOVLW	0x03
	MOVFF	PLUSW2, r0x01
	.line	411; /data/src/greenpower/carComputer/softwareC/picLib3.c	EECON1bits.EEPGD = 0;
	BCF	_EECON1bits, 7
	.line	412; /data/src/greenpower/carComputer/softwareC/picLib3.c	EECON1bits.CFGS = 0;
	BCF	_EECON1bits, 6
	.line	413; /data/src/greenpower/carComputer/softwareC/picLib3.c	EECON1bits.WREN = 1;		// Enable writes to data EEPROM
	BSF	_EECON1bits, 2
	.line	414; /data/src/greenpower/carComputer/softwareC/picLib3.c	INTCONbits.GIE = 0;		// Disable interrupts
	BCF	_INTCONbits, 7
	.line	416; /data/src/greenpower/carComputer/softwareC/picLib3.c	EEDATA = value;
	MOVFF	r0x01, _EEDATA
	.line	417; /data/src/greenpower/carComputer/softwareC/picLib3.c	EEADR = address;
	MOVFF	r0x00, _EEADR
	.line	418; /data/src/greenpower/carComputer/softwareC/picLib3.c	EECON2 = 0x55;
	MOVLW	0x55
	MOVWF	_EECON2
	.line	419; /data/src/greenpower/carComputer/softwareC/picLib3.c	EECON2 = 0x0AA;
	MOVLW	0xaa
	MOVWF	_EECON2
	.line	420; /data/src/greenpower/carComputer/softwareC/picLib3.c	EECON1bits.WR = 1;		// Start writing
	BSF	_EECON1bits, 1
_00382_DS_:
	.line	421; /data/src/greenpower/carComputer/softwareC/picLib3.c	while(EECON1bits.WR);
	BTFSC	_EECON1bits, 1
	BRA	_00382_DS_
	.line	427; /data/src/greenpower/carComputer/softwareC/picLib3.c	EECON1bits.WREN = 0;
	BCF	_EECON1bits, 2
	.line	428; /data/src/greenpower/carComputer/softwareC/picLib3.c	INTCONbits.GIE = 1;  // enable interrupts
	BSF	_INTCONbits, 7
	MOVFF	PREINC1, r0x01
	MOVFF	PREINC1, r0x00
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__eepromRead8	code
_eepromRead8:
	.line	401; /data/src/greenpower/carComputer/softwareC/picLib3.c	UInt8 eepromRead8(UInt8 address){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	MOVFF	r0x00, POSTDEC1
	MOVLW	0x02
	MOVFF	PLUSW2, r0x00
	.line	402; /data/src/greenpower/carComputer/softwareC/picLib3.c	EECON1bits.CFGS = 0;
	BCF	_EECON1bits, 6
	.line	403; /data/src/greenpower/carComputer/softwareC/picLib3.c	EECON1bits.EEPGD = 0;
	BCF	_EECON1bits, 7
	.line	404; /data/src/greenpower/carComputer/softwareC/picLib3.c	EEADR = address;
	MOVFF	r0x00, _EEADR
	.line	405; /data/src/greenpower/carComputer/softwareC/picLib3.c	EECON1bits.RD = 1;
	BSF	_EECON1bits, 0
	.line	406; /data/src/greenpower/carComputer/softwareC/picLib3.c	return EEDATA;
	MOVF	_EEDATA, W
	MOVFF	PREINC1, r0x00
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__usartWrite	code
_usartWrite:
	.line	389; /data/src/greenpower/carComputer/softwareC/picLib3.c	void usartWrite(char* buffer, UInt8 len){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	MOVFF	r0x00, POSTDEC1
	MOVFF	r0x01, POSTDEC1
	MOVFF	r0x02, POSTDEC1
	MOVFF	r0x03, POSTDEC1
	MOVFF	r0x04, POSTDEC1
	MOVFF	r0x05, POSTDEC1
	MOVLW	0x02
	MOVFF	PLUSW2, r0x00
	MOVLW	0x03
	MOVFF	PLUSW2, r0x01
	MOVLW	0x04
	MOVFF	PLUSW2, r0x02
	MOVLW	0x05
	MOVFF	PLUSW2, r0x03
	.line	392; /data/src/greenpower/carComputer/softwareC/picLib3.c	for(i = 0; i < len; i++){
	CLRF	r0x04
_00363_DS_:
	MOVF	r0x03, W
	SUBWF	r0x04, W
	BC	_00367_DS_
	.line	393; /data/src/greenpower/carComputer/softwareC/picLib3.c	usartPutc(*buffer++);
	MOVFF	r0x00, FSR0L
	MOVFF	r0x01, PRODL
	MOVF	r0x02, W
	CALL	__gptrget1
	MOVWF	r0x05
	INCF	r0x00, F
	BTFSC	STATUS, 0
	INCF	r0x01, F
	BTFSC	STATUS, 0
	INCF	r0x02, F
	MOVF	r0x05, W
	MOVWF	POSTDEC1
	CALL	_usartPutc
	INCF	FSR1L, F
	.line	392; /data/src/greenpower/carComputer/softwareC/picLib3.c	for(i = 0; i < len; i++){
	INCF	r0x04, F
	BRA	_00363_DS_
_00367_DS_:
	MOVFF	PREINC1, r0x05
	MOVFF	PREINC1, r0x04
	MOVFF	PREINC1, r0x03
	MOVFF	PREINC1, r0x02
	MOVFF	PREINC1, r0x01
	MOVFF	PREINC1, r0x00
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__usartPuts	code
_usartPuts:
	.line	356; /data/src/greenpower/carComputer/softwareC/picLib3.c	void usartPuts(char* p){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	MOVFF	r0x00, POSTDEC1
	MOVFF	r0x01, POSTDEC1
	MOVFF	r0x02, POSTDEC1
	MOVFF	r0x03, POSTDEC1
	MOVLW	0x02
	MOVFF	PLUSW2, r0x00
	MOVLW	0x03
	MOVFF	PLUSW2, r0x01
	MOVLW	0x04
	MOVFF	PLUSW2, r0x02
_00355_DS_:
	.line	357; /data/src/greenpower/carComputer/softwareC/picLib3.c	while(*p){
	MOVFF	r0x00, FSR0L
	MOVFF	r0x01, PRODL
	MOVF	r0x02, W
	CALL	__gptrget1
	MOVWF	r0x03
	MOVF	r0x03, W
	BZ	_00358_DS_
_00352_DS_:
	.line	358; /data/src/greenpower/carComputer/softwareC/picLib3.c	while(!TXSTAbits.TRMT);
	BTFSS	_TXSTAbits, 1
	BRA	_00352_DS_
	.line	359; /data/src/greenpower/carComputer/softwareC/picLib3.c	TXREG = *p++;
	MOVFF	r0x00, FSR0L
	MOVFF	r0x01, PRODL
	MOVF	r0x02, W
	CALL	__gptrget1
	MOVWF	_TXREG
	INCF	r0x00, F
	BTFSC	STATUS, 0
	INCF	r0x01, F
	BTFSC	STATUS, 0
	INCF	r0x02, F
	BRA	_00355_DS_
_00358_DS_:
	MOVFF	PREINC1, r0x03
	MOVFF	PREINC1, r0x02
	MOVFF	PREINC1, r0x01
	MOVFF	PREINC1, r0x00
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__usartPutc	code
_usartPutc:
	.line	351; /data/src/greenpower/carComputer/softwareC/picLib3.c	void usartPutc(UInt8 c){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	MOVFF	r0x00, POSTDEC1
	MOVLW	0x02
	MOVFF	PLUSW2, r0x00
_00344_DS_:
	.line	352; /data/src/greenpower/carComputer/softwareC/picLib3.c	while(!TXSTAbits.TRMT);
	BTFSS	_TXSTAbits, 1
	BRA	_00344_DS_
	.line	353; /data/src/greenpower/carComputer/softwareC/picLib3.c	TXREG = c;
	MOVFF	r0x00, _TXREG
	MOVFF	PREINC1, r0x00
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__usartGetc	code
_usartGetc:
	.line	346; /data/src/greenpower/carComputer/softwareC/picLib3.c	unsigned char usartGetc(void){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
_00336_DS_:
	.line	347; /data/src/greenpower/carComputer/softwareC/picLib3.c	while(PIR1bits.RCIF == 0);
	BTFSS	_PIR1bits, 5
	BRA	_00336_DS_
	.line	348; /data/src/greenpower/carComputer/softwareC/picLib3.c	return RCREG;
	MOVF	_RCREG, W
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__usartRxRdy	code
_usartRxRdy:
	.line	342; /data/src/greenpower/carComputer/softwareC/picLib3.c	unsigned char usartRxRdy(void){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	MOVFF	r0x00, POSTDEC1
	.line	343; /data/src/greenpower/carComputer/softwareC/picLib3.c	return PIR1bits.RCIF;
	CLRF	r0x00
	BTFSC	_PIR1bits, 5
	INCF	r0x00, F
	MOVF	r0x00, W
	MOVFF	PREINC1, r0x00
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__usartInit	code
_usartInit:
	.line	328; /data/src/greenpower/carComputer/softwareC/picLib3.c	void usartInit(void){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	.line	329; /data/src/greenpower/carComputer/softwareC/picLib3.c	TXSTA = 0x20;
	MOVLW	0x20
	MOVWF	_TXSTA
	.line	330; /data/src/greenpower/carComputer/softwareC/picLib3.c	RCSTA = 0x90;
	MOVLW	0x90
	MOVWF	_RCSTA
	.line	336; /data/src/greenpower/carComputer/softwareC/picLib3.c	SPBRG = 12;		// 4800 Baud 4MHz Clock
	MOVLW	0x0c
	MOVWF	_SPBRG
	.line	339; /data/src/greenpower/carComputer/softwareC/picLib3.c	delayMs(1);
	MOVLW	0x00
	MOVWF	POSTDEC1
	MOVLW	0x01
	MOVWF	POSTDEC1
	CALL	_delayMs
	MOVLW	0x02
	ADDWF	FSR1L, F
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__strWordDec	code
_strWordDec:
	.line	297; /data/src/greenpower/carComputer/softwareC/picLib3.c	void strWordDec(char* str, UInt8 decPlace, UInt16 v){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	MOVFF	r0x00, POSTDEC1
	MOVFF	r0x01, POSTDEC1
	MOVFF	r0x02, POSTDEC1
	MOVFF	r0x03, POSTDEC1
	MOVFF	r0x04, POSTDEC1
	MOVFF	r0x05, POSTDEC1
	MOVFF	r0x06, POSTDEC1
	MOVFF	r0x07, POSTDEC1
	MOVFF	r0x08, POSTDEC1
	MOVFF	r0x09, POSTDEC1
	MOVFF	r0x0a, POSTDEC1
	MOVLW	0x02
	MOVFF	PLUSW2, r0x00
	MOVLW	0x03
	MOVFF	PLUSW2, r0x01
	MOVLW	0x04
	MOVFF	PLUSW2, r0x02
	MOVLW	0x05
	MOVFF	PLUSW2, r0x03
	MOVLW	0x06
	MOVFF	PLUSW2, r0x04
	MOVLW	0x07
	MOVFF	PLUSW2, r0x05
	.line	298; /data/src/greenpower/carComputer/softwareC/picLib3.c	char*	p = str;
	MOVFF	r0x00, r0x06
	MOVFF	r0x01, r0x07
	MOVFF	r0x02, r0x08
	.line	300; /data/src/greenpower/carComputer/softwareC/picLib3.c	if(decPlace)
	MOVF	r0x03, W
	BZ	_00289_DS_
	.line	301; /data/src/greenpower/carComputer/softwareC/picLib3.c	decPlace = 5 - decPlace;
	MOVF	r0x03, W
	SUBLW	0x05
	MOVWF	r0x03
_00289_DS_:
	.line	303; /data/src/greenpower/carComputer/softwareC/picLib3.c	*p++ = (v / 10000) + '0';
	MOVLW	0x27
	MOVWF	POSTDEC1
	MOVLW	0x10
	MOVWF	POSTDEC1
	MOVF	r0x05, W
	MOVWF	POSTDEC1
	MOVF	r0x04, W
	MOVWF	POSTDEC1
	CALL	__divuint
	MOVWF	r0x09
	MOVFF	PRODL, r0x0a
	MOVLW	0x04
	ADDWF	FSR1L, F
	MOVLW	0x30
	ADDWF	r0x09, F
	MOVFF	r0x09, POSTDEC1
	MOVFF	r0x06, FSR0L
	MOVFF	r0x07, PRODL
	MOVF	r0x08, W
	CALL	__gptrput1
	INCF	r0x06, F
	BTFSC	STATUS, 0
	INCF	r0x07, F
	BTFSC	STATUS, 0
	INCF	r0x08, F
	.line	304; /data/src/greenpower/carComputer/softwareC/picLib3.c	if(!--decPlace) *p++ = '.';
	DECF	r0x03, F
	MOVF	r0x03, W
	BNZ	_00291_DS_
	MOVLW	0x2e
	MOVWF	POSTDEC1
	MOVFF	r0x06, FSR0L
	MOVFF	r0x07, PRODL
	MOVF	r0x08, W
	CALL	__gptrput1
	INCF	r0x06, F
	BTFSC	STATUS, 0
	INCF	r0x07, F
	BTFSC	STATUS, 0
	INCF	r0x08, F
_00291_DS_:
	.line	305; /data/src/greenpower/carComputer/softwareC/picLib3.c	v = v % 10000;
	MOVLW	0x27
	MOVWF	POSTDEC1
	MOVLW	0x10
	MOVWF	POSTDEC1
	MOVF	r0x05, W
	MOVWF	POSTDEC1
	MOVF	r0x04, W
	MOVWF	POSTDEC1
	CALL	__moduint
	MOVWF	r0x04
	MOVFF	PRODL, r0x05
	MOVLW	0x04
	ADDWF	FSR1L, F
	.line	306; /data/src/greenpower/carComputer/softwareC/picLib3.c	*p++ = (v / 1000) + '0';
	MOVLW	0x03
	MOVWF	POSTDEC1
	MOVLW	0xe8
	MOVWF	POSTDEC1
	MOVF	r0x05, W
	MOVWF	POSTDEC1
	MOVF	r0x04, W
	MOVWF	POSTDEC1
	CALL	__divuint
	MOVWF	r0x09
	MOVFF	PRODL, r0x0a
	MOVLW	0x04
	ADDWF	FSR1L, F
	MOVLW	0x30
	ADDWF	r0x09, F
	MOVFF	r0x09, POSTDEC1
	MOVFF	r0x06, FSR0L
	MOVFF	r0x07, PRODL
	MOVF	r0x08, W
	CALL	__gptrput1
	INCF	r0x06, F
	BTFSC	STATUS, 0
	INCF	r0x07, F
	BTFSC	STATUS, 0
	INCF	r0x08, F
	.line	307; /data/src/greenpower/carComputer/softwareC/picLib3.c	if(!--decPlace) *p++ = '.';
	DECF	r0x03, F
	MOVF	r0x03, W
	BNZ	_00293_DS_
	MOVLW	0x2e
	MOVWF	POSTDEC1
	MOVFF	r0x06, FSR0L
	MOVFF	r0x07, PRODL
	MOVF	r0x08, W
	CALL	__gptrput1
	INCF	r0x06, F
	BTFSC	STATUS, 0
	INCF	r0x07, F
	BTFSC	STATUS, 0
	INCF	r0x08, F
_00293_DS_:
	.line	308; /data/src/greenpower/carComputer/softwareC/picLib3.c	v = v % 1000;
	MOVLW	0x03
	MOVWF	POSTDEC1
	MOVLW	0xe8
	MOVWF	POSTDEC1
	MOVF	r0x05, W
	MOVWF	POSTDEC1
	MOVF	r0x04, W
	MOVWF	POSTDEC1
	CALL	__moduint
	MOVWF	r0x04
	MOVFF	PRODL, r0x05
	MOVLW	0x04
	ADDWF	FSR1L, F
	.line	309; /data/src/greenpower/carComputer/softwareC/picLib3.c	*p++ = (v / 100) + '0';
	MOVLW	0x00
	MOVWF	POSTDEC1
	MOVLW	0x64
	MOVWF	POSTDEC1
	MOVF	r0x05, W
	MOVWF	POSTDEC1
	MOVF	r0x04, W
	MOVWF	POSTDEC1
	CALL	__divuint
	MOVWF	r0x09
	MOVFF	PRODL, r0x0a
	MOVLW	0x04
	ADDWF	FSR1L, F
	MOVLW	0x30
	ADDWF	r0x09, F
	MOVFF	r0x09, POSTDEC1
	MOVFF	r0x06, FSR0L
	MOVFF	r0x07, PRODL
	MOVF	r0x08, W
	CALL	__gptrput1
	INCF	r0x06, F
	BTFSC	STATUS, 0
	INCF	r0x07, F
	BTFSC	STATUS, 0
	INCF	r0x08, F
	.line	310; /data/src/greenpower/carComputer/softwareC/picLib3.c	if(!--decPlace) *p++ = '.';
	DECF	r0x03, F
	MOVF	r0x03, W
	BNZ	_00295_DS_
	MOVLW	0x2e
	MOVWF	POSTDEC1
	MOVFF	r0x06, FSR0L
	MOVFF	r0x07, PRODL
	MOVF	r0x08, W
	CALL	__gptrput1
	INCF	r0x06, F
	BTFSC	STATUS, 0
	INCF	r0x07, F
	BTFSC	STATUS, 0
	INCF	r0x08, F
_00295_DS_:
	.line	311; /data/src/greenpower/carComputer/softwareC/picLib3.c	v = v % 100;
	MOVLW	0x00
	MOVWF	POSTDEC1
	MOVLW	0x64
	MOVWF	POSTDEC1
	MOVF	r0x05, W
	MOVWF	POSTDEC1
	MOVF	r0x04, W
	MOVWF	POSTDEC1
	CALL	__moduint
	MOVWF	r0x04
	MOVFF	PRODL, r0x05
	MOVLW	0x04
	ADDWF	FSR1L, F
	.line	312; /data/src/greenpower/carComputer/softwareC/picLib3.c	*p++ = (v / 10) + '0';
	MOVLW	0x00
	MOVWF	POSTDEC1
	MOVLW	0x0a
	MOVWF	POSTDEC1
	MOVF	r0x05, W
	MOVWF	POSTDEC1
	MOVF	r0x04, W
	MOVWF	POSTDEC1
	CALL	__divuint
	MOVWF	r0x09
	MOVFF	PRODL, r0x0a
	MOVLW	0x04
	ADDWF	FSR1L, F
	MOVLW	0x30
	ADDWF	r0x09, F
	MOVFF	r0x09, POSTDEC1
	MOVFF	r0x06, FSR0L
	MOVFF	r0x07, PRODL
	MOVF	r0x08, W
	CALL	__gptrput1
	INCF	r0x06, F
	BTFSC	STATUS, 0
	INCF	r0x07, F
	BTFSC	STATUS, 0
	INCF	r0x08, F
	.line	313; /data/src/greenpower/carComputer/softwareC/picLib3.c	if(!--decPlace) *p++ = '.';
	DECF	r0x03, F
	MOVF	r0x03, W
	BNZ	_00297_DS_
	MOVLW	0x2e
	MOVWF	POSTDEC1
	MOVFF	r0x06, FSR0L
	MOVFF	r0x07, PRODL
	MOVF	r0x08, W
	CALL	__gptrput1
	INCF	r0x06, F
	BTFSC	STATUS, 0
	INCF	r0x07, F
	BTFSC	STATUS, 0
	INCF	r0x08, F
_00297_DS_:
	.line	314; /data/src/greenpower/carComputer/softwareC/picLib3.c	v = v % 10;
	MOVLW	0x00
	MOVWF	POSTDEC1
	MOVLW	0x0a
	MOVWF	POSTDEC1
	MOVF	r0x05, W
	MOVWF	POSTDEC1
	MOVF	r0x04, W
	MOVWF	POSTDEC1
	CALL	__moduint
	MOVWF	r0x04
	MOVFF	PRODL, r0x05
	MOVLW	0x04
	ADDWF	FSR1L, F
	.line	315; /data/src/greenpower/carComputer/softwareC/picLib3.c	*p++ = v + '0';
	MOVLW	0x30
	ADDWF	r0x04, F
	MOVFF	r0x04, POSTDEC1
	MOVFF	r0x06, FSR0L
	MOVFF	r0x07, PRODL
	MOVF	r0x08, W
	CALL	__gptrput1
	INCF	r0x06, F
	BTFSC	STATUS, 0
	INCF	r0x07, F
	BTFSC	STATUS, 0
	INCF	r0x08, F
	.line	316; /data/src/greenpower/carComputer/softwareC/picLib3.c	if(!--decPlace) *p++ = '.';
	DECFSZ	r0x03, F
	BRA	_00315_DS_
	MOVLW	0x2e
	MOVWF	POSTDEC1
	MOVFF	r0x06, FSR0L
	MOVFF	r0x07, PRODL
	MOVF	r0x08, W
	CALL	__gptrput1
_00315_DS_:
	.line	319; /data/src/greenpower/carComputer/softwareC/picLib3.c	for(p = str; (p < str + 4) && (*p == '0'); p++)
	MOVF	r0x00, W
	ADDLW	0x04
	MOVWF	r0x03
	MOVLW	0x00
	ADDWFC	r0x01, W
	MOVWF	r0x04
	MOVLW	0x00
	ADDWFC	r0x02, W
	MOVWF	r0x05
_00301_DS_:
	MOVF	r0x02, W
	ADDLW	0x80
	MOVWF	PRODL
	MOVF	r0x05, W
	ADDLW	0x80
	SUBWF	PRODL, W
	BNZ	_00319_DS_
	MOVF	r0x04, W
	SUBWF	r0x01, W
	BNZ	_00319_DS_
	MOVF	r0x03, W
	SUBWF	r0x00, W
_00319_DS_:
	BC	_00305_DS_
	MOVFF	r0x00, FSR0L
	MOVFF	r0x01, PRODL
	MOVF	r0x02, W
	CALL	__gptrget1
	MOVWF	r0x06
	MOVF	r0x06, W
	XORLW	0x30
	BNZ	_00305_DS_
	.line	320; /data/src/greenpower/carComputer/softwareC/picLib3.c	*p = ' ';
	MOVLW	0x20
	MOVWF	POSTDEC1
	MOVFF	r0x00, FSR0L
	MOVFF	r0x01, PRODL
	MOVF	r0x02, W
	CALL	__gptrput1
	.line	319; /data/src/greenpower/carComputer/softwareC/picLib3.c	for(p = str; (p < str + 4) && (*p == '0'); p++)
	INCF	r0x00, F
	BTFSC	STATUS, 0
	INCF	r0x01, F
	BTFSC	STATUS, 0
	INCF	r0x02, F
	BRA	_00301_DS_
_00305_DS_:
	MOVFF	PREINC1, r0x0a
	MOVFF	PREINC1, r0x09
	MOVFF	PREINC1, r0x08
	MOVFF	PREINC1, r0x07
	MOVFF	PREINC1, r0x06
	MOVFF	PREINC1, r0x05
	MOVFF	PREINC1, r0x04
	MOVFF	PREINC1, r0x03
	MOVFF	PREINC1, r0x02
	MOVFF	PREINC1, r0x01
	MOVFF	PREINC1, r0x00
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__strByte	code
_strByte:
	.line	283; /data/src/greenpower/carComputer/softwareC/picLib3.c	void strByte(char* str, UInt8 v){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	MOVFF	r0x00, POSTDEC1
	MOVFF	r0x01, POSTDEC1
	MOVFF	r0x02, POSTDEC1
	MOVFF	r0x03, POSTDEC1
	MOVFF	r0x04, POSTDEC1
	MOVFF	r0x05, POSTDEC1
	MOVFF	r0x06, POSTDEC1
	MOVFF	r0x07, POSTDEC1
	MOVLW	0x02
	MOVFF	PLUSW2, r0x00
	MOVLW	0x03
	MOVFF	PLUSW2, r0x01
	MOVLW	0x04
	MOVFF	PLUSW2, r0x02
	MOVLW	0x05
	MOVFF	PLUSW2, r0x03
	.line	286; /data/src/greenpower/carComputer/softwareC/picLib3.c	*p++ = (v / 100) + '0';
	MOVLW	0x64
	MOVWF	POSTDEC1
	MOVFF	r0x03, POSTDEC1
	CALL	__divuchar
	MOVWF	r0x04
	MOVF	PREINC1, W
	MOVF	PREINC1, W
	MOVLW	0x30
	ADDWF	r0x04, F
	MOVFF	r0x04, POSTDEC1
	MOVFF	r0x00, FSR0L
	MOVFF	r0x01, PRODL
	MOVF	r0x02, W
	CALL	__gptrput1
	MOVF	r0x00, W
	ADDLW	0x01
	MOVWF	r0x04
	MOVLW	0x00
	ADDWFC	r0x01, W
	MOVWF	r0x05
	MOVLW	0x00
	ADDWFC	r0x02, W
	MOVWF	r0x06
	.line	287; /data/src/greenpower/carComputer/softwareC/picLib3.c	v = v % 100;
	MOVLW	0x64
	MOVWF	POSTDEC1
	MOVFF	r0x03, POSTDEC1
	CALL	__moduchar
	MOVWF	r0x03
	MOVF	PREINC1, W
	MOVF	PREINC1, W
	.line	288; /data/src/greenpower/carComputer/softwareC/picLib3.c	*p++ = (v / 10) + '0';
	MOVLW	0x0a
	MOVWF	POSTDEC1
	MOVFF	r0x03, POSTDEC1
	CALL	__divuchar
	MOVWF	r0x07
	MOVF	PREINC1, W
	MOVF	PREINC1, W
	MOVLW	0x30
	ADDWF	r0x07, F
	MOVFF	r0x07, POSTDEC1
	MOVFF	r0x04, FSR0L
	MOVFF	r0x05, PRODL
	MOVF	r0x06, W
	CALL	__gptrput1
	INCF	r0x04, F
	BTFSC	STATUS, 0
	INCF	r0x05, F
	BTFSC	STATUS, 0
	INCF	r0x06, F
	.line	289; /data/src/greenpower/carComputer/softwareC/picLib3.c	v = v % 10;
	MOVLW	0x0a
	MOVWF	POSTDEC1
	MOVFF	r0x03, POSTDEC1
	CALL	__moduchar
	MOVWF	r0x03
	MOVF	PREINC1, W
	MOVF	PREINC1, W
	.line	290; /data/src/greenpower/carComputer/softwareC/picLib3.c	*p++ = v + '0';
	MOVLW	0x30
	ADDWF	r0x03, F
	MOVFF	r0x03, POSTDEC1
	MOVFF	r0x04, FSR0L
	MOVFF	r0x05, PRODL
	MOVF	r0x06, W
	CALL	__gptrput1
	.line	293; /data/src/greenpower/carComputer/softwareC/picLib3.c	for(p = str; (p < str + 2) && (*p == '0'); p++)
	MOVF	r0x00, W
	ADDLW	0x02
	MOVWF	r0x03
	MOVLW	0x00
	ADDWFC	r0x01, W
	MOVWF	r0x04
	MOVLW	0x00
	ADDWFC	r0x02, W
	MOVWF	r0x05
_00271_DS_:
	MOVF	r0x02, W
	ADDLW	0x80
	MOVWF	PRODL
	MOVF	r0x05, W
	ADDLW	0x80
	SUBWF	PRODL, W
	BNZ	_00281_DS_
	MOVF	r0x04, W
	SUBWF	r0x01, W
	BNZ	_00281_DS_
	MOVF	r0x03, W
	SUBWF	r0x00, W
_00281_DS_:
	BC	_00275_DS_
	MOVFF	r0x00, FSR0L
	MOVFF	r0x01, PRODL
	MOVF	r0x02, W
	CALL	__gptrget1
	MOVWF	r0x06
	MOVF	r0x06, W
	XORLW	0x30
	BNZ	_00275_DS_
	.line	294; /data/src/greenpower/carComputer/softwareC/picLib3.c	*p = ' ';
	MOVLW	0x20
	MOVWF	POSTDEC1
	MOVFF	r0x00, FSR0L
	MOVFF	r0x01, PRODL
	MOVF	r0x02, W
	CALL	__gptrput1
	.line	293; /data/src/greenpower/carComputer/softwareC/picLib3.c	for(p = str; (p < str + 2) && (*p == '0'); p++)
	INCF	r0x00, F
	BTFSC	STATUS, 0
	INCF	r0x01, F
	BTFSC	STATUS, 0
	INCF	r0x02, F
	BRA	_00271_DS_
_00275_DS_:
	MOVFF	PREINC1, r0x07
	MOVFF	PREINC1, r0x06
	MOVFF	PREINC1, r0x05
	MOVFF	PREINC1, r0x04
	MOVFF	PREINC1, r0x03
	MOVFF	PREINC1, r0x02
	MOVFF	PREINC1, r0x01
	MOVFF	PREINC1, r0x00
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__lcdPutHexByte	code
_lcdPutHexByte:
	.line	260; /data/src/greenpower/carComputer/softwareC/picLib3.c	void lcdPutHexByte(UInt8 v){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	MOVFF	r0x00, POSTDEC1
	MOVFF	r0x01, POSTDEC1
	MOVFF	r0x02, POSTDEC1
	MOVLW	0x02
	MOVFF	PLUSW2, r0x00
	.line	264; /data/src/greenpower/carComputer/softwareC/picLib3.c	c = v / 16;
	SWAPF	r0x00, W
	ANDLW	0x0f
	MOVWF	r0x01
	.line	265; /data/src/greenpower/carComputer/softwareC/picLib3.c	c += '0';
	MOVLW	0x30
	ADDWF	r0x01, F
	.line	266; /data/src/greenpower/carComputer/softwareC/picLib3.c	if(c > '9')
	MOVLW	0x3a
	SUBWF	r0x01, W
	BNC	_00256_DS_
	.line	267; /data/src/greenpower/carComputer/softwareC/picLib3.c	c += 7;
	MOVLW	0x07
	ADDWF	r0x01, F
_00256_DS_:
	.line	269; /data/src/greenpower/carComputer/softwareC/picLib3.c	dat[0] = c;
	MOVF	r0x01, W
	BANKSEL	_lcdPutHexByte_dat_1_1
	MOVWF	_lcdPutHexByte_dat_1_1, B
	.line	271; /data/src/greenpower/carComputer/softwareC/picLib3.c	c = v & 0x0F;
	MOVLW	0x0f
	ANDWF	r0x00, W
	MOVWF	r0x01
	.line	272; /data/src/greenpower/carComputer/softwareC/picLib3.c	c += '0';
	MOVLW	0x30
	ADDWF	r0x01, F
	.line	273; /data/src/greenpower/carComputer/softwareC/picLib3.c	if(c > '9')
	MOVLW	0x3a
	SUBWF	r0x01, W
	BNC	_00258_DS_
	.line	274; /data/src/greenpower/carComputer/softwareC/picLib3.c	c += 7;
	MOVLW	0x07
	ADDWF	r0x01, F
_00258_DS_:
	.line	275; /data/src/greenpower/carComputer/softwareC/picLib3.c	dat[1] = c;
	MOVF	r0x01, W
	BANKSEL	(_lcdPutHexByte_dat_1_1 + 1)
	MOVWF	(_lcdPutHexByte_dat_1_1 + 1), B
	BANKSEL	(_lcdPutHexByte_dat_1_1 + 2)
	.line	276; /data/src/greenpower/carComputer/softwareC/picLib3.c	dat[2] = 0xFF;
	SETF	(_lcdPutHexByte_dat_1_1 + 2), B
	.line	278; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cWrite(0xC6, 0, I2cSlow8, dat, 3);
	MOVLW	HIGH(_lcdPutHexByte_dat_1_1)
	MOVWF	r0x01
	MOVLW	LOW(_lcdPutHexByte_dat_1_1)
	MOVWF	r0x00
	MOVLW	0x80
	MOVWF	r0x02
	MOVLW	0x03
	MOVWF	POSTDEC1
	MOVF	r0x02, W
	MOVWF	POSTDEC1
	MOVF	r0x01, W
	MOVWF	POSTDEC1
	MOVF	r0x00, W
	MOVWF	POSTDEC1
	MOVLW	0x00
	MOVWF	POSTDEC1
	MOVLW	0x00
	MOVWF	POSTDEC1
	MOVLW	0x00
	MOVWF	POSTDEC1
	MOVLW	0xc6
	MOVWF	POSTDEC1
	CALL	_i2cWrite
	MOVLW	0x08
	ADDWF	FSR1L, F
	.line	279; /data/src/greenpower/carComputer/softwareC/picLib3.c	delayMs(10);
	MOVLW	0x00
	MOVWF	POSTDEC1
	MOVLW	0x0a
	MOVWF	POSTDEC1
	CALL	_delayMs
	MOVLW	0x02
	ADDWF	FSR1L, F
	MOVFF	PREINC1, r0x02
	MOVFF	PREINC1, r0x01
	MOVFF	PREINC1, r0x00
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__lcdWriteStr	code
_lcdWriteStr:
	.line	237; /data/src/greenpower/carComputer/softwareC/picLib3.c	void lcdWriteStr(UInt8 x, UInt8 y, char* str){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	MOVFF	r0x00, POSTDEC1
	MOVFF	r0x01, POSTDEC1
	MOVFF	r0x02, POSTDEC1
	MOVFF	r0x03, POSTDEC1
	MOVFF	r0x04, POSTDEC1
	MOVLW	0x02
	MOVFF	PLUSW2, r0x00
	MOVLW	0x03
	MOVFF	PLUSW2, r0x01
	MOVLW	0x04
	MOVFF	PLUSW2, r0x02
	MOVLW	0x05
	MOVFF	PLUSW2, r0x03
	MOVLW	0x06
	MOVFF	PLUSW2, r0x04
	.line	238; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cWaitForIdle();
	CALL	_i2cWaitForIdle
	.line	240; /data/src/greenpower/carComputer/softwareC/picLib3.c	SSPADD = 0x09;		// Set the baud rate to 100KHz at 4MHz CLK
	MOVLW	0x09
	MOVWF	_SSPADD
	.line	242; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cStart();
	CALL	_i2cStart
	.line	244; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cPutByte(0xC6);
	MOVLW	0xc6
	MOVWF	POSTDEC1
	CALL	_i2cPutByte
	INCF	FSR1L, F
	.line	245; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cPutByte(0x00);
	MOVLW	0x00
	MOVWF	POSTDEC1
	CALL	_i2cPutByte
	INCF	FSR1L, F
	.line	246; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cPutByte(0xFE);
	MOVLW	0xfe
	MOVWF	POSTDEC1
	CALL	_i2cPutByte
	INCF	FSR1L, F
; ;multiply lit val:0x40 by variable r0x01 and store in r0x01
; ;Unrolled 8 X 8 multiplication
; ;FIXME: the function does not support result==WREG
	.line	247; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cPutByte(128 + (y * 64) + x);
	MOVF	r0x01, W
	MULLW	0x40
	MOVFF	PRODL, r0x01
	MOVLW	0x80
	ADDWF	r0x01, F
	MOVF	r0x01, W
	ADDWF	r0x00, F
	MOVF	r0x00, W
	MOVWF	POSTDEC1
	CALL	_i2cPutByte
	INCF	FSR1L, F
	.line	249; /data/src/greenpower/carComputer/softwareC/picLib3.c	while(*str){
	MOVFF	r0x02, r0x00
	MOVFF	r0x03, r0x01
	MOVFF	r0x04, r0x02
_00247_DS_:
	MOVFF	r0x00, FSR0L
	MOVFF	r0x01, PRODL
	MOVF	r0x02, W
	CALL	__gptrget1
	MOVWF	r0x03
	MOVF	r0x03, W
	BZ	_00249_DS_
	.line	250; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cPutByte(*str++);
	INCF	r0x00, F
	BTFSC	STATUS, 0
	INCF	r0x01, F
	BTFSC	STATUS, 0
	INCF	r0x02, F
	MOVF	r0x03, W
	MOVWF	POSTDEC1
	CALL	_i2cPutByte
	INCF	FSR1L, F
	BRA	_00247_DS_
_00249_DS_:
	.line	253; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cPutByte(0xFF);
	MOVLW	0xff
	MOVWF	POSTDEC1
	CALL	_i2cPutByte
	INCF	FSR1L, F
	.line	255; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cStop();
	CALL	_i2cStop
	.line	256; /data/src/greenpower/carComputer/softwareC/picLib3.c	delayMs(10);
	MOVLW	0x00
	MOVWF	POSTDEC1
	MOVLW	0x0a
	MOVWF	POSTDEC1
	CALL	_delayMs
	MOVLW	0x02
	ADDWF	FSR1L, F
	MOVFF	PREINC1, r0x04
	MOVFF	PREINC1, r0x03
	MOVFF	PREINC1, r0x02
	MOVFF	PREINC1, r0x01
	MOVFF	PREINC1, r0x00
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__lcdPutChar	code
_lcdPutChar:
	.line	227; /data/src/greenpower/carComputer/softwareC/picLib3.c	void lcdPutChar(char c){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	MOVFF	r0x00, POSTDEC1
	MOVFF	r0x01, POSTDEC1
	MOVFF	r0x02, POSTDEC1
	MOVLW	0x02
	MOVFF	PLUSW2, r0x00
	.line	230; /data/src/greenpower/carComputer/softwareC/picLib3.c	dat[0] = c;
	MOVF	r0x00, W
	BANKSEL	_lcdPutChar_dat_1_1
	MOVWF	_lcdPutChar_dat_1_1, B
	BANKSEL	(_lcdPutChar_dat_1_1 + 1)
	.line	231; /data/src/greenpower/carComputer/softwareC/picLib3.c	dat[1] = 255;
	SETF	(_lcdPutChar_dat_1_1 + 1), B
	.line	233; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cWrite(0xC6, 0, I2cSlow8, dat, 2);
	MOVLW	HIGH(_lcdPutChar_dat_1_1)
	MOVWF	r0x01
	MOVLW	LOW(_lcdPutChar_dat_1_1)
	MOVWF	r0x00
	MOVLW	0x80
	MOVWF	r0x02
	MOVLW	0x02
	MOVWF	POSTDEC1
	MOVF	r0x02, W
	MOVWF	POSTDEC1
	MOVF	r0x01, W
	MOVWF	POSTDEC1
	MOVF	r0x00, W
	MOVWF	POSTDEC1
	MOVLW	0x00
	MOVWF	POSTDEC1
	MOVLW	0x00
	MOVWF	POSTDEC1
	MOVLW	0x00
	MOVWF	POSTDEC1
	MOVLW	0xc6
	MOVWF	POSTDEC1
	CALL	_i2cWrite
	MOVLW	0x08
	ADDWF	FSR1L, F
	.line	234; /data/src/greenpower/carComputer/softwareC/picLib3.c	delayMs(10);
	MOVLW	0x00
	MOVWF	POSTDEC1
	MOVLW	0x0a
	MOVWF	POSTDEC1
	CALL	_delayMs
	MOVLW	0x02
	ADDWF	FSR1L, F
	MOVFF	PREINC1, r0x02
	MOVFF	PREINC1, r0x01
	MOVFF	PREINC1, r0x00
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__lcdInit	code
_lcdInit:
	.line	219; /data/src/greenpower/carComputer/softwareC/picLib3.c	void lcdInit(){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	MOVFF	r0x00, POSTDEC1
	MOVFF	r0x01, POSTDEC1
	MOVFF	r0x02, POSTDEC1
	.line	220; /data/src/greenpower/carComputer/softwareC/picLib3.c	UInt8	dat[] = { 254,1,255 };
	MOVLW	0xfe
	BANKSEL	_lcdInit_dat_1_1
	MOVWF	_lcdInit_dat_1_1, B
	MOVLW	0x01
	BANKSEL	(_lcdInit_dat_1_1 + 1)
	MOVWF	(_lcdInit_dat_1_1 + 1), B
	BANKSEL	(_lcdInit_dat_1_1 + 2)
	SETF	(_lcdInit_dat_1_1 + 2), B
	.line	223; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cWrite(0xC6, 0, I2cSlow8, dat, sizeof(dat));
	MOVLW	HIGH(_lcdInit_dat_1_1)
	MOVWF	r0x01
	MOVLW	LOW(_lcdInit_dat_1_1)
	MOVWF	r0x00
	MOVLW	0x80
	MOVWF	r0x02
	MOVLW	0x03
	MOVWF	POSTDEC1
	MOVF	r0x02, W
	MOVWF	POSTDEC1
	MOVF	r0x01, W
	MOVWF	POSTDEC1
	MOVF	r0x00, W
	MOVWF	POSTDEC1
	MOVLW	0x00
	MOVWF	POSTDEC1
	MOVLW	0x00
	MOVWF	POSTDEC1
	MOVLW	0x00
	MOVWF	POSTDEC1
	MOVLW	0xc6
	MOVWF	POSTDEC1
	CALL	_i2cWrite
	MOVLW	0x08
	ADDWF	FSR1L, F
	.line	224; /data/src/greenpower/carComputer/softwareC/picLib3.c	delayMs(10);
	MOVLW	0x00
	MOVWF	POSTDEC1
	MOVLW	0x0a
	MOVWF	POSTDEC1
	CALL	_delayMs
	MOVLW	0x02
	ADDWF	FSR1L, F
	MOVFF	PREINC1, r0x02
	MOVFF	PREINC1, r0x01
	MOVFF	PREINC1, r0x00
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__i2cRead	code
_i2cRead:
	.line	183; /data/src/greenpower/carComputer/softwareC/picLib3.c	Int8 i2cRead(UInt8 chipAddress, UInt16 regAddress, I2cMode mode, UInt8* dat, UInt8 len){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	MOVFF	r0x00, POSTDEC1
	MOVFF	r0x01, POSTDEC1
	MOVFF	r0x02, POSTDEC1
	MOVFF	r0x03, POSTDEC1
	MOVFF	r0x04, POSTDEC1
	MOVFF	r0x05, POSTDEC1
	MOVFF	r0x06, POSTDEC1
	MOVFF	r0x07, POSTDEC1
	MOVFF	r0x08, POSTDEC1
	MOVLW	0x02
	MOVFF	PLUSW2, r0x00
	MOVLW	0x03
	MOVFF	PLUSW2, r0x01
	MOVLW	0x04
	MOVFF	PLUSW2, r0x02
	MOVLW	0x05
	MOVFF	PLUSW2, r0x03
	MOVLW	0x06
	MOVFF	PLUSW2, r0x04
	MOVLW	0x07
	MOVFF	PLUSW2, r0x05
	MOVLW	0x08
	MOVFF	PLUSW2, r0x06
	MOVLW	0x09
	MOVFF	PLUSW2, r0x07
	.line	184; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cWaitForIdle();
	CALL	_i2cWaitForIdle
	.line	186; /data/src/greenpower/carComputer/softwareC/picLib3.c	if(mode & 0x01)
	BTFSS	r0x03, 0
	BRA	_00212_DS_
	.line	187; /data/src/greenpower/carComputer/softwareC/picLib3.c	SSPADD = 0x02;		// Set the baud rate to 333KHz at 4MHz CLK
	MOVLW	0x02
	MOVWF	_SSPADD
	BRA	_00213_DS_
_00212_DS_:
	.line	189; /data/src/greenpower/carComputer/softwareC/picLib3.c	SSPADD = 0x09;		// Set the baud rate to 100KHz at 4MHz CLK
	MOVLW	0x09
	MOVWF	_SSPADD
_00213_DS_:
	.line	191; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cStart();
	CALL	_i2cStart
	.line	193; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cPutByte(chipAddress);
	MOVF	r0x00, W
	MOVWF	POSTDEC1
	CALL	_i2cPutByte
	INCF	FSR1L, F
	.line	194; /data/src/greenpower/carComputer/softwareC/picLib3.c	if(mode & 0x02)
	BTFSS	r0x03, 1
	BRA	_00215_DS_
	.line	195; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cPutByte(regAddress >> 8);
	MOVF	r0x02, W
	MOVWF	r0x03
	CLRF	r0x08
	MOVF	r0x03, W
	MOVWF	POSTDEC1
	CALL	_i2cPutByte
	INCF	FSR1L, F
_00215_DS_:
	.line	196; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cPutByte(regAddress);
	MOVF	r0x01, W
	MOVWF	POSTDEC1
	CALL	_i2cPutByte
	INCF	FSR1L, F
	.line	198; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cRepStart();
	CALL	_i2cRepStart
	.line	200; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cPutByte(chipAddress | 0x01);
	BSF	r0x00, 0
	MOVF	r0x00, W
	MOVWF	POSTDEC1
	CALL	_i2cPutByte
	INCF	FSR1L, F
	.line	202; /data/src/greenpower/carComputer/softwareC/picLib3.c	while(len > 1){
	MOVFF	r0x04, r0x00
	MOVFF	r0x05, r0x01
	MOVFF	r0x06, r0x02
	MOVFF	r0x07, r0x03
_00216_DS_:
	MOVLW	0x02
	SUBWF	r0x03, W
	BNC	_00218_DS_
	.line	203; /data/src/greenpower/carComputer/softwareC/picLib3.c	*dat++ = i2cGetByte(1);
	MOVLW	0x01
	MOVWF	POSTDEC1
	CALL	_i2cGetByte
	MOVWF	r0x04
	INCF	FSR1L, F
	MOVFF	r0x04, POSTDEC1
	MOVFF	r0x00, FSR0L
	MOVFF	r0x01, PRODL
	MOVF	r0x02, W
	CALL	__gptrput1
	INCF	r0x00, F
	BTFSC	STATUS, 0
	INCF	r0x01, F
	BTFSC	STATUS, 0
	INCF	r0x02, F
	.line	204; /data/src/greenpower/carComputer/softwareC/picLib3.c	len--;
	DECF	r0x03, F
	BRA	_00216_DS_
_00218_DS_:
	.line	206; /data/src/greenpower/carComputer/softwareC/picLib3.c	if(len != 0){
	MOVF	r0x03, W
	BZ	_00220_DS_
	.line	207; /data/src/greenpower/carComputer/softwareC/picLib3.c	*dat++ = i2cGetByte(0);
	MOVLW	0x00
	MOVWF	POSTDEC1
	CALL	_i2cGetByte
	MOVWF	r0x03
	INCF	FSR1L, F
	MOVFF	r0x03, POSTDEC1
	MOVFF	r0x00, FSR0L
	MOVFF	r0x01, PRODL
	MOVF	r0x02, W
	CALL	__gptrput1
_00220_DS_:
	.line	210; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cStop();
	CALL	_i2cStop
	.line	212; /data/src/greenpower/carComputer/softwareC/picLib3.c	return 0;
	CLRF	WREG
	MOVFF	PREINC1, r0x08
	MOVFF	PREINC1, r0x07
	MOVFF	PREINC1, r0x06
	MOVFF	PREINC1, r0x05
	MOVFF	PREINC1, r0x04
	MOVFF	PREINC1, r0x03
	MOVFF	PREINC1, r0x02
	MOVFF	PREINC1, r0x01
	MOVFF	PREINC1, r0x00
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__i2cWrite	code
_i2cWrite:
	.line	158; /data/src/greenpower/carComputer/softwareC/picLib3.c	Int8 i2cWrite(UInt8 chipAddress, UInt16 regAddress, I2cMode mode, UInt8* dat, UInt8 len){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	MOVFF	r0x00, POSTDEC1
	MOVFF	r0x01, POSTDEC1
	MOVFF	r0x02, POSTDEC1
	MOVFF	r0x03, POSTDEC1
	MOVFF	r0x04, POSTDEC1
	MOVFF	r0x05, POSTDEC1
	MOVFF	r0x06, POSTDEC1
	MOVFF	r0x07, POSTDEC1
	MOVLW	0x02
	MOVFF	PLUSW2, r0x00
	MOVLW	0x03
	MOVFF	PLUSW2, r0x01
	MOVLW	0x04
	MOVFF	PLUSW2, r0x02
	MOVLW	0x05
	MOVFF	PLUSW2, r0x03
	MOVLW	0x06
	MOVFF	PLUSW2, r0x04
	MOVLW	0x07
	MOVFF	PLUSW2, r0x05
	MOVLW	0x08
	MOVFF	PLUSW2, r0x06
	MOVLW	0x09
	MOVFF	PLUSW2, r0x07
	.line	159; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cWaitForIdle();
	CALL	_i2cWaitForIdle
	.line	161; /data/src/greenpower/carComputer/softwareC/picLib3.c	if(mode & 0x01)
	BTFSS	r0x03, 0
	BRA	_00191_DS_
	.line	162; /data/src/greenpower/carComputer/softwareC/picLib3.c	SSPADD = 0x02;		// Set the baud rate to 333KHz at 4MHz CLK
	MOVLW	0x02
	MOVWF	_SSPADD
	BRA	_00192_DS_
_00191_DS_:
	.line	164; /data/src/greenpower/carComputer/softwareC/picLib3.c	SSPADD = 0x09;		// Set the baud rate to 100KHz at 4MHz CLK
	MOVLW	0x09
	MOVWF	_SSPADD
_00192_DS_:
	.line	166; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cStart();
	CALL	_i2cStart
	.line	168; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cPutByte(chipAddress);
	MOVF	r0x00, W
	MOVWF	POSTDEC1
	CALL	_i2cPutByte
	INCF	FSR1L, F
	.line	169; /data/src/greenpower/carComputer/softwareC/picLib3.c	if(mode & 0x02)
	BTFSS	r0x03, 1
	BRA	_00194_DS_
	.line	170; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cPutByte(regAddress >> 8);
	MOVF	r0x02, W
	MOVWF	r0x00
	CLRF	r0x03
	MOVF	r0x00, W
	MOVWF	POSTDEC1
	CALL	_i2cPutByte
	INCF	FSR1L, F
_00194_DS_:
	.line	171; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cPutByte(regAddress);
	MOVF	r0x01, W
	MOVWF	POSTDEC1
	CALL	_i2cPutByte
	INCF	FSR1L, F
	.line	173; /data/src/greenpower/carComputer/softwareC/picLib3.c	while(len--){
	MOVFF	r0x04, r0x00
	MOVFF	r0x05, r0x01
	MOVFF	r0x06, r0x02
	MOVFF	r0x07, r0x03
_00195_DS_:
	MOVFF	r0x03, r0x04
	DECF	r0x03, F
	MOVF	r0x04, W
	BZ	_00197_DS_
	.line	174; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cPutByte(*dat++);
	MOVFF	r0x00, FSR0L
	MOVFF	r0x01, PRODL
	MOVF	r0x02, W
	CALL	__gptrget1
	MOVWF	r0x04
	INCF	r0x00, F
	BTFSC	STATUS, 0
	INCF	r0x01, F
	BTFSC	STATUS, 0
	INCF	r0x02, F
	MOVF	r0x04, W
	MOVWF	POSTDEC1
	CALL	_i2cPutByte
	INCF	FSR1L, F
	BRA	_00195_DS_
_00197_DS_:
	.line	177; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cStop();
	CALL	_i2cStop
	.line	179; /data/src/greenpower/carComputer/softwareC/picLib3.c	return 0;
	CLRF	WREG
	MOVFF	PREINC1, r0x07
	MOVFF	PREINC1, r0x06
	MOVFF	PREINC1, r0x05
	MOVFF	PREINC1, r0x04
	MOVFF	PREINC1, r0x03
	MOVFF	PREINC1, r0x02
	MOVFF	PREINC1, r0x01
	MOVFF	PREINC1, r0x00
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__i2cGetByte	code
_i2cGetByte:
	.line	139; /data/src/greenpower/carComputer/softwareC/picLib3.c	UInt8 i2cGetByte(UInt8 ack){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	MOVFF	r0x00, POSTDEC1
	MOVFF	r0x01, POSTDEC1
	MOVLW	0x02
	MOVFF	PLUSW2, r0x00
	.line	142; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cWaitForIdle();
	CALL	_i2cWaitForIdle
	.line	143; /data/src/greenpower/carComputer/softwareC/picLib3.c	SSPCON2bits.RCEN = 1;
	BSF	_SSPCON2bits, 3
	.line	144; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cWaitForIdle();
	CALL	_i2cWaitForIdle
	.line	145; /data/src/greenpower/carComputer/softwareC/picLib3.c	v = SSPBUF;
	MOVFF	_SSPBUF, r0x01
	.line	146; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cWaitForIdle();
	CALL	_i2cWaitForIdle
	.line	148; /data/src/greenpower/carComputer/softwareC/picLib3.c	if(ack)
	MOVF	r0x00, W
	BZ	_00183_DS_
	.line	149; /data/src/greenpower/carComputer/softwareC/picLib3.c	SSPCON2bits.ACKDT = 0;
	BCF	_SSPCON2bits, 5
	BRA	_00184_DS_
_00183_DS_:
	.line	151; /data/src/greenpower/carComputer/softwareC/picLib3.c	SSPCON2bits.ACKDT = 1;
	BSF	_SSPCON2bits, 5
_00184_DS_:
	.line	153; /data/src/greenpower/carComputer/softwareC/picLib3.c	SSPCON2bits.ACKEN = 1;				// Send acknowledge sequence
	BSF	_SSPCON2bits, 4
	.line	155; /data/src/greenpower/carComputer/softwareC/picLib3.c	return v;
	MOVF	r0x01, W
	MOVFF	PREINC1, r0x01
	MOVFF	PREINC1, r0x00
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__i2cPutByte	code
_i2cPutByte:
	.line	128; /data/src/greenpower/carComputer/softwareC/picLib3.c	void i2cPutByte(UInt8 v){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	MOVLW	0x02
	MOVFF	PLUSW2, _SSPBUF
	.line	134; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cWaitForIdle();
	CALL	_i2cWaitForIdle
	.line	135; /data/src/greenpower/carComputer/softwareC/picLib3.c	SSPBUF = v;
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__i2cStop	code
_i2cStop:
	.line	122; /data/src/greenpower/carComputer/softwareC/picLib3.c	void i2cStop(){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	.line	123; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cWaitForIdle();
	CALL	_i2cWaitForIdle
	.line	124; /data/src/greenpower/carComputer/softwareC/picLib3.c	SSPCON2bits.PEN = 1;
	BSF	_SSPCON2bits, 2
_00169_DS_:
	.line	125; /data/src/greenpower/carComputer/softwareC/picLib3.c	while(SSPCON2bits.PEN);
	BTFSC	_SSPCON2bits, 2
	BRA	_00169_DS_
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__i2cRepStart	code
_i2cRepStart:
	.line	116; /data/src/greenpower/carComputer/softwareC/picLib3.c	void i2cRepStart(){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	.line	117; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cWaitForIdle();
	CALL	_i2cWaitForIdle
	.line	118; /data/src/greenpower/carComputer/softwareC/picLib3.c	SSPCON2bits.RSEN = 1;
	BSF	_SSPCON2bits, 1
_00161_DS_:
	.line	119; /data/src/greenpower/carComputer/softwareC/picLib3.c	while(SSPCON2bits.RSEN);
	BTFSC	_SSPCON2bits, 1
	BRA	_00161_DS_
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__i2cStart	code
_i2cStart:
	.line	110; /data/src/greenpower/carComputer/softwareC/picLib3.c	void i2cStart(){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	.line	111; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cWaitForIdle();
	CALL	_i2cWaitForIdle
	.line	112; /data/src/greenpower/carComputer/softwareC/picLib3.c	SSPCON2bits.SEN = 1;
	BSF	_SSPCON2bits, 0
_00153_DS_:
	.line	113; /data/src/greenpower/carComputer/softwareC/picLib3.c	while(SSPCON2bits.SEN);
	BTFSC	_SSPCON2bits, 0
	BRA	_00153_DS_
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__i2cWaitForIdle	code
_i2cWaitForIdle:
	.line	99; /data/src/greenpower/carComputer/softwareC/picLib3.c	Int8 i2cWaitForIdle(){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	MOVFF	r0x00, POSTDEC1
	MOVFF	r0x01, POSTDEC1
	MOVFF	r0x02, POSTDEC1
	.line	102; /data/src/greenpower/carComputer/softwareC/picLib3.c	while(((SSPCON2 & 0x1F) | SSPSTATbits.R_W) && --to);	// Wait for idle and not writing
	MOVLW	0xff
	MOVWF	r0x00
_00138_DS_:
	MOVLW	0x1f
	ANDWF	_SSPCON2, W
	MOVWF	r0x01
	CLRF	r0x02
	BTFSC	_SSPSTATbits, 2
	INCF	r0x02, F
	MOVF	r0x02, W
	IORWF	r0x01, F
	MOVF	r0x01, W
	BZ	_00148_DS_
	DECF	r0x00, F
	MOVF	r0x00, W
	BNZ	_00138_DS_
_00148_DS_:
	MOVFF	r0x00, r0x01
	.line	105; /data/src/greenpower/carComputer/softwareC/picLib3.c	if(!to)
	MOVF	r0x00, W
	BNZ	_00142_DS_
	.line	106; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cReset();
	CALL	_i2cReset
_00142_DS_:
	.line	107; /data/src/greenpower/carComputer/softwareC/picLib3.c	return !to;
	MOVF	r0x01, W
	BSF	STATUS, 0
	TSTFSZ	WREG
	BCF	STATUS, 0
	CLRF	r0x01
	RLCF	r0x01, F
	MOVF	r0x01, W
	MOVFF	PREINC1, r0x02
	MOVFF	PREINC1, r0x01
	MOVFF	PREINC1, r0x00
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__i2cWaitForIdle1	code
_i2cWaitForIdle1:
	.line	95; /data/src/greenpower/carComputer/softwareC/picLib3.c	void i2cWaitForIdle1(){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	MOVFF	r0x00, POSTDEC1
	MOVFF	r0x01, POSTDEC1
_00129_DS_:
	.line	96; /data/src/greenpower/carComputer/softwareC/picLib3.c	while((SSPCON2 & 0x1F) | SSPSTATbits.R_W);	// Wait for idle and not writing
	MOVLW	0x1f
	ANDWF	_SSPCON2, W
	MOVWF	r0x00
	CLRF	r0x01
	BTFSC	_SSPSTATbits, 2
	INCF	r0x01, F
	MOVF	r0x01, W
	IORWF	r0x00, F
	MOVF	r0x00, W
	BNZ	_00129_DS_
	MOVFF	PREINC1, r0x01
	MOVFF	PREINC1, r0x00
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__i2cInit	code
_i2cInit:
	.line	75; /data/src/greenpower/carComputer/softwareC/picLib3.c	void i2cInit(){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	.line	76; /data/src/greenpower/carComputer/softwareC/picLib3.c	SSPSTAT &= 0x3f;
	MOVLW	0x3f
	ANDWF	_SSPSTAT, F
	.line	78; /data/src/greenpower/carComputer/softwareC/picLib3.c	SSPCON1 = 0x28;		// Set I2C master mode
	MOVLW	0x28
	MOVWF	_SSPCON1
	.line	79; /data/src/greenpower/carComputer/softwareC/picLib3.c	SSPCON2 = 0x00;
	CLRF	_SSPCON2
	.line	80; /data/src/greenpower/carComputer/softwareC/picLib3.c	SSPADD = 0x09;		// Set the baud rate to 100KHz at 4MHz
	MOVLW	0x09
	MOVWF	_SSPADD
	.line	82; /data/src/greenpower/carComputer/softwareC/picLib3.c	TRISCbits.TRISC3 = 1;	// Enable pins
	BSF	_TRISCbits, 3
	.line	83; /data/src/greenpower/carComputer/softwareC/picLib3.c	TRISCbits.TRISC4 = 1;
	BSF	_TRISCbits, 4
	.line	88; /data/src/greenpower/carComputer/softwareC/picLib3.c	PIR1bits.SSPIF = 0;	// clear SSPIF interrupt flag
	BCF	_PIR1bits, 3
	.line	89; /data/src/greenpower/carComputer/softwareC/picLib3.c	PIR2bits.BCLIF = 0;	// clear bus collision flag
	BCF	_PIR2bits, 3
	.line	91; /data/src/greenpower/carComputer/softwareC/picLib3.c	i2cReset();
	CALL	_i2cReset
	.line	92; /data/src/greenpower/carComputer/softwareC/picLib3.c	PORTBbits.RB5 = 0;
	BCF	_PORTBbits, 5
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__i2cReset	code
_i2cReset:
	.line	52; /data/src/greenpower/carComputer/softwareC/picLib3.c	void i2cReset(){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	.line	53; /data/src/greenpower/carComputer/softwareC/picLib3.c	PORTBbits.RB5 = 1;
	BSF	_PORTBbits, 5
	.line	55; /data/src/greenpower/carComputer/softwareC/picLib3.c	SSPCON1bits.SSPEN = 0;	// Disable I2C hardware
	BCF	_SSPCON1bits, 5
	.line	56; /data/src/greenpower/carComputer/softwareC/picLib3.c	TRISCbits.TRISC3 = 0;
	BCF	_TRISCbits, 3
	.line	57; /data/src/greenpower/carComputer/softwareC/picLib3.c	PORTCbits.RC3 = 1;
	BSF	_PORTCbits, 3
_00116_DS_:
	.line	60; /data/src/greenpower/carComputer/softwareC/picLib3.c	while(!PORTCbits.RC4){
	BTFSC	_PORTCbits, 4
	BRA	_00118_DS_
	.line	61; /data/src/greenpower/carComputer/softwareC/picLib3.c	PORTCbits.RC3 = 0;
	BCF	_PORTCbits, 3
	.line	62; /data/src/greenpower/carComputer/softwareC/picLib3.c	PORTCbits.RC3 = 1;
	BSF	_PORTCbits, 3
	BRA	_00116_DS_
_00118_DS_:
	.line	66; /data/src/greenpower/carComputer/softwareC/picLib3.c	TRISCbits.TRISC4 = 0;
	BCF	_TRISCbits, 4
	.line	67; /data/src/greenpower/carComputer/softwareC/picLib3.c	PORTCbits.RC4 = 0;
	BCF	_PORTCbits, 4
	.line	68; /data/src/greenpower/carComputer/softwareC/picLib3.c	PORTCbits.RC4 = 1;
	BSF	_PORTCbits, 4
	.line	70; /data/src/greenpower/carComputer/softwareC/picLib3.c	TRISCbits.TRISC3 = 1;	// Enable pins
	BSF	_TRISCbits, 3
	.line	71; /data/src/greenpower/carComputer/softwareC/picLib3.c	TRISCbits.TRISC4 = 1;
	BSF	_TRISCbits, 4
	.line	72; /data/src/greenpower/carComputer/softwareC/picLib3.c	SSPCON1bits.SSPEN = 1;	// Re-enable I2C hardware
	BSF	_SSPCON1bits, 5
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
S_testLcd__delayMs	code
_delayMs:
	.line	27; /data/src/greenpower/carComputer/softwareC/picLib3.c	void delayMs(UInt16 n){
	MOVFF	FSR2L, POSTDEC1
	MOVFF	FSR1L, FSR2L
	MOVFF	r0x00, POSTDEC1
	MOVFF	r0x01, POSTDEC1
	MOVFF	r0x02, POSTDEC1
	MOVFF	r0x03, POSTDEC1
	MOVLW	0x02
	MOVFF	PLUSW2, r0x00
	MOVLW	0x03
	MOVFF	PLUSW2, r0x01
_00105_DS_:
	.line	30; /data/src/greenpower/carComputer/softwareC/picLib3.c	while(n--){
	MOVFF	r0x00, r0x02
	MOVFF	r0x01, r0x03
	MOVLW	0xff
	ADDWF	r0x00, F
	BTFSS	STATUS, 0
	DECF	r0x01, F
	MOVF	r0x02, W
	IORWF	r0x03, W
	BZ	_00111_DS_
	.line	31; /data/src/greenpower/carComputer/softwareC/picLib3.c	for(c = 0; c < 250; c++){
	MOVLW	0xfa
	MOVWF	r0x02
_00110_DS_:
	nop 
	DECFSZ	r0x02, F
	BRA	_00110_DS_
	.line	31; /data/src/greenpower/carComputer/softwareC/picLib3.c	for(c = 0; c < 250; c++){
	BRA	_00105_DS_
_00111_DS_:
	MOVFF	PREINC1, r0x03
	MOVFF	PREINC1, r0x02
	MOVFF	PREINC1, r0x01
	MOVFF	PREINC1, r0x00
	MOVFF	PREINC1, FSR2L
	RETURN	

; ; Starting pCode block
__str_0:
	DB	0x54, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x00


; Statistics:
; code size:	 4592 (0x11f0) bytes ( 3.50%)
;           	 2296 (0x08f8) words
; udata size:	  270 (0x010e) bytes (21.09%)
; access size:	   12 (0x000c) bytes


	end
