; this route is used I2C EESROM write and
; read; addressing mode is indirect
START
	BSF	RB_C,SDA
	NOP
	MOVFW	RB_C
	TRIS	RB
	BSF	RB,SCL
	NOP
	BTFSS	RB,SDA
	GOTO	^-1
	BCF	RB_C,SDA
	NOP
	MOVFW	RB_C
	TRIS	RB
	NOP
	BCF	RB,SDA
	NOP
	NOP
	NOP
	NOP
	BCF	RB,SCL
	RETLW	0H
STOP
	BCF	RB_C,SDA
	NOP
	MOVFW	RB_C
	TRIS	RB
	BCF	RB,SDA
	NOP
	NOP
	NOP
	BSF	RB,SCL
	NOP
	NOP
	NOP
	NOP
	BSF	RB,SDA
	RETLW	0
TX
	MOVLW	08H
	MOVWF	LOP1
	MOVFW	RB_C
	ANDLW	7FH
	TRIS	RB
TXLP
	BCF	RB,SCL
	BTFSC	F0,7
	GOTO	^+3
	BCF	RB,SDA
	GOTO	^+2
	BSF	RB,SDA
	BCF	3,0
	RLF	F0
	NOP
	BSF	RB,SCL
	NOP
	NOP
	NOP
	DECFSZ	LOP1
	GOTO	TXLP
	BCF	RB,SCL
ACKG
	BSF	RB_C,SDA
	NOP
	MOVFW	RB_C
	TRIS	RB
	BSF	RB,SCL
	NOP
	NOP
	NOP
	BTFSC	RB,SDA
	GOTO	ACKG
	NOP
	BCF	RB,SCL
	RETLW	0
RX
	MOVLW	08H
	MOVWF	LOP1
	BSF	RB_C,SDA
	CLRF	F0
	MOVFW	RB_C
	TRIS	RB
RXLP
	BCF	RB,SCL
	BCF	3,0
	RLF	F0
	NOP
	BSF	RB,SCL
	NOP
	NOP
	BTFSC	RB,SDA
	BSF	F0,0
	DECFSZ	LOP1
	GOTO	RXLP
	BCF	RB,SCL
	BTFSC	MARK1,LAST
	RETLW	0
	MOVFW	RB_C
	ANDLW	7FH
	TRIS	RB
	BCF	RB,SDA
	NOP
	NOP
	NOP
	BSF	RB,SCL
	NOP
	BCF	RB,SCL
	RETLW	0
RD24XX
	BCF	MARK1,LAST
	MOVLW	03H
	MOVWF	LOP2
	CALL	START
	MOVLW	SLAVE
	MOVWF	F0
	CALL	TX

	MOVFW	READ_ADD
	MOVWF	F0
	CALL	TX
	CALL	START

	MOVLW	SLAVE
	MOVWF	F0
	BSF	F0,0
	CALL	TX
RXN
	INCF	FSR
	BTFSS	MARK1,READ
	BSF	MARK1,LAS