	list      p=16F88
	#include <p16F88.inc>

charpt	EQU	0x22
charptt	EQU	0x23

scanix	EQU	0x24
scanpt	EQU	0x25
scanptt	EQU	0x26
mulsix	EQU	0x27
test	EQU	0x28

	ORG     0x000

	GOTO    main

	ORG     0x004

	BANKSEL	INTCON
	BCF		INTCON,7

	BANKSEL	scanix
	MOVLW	0x01
	MOVWF	PCLATH
	MOVF	scanix,w
	CALL	getchar
	MOVWF	PORTB

	INCF	scanix,f
	INCF	scanpt,f
	MOVF	scanpt,w
	SUBLW	0x08
	MOVWF	scanptt
	MOVF	scanptt,f
	BTFSS	STATUS,Z
	GOTO	iend

	CLRF	scanix
	CLRF	scanpt

	;x6
	INCF	charpt
	BANKSEL	PCLATH
	CLRF	PCLATH
	BANKSEL	charpt
	MOVF	charpt,w
	CALL	msg
	SUBLW	0xFF
	MOVWF	charptt
	MOVF	charptt,f
	BTFSS	STATUS,Z
	GOTO	noret

	CLRF	charpt
;	CLRF	scanix
;	CLRF	scanpt

noret:
	MOVF	charpt,w
	CALL	msg
	MOVWF	scanix
	RLF		scanix
	RLF		scanix
	RLF		scanix


iend:

	BANKSEL	INTCON
	BCF 	INTCON,	TMR0IF
	BSF		INTCON,7

	RETFIE

main

	BANKSEL	OSCTUNE
	CLRF	OSCTUNE			; Ajustement à 0
	MOVLW	b'01111110'
	MOVWF	OSCCON			; 8Mhz interne

	BANKSEL	INTCON			; OSEF des interruptions
	MOVLW	b'00100000'
	MOVWF	INTCON			; Interruption TMR0 ON
	BANKSEL	PIE1
	CLRF	PIE1
	BANKSEL	PIR1
	CLRF	PIR1
	BANKSEL	PIE2
	CLRF	PIE2
	BANKSEL	PIR2
	CLRF	PIR2

	BANKSEL	TRISA
	CLRF	TRISB
	CLRF	TRISA
	CLRF	ANSEL		; Tout en digital
	BANKSEL	PORTA
	CLRF 	PORTA		; Initialise le port A
	CLRF 	PORTB		; Initialise le port B

	BANKSEL	OPTION_REG
	CLRWDT				; Clear WDT and prescaler
	BSF		STATUS, RP0	; Bank 1 selectonnee
	MOVLW	B'01000011'	; Timer interne, prescaler sur Timer, Prescaler a 8. 7a1
	MOVWF	OPTION_REG
	BCF		STATUS, RP0	; Bank 0 selectonnee

	BANKSEL	RCSTA
	CLRF	RCSTA
	BANKSEL	SSPCON
	CLRF	SSPCON

	BANKSEL	charpt
	CLRF	charpt
	CLRF	charptt
	CLRF	scanpt
	CLRF	scanix
	CLRF	scanptt
	MOVLW	0x00
	CALL	msg
	MOVWF	scanix
	MOVF	scanix,f
	BTFSC	STATUS,Z
	GOTO pnomul
	RLF		scanix
	RLF		scanix
	RLF		scanix
pnomul:

	BANKSEL INTCON
	MOVLW   B'10100000' ; enable interrupts b3
	MOVWF   INTCON

boucle:
	GOTO 	boucle

;Message (A=1...) pervers
msg:
		ADDWF	PCL,f

        RETLW   D'6'
        RETLW   D'21'
        RETLW   D'18'
        RETLW   D'18'
        RETLW   D'20'
        RETLW   D'5'
        RETLW   D'11'
        RETLW   D'0'
        RETLW   D'0'
        RETLW   D'0'
        RETLW   D'0'
        RETLW   D'0'
        RETLW   D'0'
        RETLW   D'0'
        RETLW   0xFF

;Alphabet 8x8 + symboles
		ORG		0xFF
getchar:
		ADDWF	PCL,f
		RETLW	b'00000000'
		RETLW	b'00000000'
		RETLW	b'00000000'
		RETLW	b'00000000'
		RETLW	b'00000000'
		RETLW	b'00000000'
		RETLW	b'00000000'
		RETLW	b'00000000'

		RETLW	b'11111100'
		RETLW	b'00010010'
		RETLW	b'00010001'
		RETLW	b'00010001'
		RETLW	b'00010001'
		RETLW	b'00010010'
		RETLW	b'11111100'
		RETLW	b'00000000'

		RETLW	b'11111111'
		RETLW	b'10001001'
		RETLW	b'10001001'
		RETLW	b'10001001'
		RETLW	b'10001001'
		RETLW	b'10001001'
		RETLW	b'01110110'
		RETLW	b'00000000'

		RETLW	b'00111100'
		RETLW	b'01000010'
		RETLW	b'10000001'
		RETLW	b'10000001'
		RETLW	b'10000001'
		RETLW	b'10000001'
		RETLW	b'10000001'
		RETLW	b'00000000'

		RETLW	b'11111111'
		RETLW	b'10000001'
		RETLW	b'10000001'
		RETLW	b'10000001'
		RETLW	b'10000001'
		RETLW	b'01000010'
		RETLW	b'00111100'
		RETLW	b'00000000'

		RETLW	b'11111111'
		RETLW	b'10001001'
		RETLW	b'10001001'
		RETLW	b'10001001'
		RETLW	b'10000001'
		RETLW	b'10000001'
		RETLW	b'10000001'
		RETLW	b'00000000'

		RETLW	b'11111111'
		RETLW	b'00010001'
		RETLW	b'00010001'
		RETLW	b'00010001'
		RETLW	b'00010001'
		RETLW	b'00000001'
		RETLW	b'00000001'
		RETLW	b'00000000'

		RETLW	b'00111100'
		RETLW	b'01000010'
		RETLW	b'10000001'
		RETLW	b'10010001'
		RETLW	b'10010001'
		RETLW	b'10010001'
		RETLW	b'11110010'
		RETLW	b'00000000'

		RETLW	b'11111111'
		RETLW	b'00010000'
		RETLW	b'00010000'
		RETLW	b'00010000'
		RETLW	b'00010000'
		RETLW	b'00010000'
		RETLW	b'11111111'
		RETLW	b'00000000'

		RETLW	b'10000001'
		RETLW	b'10000001'
		RETLW	b'10000001'
		RETLW	b'11111111'
		RETLW	b'10000001'
		RETLW	b'10000001'
		RETLW	b'10000001'
		RETLW	b'00000000'

		RETLW	b'01100001'
		RETLW	b'10000001'
		RETLW	b'10000001'
		RETLW	b'01111111'
		RETLW	b'00000001'
		RETLW	b'00000001'
		RETLW	b'00000001'
		RETLW	b'00000000'

		RETLW	b'11111111'
		RETLW	b'00011000'
		RETLW	b'00100100'
		RETLW	b'00100100'
		RETLW	b'01000010'
		RETLW	b'10000001'
		RETLW	b'10000001'
		RETLW	b'00000000'

		RETLW	b'11111111'
		RETLW	b'10000000'
		RETLW	b'10000000'
		RETLW	b'10000000'
		RETLW	b'10000000'
		RETLW	b'10000000'
		RETLW	b'10000000'
		RETLW	b'00000000'

		RETLW	b'11111111'
		RETLW	b'00000010'
		RETLW	b'00000100'
		RETLW	b'00001000'
		RETLW	b'00000100'
		RETLW	b'00000010'
		RETLW	b'11111111'
		RETLW	b'00000000'

		RETLW	b'11111111'
		RETLW	b'00000010'
		RETLW	b'00000100'
		RETLW	b'00011000'
		RETLW	b'00100000'
		RETLW	b'01000000'
		RETLW	b'11111111'
		RETLW	b'00000000'

		RETLW	b'00111100'
		RETLW	b'01000010'
		RETLW	b'10000001'
		RETLW	b'10000001'
		RETLW	b'10000001'
		RETLW	b'01000010'
		RETLW	b'00111100'
		RETLW	b'00000000'

		RETLW	b'11111111'
		RETLW	b'00010001'
		RETLW	b'00010001'
		RETLW	b'00010001'
		RETLW	b'00010001'
		RETLW	b'00010001'
		RETLW	b'00001110'
		RETLW	b'00000000'

		RETLW	b'00111100'
		RETLW	b'01000010'
		RETLW	b'10000001'
		RETLW	b'11000001'
		RETLW	b'10100001'
		RETLW	b'11000010'
		RETLW	b'11111100'
		RETLW	b'00000000'

		RETLW	b'11111111'
		RETLW	b'00110001'
		RETLW	b'01010001'
		RETLW	b'01010001'
		RETLW	b'10010001'
		RETLW	b'10010001'
		RETLW	b'00001110'
		RETLW	b'00000000'

		RETLW	b'10000110'
		RETLW	b'10001001'
		RETLW	b'10001001'
		RETLW	b'10011001'
		RETLW	b'10010001'
		RETLW	b'10010001'
		RETLW	b'01100001'
		RETLW	b'00000000'

		RETLW	b'00000001'
		RETLW	b'00000001'
		RETLW	b'00000001'
		RETLW	b'11111111'
		RETLW	b'00000001'
		RETLW	b'00000001'
		RETLW	b'00000001'
		RETLW	b'00000000'

		RETLW	b'01111111'
		RETLW	b'10000000'
		RETLW	b'10000000'
		RETLW	b'10000000'
		RETLW	b'10000000'
		RETLW	b'10000000'
		RETLW	b'01111111'
		RETLW	b'00000000'

		RETLW	b'00011111'
		RETLW	b'00100000'
		RETLW	b'01000000'
		RETLW	b'10000000'
		RETLW	b'01000000'
		RETLW	b'00100000'
		RETLW	b'00011111'
		RETLW	b'00000000'

		RETLW	b'01111111'
		RETLW	b'10000000'
		RETLW	b'10000000'
		RETLW	b'01100000'
		RETLW	b'10000000'
		RETLW	b'10000000'
		RETLW	b'01111111'
		RETLW	b'00000000'

		RETLW	b'10000001'
		RETLW	b'01000010'
		RETLW	b'00100100'
		RETLW	b'00011000'
		RETLW	b'00100100'
		RETLW	b'01000010'
		RETLW	b'10000001'
		RETLW	b'00000000'

		RETLW	b'10000111'
		RETLW	b'10001000'
		RETLW	b'10001000'
		RETLW	b'10001000'
		RETLW	b'10001000'
		RETLW	b'01001000'
		RETLW	b'00111111'
		RETLW	b'00000000'

		RETLW	b'11000001'
		RETLW	b'10100001'
		RETLW	b'10010001'
		RETLW	b'10011001'
		RETLW	b'10001001'
		RETLW	b'10000101'
		RETLW	b'10000011'
		RETLW	b'00000000'

		RETLW	b'00001110'
		RETLW	b'00111111'
		RETLW	b'01111111'
		RETLW	b'11111110'
		RETLW	b'01111111'
		RETLW	b'00111111'
		RETLW	b'00001110'
		RETLW	b'00000000'

		RETLW	b'00000010'
		RETLW	b'00100001'
		RETLW	b'01000010'
		RETLW	b'01000000'
		RETLW	b'01000010'
		RETLW	b'00100001'
		RETLW	b'00000010'
		RETLW	b'00000000'

		RETLW	b'11110000'
		RETLW	b'10000000'
		RETLW	b'11111111'
		RETLW	b'10000000'
		RETLW	b'11110000'
		RETLW	b'10000000'
		RETLW	b'11110000'
		RETLW	b'00000000'

		END
