MAIN		CALL	RFM12B
		CALL	FINISH
;---------------------------------------
RFM12B		CALL	INITPIC
		CALL	INITRFM12BTX
		MOVLW	H'FF'
		MOVWF	MESSAGEBYTE
IDE000001	CALL	SENDPACKET
		GOTO	IDE000001
		RETURN
;---------------------------------------
CHECKBYTE	MOVLW	H'FF'
		SUBWF	RECEIVEDBYTE,0
		BTFSC	STATUS,Z
		GOTO	IDE0001
		GOTO	IDE0002
IDE0001		BANKSEL	PORTD
		BSF	PORTD,7
IDE0002		RETURN		
;---------------------------------------
INITPIC		
MESSAGE1	EQU	0X20
MESSAGE2	EQU	0X21
SPIBIT		EQU	0X22
MEMPACKET	EQU	0X23
DELAY1		EQU	0X24
MESSAGEBYTE	EQU	0X25
RECEIVEDBYTE	EQU	0X26
		BANKSEL	TRISD
		BCF	TRISD,2	;MEM
		BSF	TRISD,3	;NIRQ
		BCF	TRISD,7	;LED
		BANKSEL	TRISC
		BCF	TRISC,4	;NSEL
		BCF	TRISC,5	;MOSI
		BCF	TRISC,6	;CLOCK
		BSF	TRISC,7	;MISO
		BANKSEL	PORTC
		BSF	PORTC,4
		RETURN
;--------------------------------------
INITRFM12BTX	BANKSEL	PORTC
		BSF	PORTC,4
		BSF	PORTC,5
		BCF	PORTC,6
		MOVLW	H'80'	;1
		MOVWF	MESSAGE1
		MOVLW	H'E7'
		MOVWF	MESSAGE2
		CALL	WRITECMD
		MOVLW	H'82'	;2
		MOVWF	MESSAGE1
		MOVLW	H'08'
		MOVWF	MESSAGE2
		CALL	WRITECMD
		MOVLW	H'A6'	;3
		MOVWF	MESSAGE1
		MOVLW	H'40'
		MOVWF	MESSAGE2
		CALL	WRITECMD
		MOVLW	H'C6'	;4		
		MOVWF	MESSAGE1
		MOVLW	H'47'
		MOVWF	MESSAGE2
		CALL	WRITECMD
		MOVLW	H'94'	;5
		MOVWF	MESSAGE1
		MOVLW	H'C0'
		MOVWF	MESSAGE2
		CALL	WRITECMD
		MOVLW	H'C2'	;6
		MOVWF	MESSAGE1
		MOVLW	H'AC'
		MOVWF	MESSAGE2
		CALL	WRITECMD
		MOVLW	H'CA'	;7
		MOVWF	MESSAGE1
		MOVLW	H'80'
		MOVWF	MESSAGE2
		CALL	WRITECMD
		MOVLW	H'CA'
		MOVWF	MESSAGE1
		MOVLW	H'83'
		MOVWF	MESSAGE2
		CALL	WRITECMD
		MOVLW	H'C4'	;8
		MOVWF	MESSAGE1
		MOVLW	H'9B'
		MOVWF	MESSAGE2
		CALL	WRITECMD
		MOVLW	H'98'	;9 
		MOVWF	MESSAGE1
		MOVLW	H'20'
		MOVWF	MESSAGE2
		CALL	WRITECMD
		MOVLW	H'E0'	;10
		MOVWF	MESSAGE1
		MOVLW	H'00'
		MOVWF	MESSAGE2
		CALL	WRITECMD
		MOVLW	H'C8'	;11
		MOVWF	MESSAGE1
		MOVLW	H'0E'
		MOVWF	MESSAGE2
		CALL	WRITECMD
		MOVLW	H'C0'	;12
		MOVWF	MESSAGE1
		MOVLW	H'00'
		MOVFW	MESSAGE2
		CALL	WRITECMD
		MOVLW	H'CC'	;13
		MOVWF	MESSAGE1
		MOVLW	H'17'
		MOVFW	MESSAGE2
		CALL	WRITECMD
		RETURN
;--------------------------------------
INITRFM12BRX	BANKSEL	PORTC
		BSF	PORTC,4
		BSF	PORTC,5
		BCF	PORTC,6
		MOVLW	H'80'	;1
		MOVWF	MESSAGE1
		MOVLW	H'E7'
		MOVWF	MESSAGE2
		CALL	WRITECMD
		MOVLW	H'82'	;2
		MOVWF	MESSAGE1
		MOVLW	H'81'
		MOVWF	MESSAGE2
		CALL	WRITECMD
		MOVLW	H'A6'	;3
		MOVWF	MESSAGE1
		MOVLW	H'40'
		MOVWF	MESSAGE2
		CALL	WRITECMD
		MOVLW	H'C6'	;4		
		MOVWF	MESSAGE1
		MOVLW	H'47'
		MOVWF	MESSAGE2
		CALL	WRITECMD
		MOVLW	H'94'	;5
		MOVWF	MESSAGE1
		MOVLW	H'C0'
		MOVWF	MESSAGE2
		CALL	WRITECMD
		MOVLW	H'C2'	;6
		MOVWF	MESSAGE1
		MOVLW	H'AC'
		MOVWF	MESSAGE2
		CALL	WRITECMD
		MOVLW	H'CA'	;7
		MOVWF	MESSAGE1
		MOVLW	H'81'
		MOVWF	MESSAGE2
		CALL	WRITECMD
		MOVLW	H'CA'
		MOVWF	MESSAGE1
		MOVLW	H'83'
		MOVWF	MESSAGE2
		CALL	WRITECMD
		MOVLW	H'CE'	;8
		MOVWF	MESSAGE1
		MOVLW	H'D4'
		MOVWF	MESSAGE2
		CALL	WRITECMD
		MOVLW	H'C4'	;9 
		MOVWF	MESSAGE1
		MOVLW	H'9B'
		MOVWF	MESSAGE2
		CALL	WRITECMD
		MOVLW	H'98'	;10
		MOVWF	MESSAGE1
		MOVLW	H'20'
		MOVWF	MESSAGE2
		CALL	WRITECMD
		MOVLW	H'CC'	;11
		MOVWF	MESSAGE1
		MOVLW	H'17'
		MOVWF	MESSAGE2
		CALL	WRITECMD
		MOVLW	H'E0'	;12
		MOVWF	MESSAGE1
		MOVLW	H'00'
		MOVFW	MESSAGE2
		CALL	WRITECMD
		MOVLW	H'C8'	;13
		MOVWF	MESSAGE1
		MOVLW	H'00'
		MOVFW	MESSAGE2
		CALL	WRITECMD
		MOVLW	H'C0'	;14
		MOVWF	MESSAGE1
		MOVLW	H'00'
		MOVFW	MESSAGE2
		CALL	WRITECMD
		RETURN
;--------------------------------------
SENDPACKET
		MOVLW	H'82'
		MOVWF	MESSAGE1
		MOVLW	H'28'
		MOVWF	MESSAGE2
		CALL	WRITECMD
		CALL	DELAY
		MOVLW	H'82'
		MOVWF	MESSAGE1
		MOVLW	H'38'
		MOVWF	MESSAGE2
		CALL	WRITECMD
		NOP
		NOP
		MOVLW	H'AA'
		MOVWF	MESSAGE2
		CALL	SENDMESSAGE
		MOVLW	H'AA'
		MOVWF	MESSAGE2
		CALL	SENDMESSAGE
		MOVLW	H'2D'
		MOVWF	MESSAGE2
		CALL	SENDMESSAGE
		MOVLW	H'D4'
		MOVWF	MESSAGE2
		CALL	SENDMESSAGE
		MOVLW	D'16'
		MOVWF	MEMPACKET
IDE03		DECFSZ	MEMPACKET,F
		GOTO	IDE01
		GOTO	IDE02
IDE01		MOVFW	MESSAGEBYTE
		MOVWF	MESSAGE2
		CALL	SENDMESSAGE
		GOTO	IDE03
IDE02		MOVLW	H'AA'
		MOVWF	MESSAGE2
		CALL	SENDMESSAGE
		MOVLW	H'AA'
		MOVWF	MESSAGE2
		CALL	SENDMESSAGE
		MOVLW	H'82'
		MOVWF	MESSAGE1
		MOVLW	H'08'
		MOVWF	MESSAGE2
		CALL	WRITECMD
		CALL	DELAY
		CALL	DELAY
		CALL	DELAY
		RETURN
;---------------------------------------
RECEIVEBYTE
		BANKSEL	PORTD
IDE00001	BTFSC	PORTD,3
		GOTO	IDE00001
		CALL	RDFIFO
		CALL	FIFORESET
		RETURN
;---------------------------------------
RDFIFO		BANKSEL	PORTC
		BCF	PORTC,6
		BCF	PORTC,5
		BCF	PORTC,4
		MOVLW	D'16'
		MOVWF	SPIBIT
IDE003		DECFSZ	SPIBIT,F
		GOTO	IDE001
		GOTO	IDE002
IDE001		BSF	PORTC,6
		NOP
		NOP
		BCF	PORTC,6
		NOP
		NOP
		GOTO	IDE003
IDE002		MOVLW	D'8'
		MOVWF	SPIBIT
IDE009		DECFSZ	SPIBIT,F
		GOTO	IDE004
		GOTO	IDE005
IDE004		BTFSS	PORTC,7
		GOTO	IDE006
		GOTO	IDE007
IDE006		BCF	STATUS,C
		GOTO	IDE008
IDE007		BSF	STATUS,C
IDE008		RLF	RECEIVEDBYTE,1
		BSF	PORTC,6
		NOP
		NOP
		BCF	PORTC,6
		NOP
		NOP
		GOTO	IDE009
IDE005		BSF	PORTC,4
		RETURN
;---------------------------------------
FIFORESET	MOVLW	H'CA'
		MOVWF	MESSAGE1
		MOVLW	H'81'
		MOVWF	MESSAGE2
		CALL	WRITECMD
		MOVLW	H'CA'
		MOVWF	MESSAGE1
		MOVLW	H'83'
		MOVWF	MESSAGE2
		CALL	WRITECMD
		RETURN
;---------------------------------------
SENDMESSAGE
		MOVLW	H'B8'
		MOVWF	MESSAGE1
		BANKSEL	PORTC
LOOP		BCF	PORTC,6
		BCF	PORTC,4
		BCF	PORTC,5
		BSF	PORTC,6
		BTFSS	PORTC,7
		GOTO	IDE111
		GOTO	IDE112
IDE111		BCF	PORTC,6
		BSF	PORTC,5
		BSF	PORTC,4
		CALL	WRITECMD
		GOTO	IDE113
IDE112		BCF	PORTC,6
		BSF	PORTC,5
		BSF	PORTC,4
		GOTO	LOOP
IDE113		RETURN
;---------------------------------------
DELAY		MOVLW	D'255'
		MOVWF	DELAY1
COUNTDOWN	DECFSZ	DELAY1,F
		GOTO	COUNTDOWN
		RETURN
;---------------------------------------
WRITECMD	
		BANKSEL	PORTC
		BCF	PORTC,6
		BCF	PORTC,4
		MOVLW	D'8'
		MOVWF	SPIBIT
IDE0		RLF	MESSAGE1,1
		BTFSS	STATUS,C
		GOTO	IDE2
		GOTO	IDE1
IDE1		CALL	WRITE1
		GOTO	IDE3
IDE2		CALL	WRITE0
		GOTO	IDE3
IDE3		DECFSZ	SPIBIT,F
		GOTO	IDE0
		MOVLW	D'8'
		MOVWF	SPIBIT
IDE4		RLF	MESSAGE2,1
		BTFSS	STATUS,C
		GOTO	IDE6
		GOTO	IDE5
IDE5		CALL	WRITE1
		GOTO	IDE7
IDE6		CALL	WRITE0
		GOTO	IDE7
IDE7		DECFSZ	SPIBIT,F
		GOTO	IDE4
		BCF	PORTC,6
		BSF	PORTC,4
		RETURN
;--------------------------------------
WRITE1		
		BANKSEL	PORTC
		BSF	PORTC,5
		BCF	PORTC,6
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		BSF	PORTC,6
		NOP
		NOP
		RETURN
;--------------------------------------
WRITE0	
		BANKSEL	PORTC
		BCF	PORTC,5
		BCF	PORTC,6
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		BSF	PORTC,6
		NOP
		NOP
		RETURN
;------------------------------------------
FINISH
		END		