; Source created with Parsic Version 3.x

; at              : 2009.10.14. 21:10:07


; Project File    : C:\Documents and Settings\All Users\Asztal\homero.PIC

; Project Version : 1.0.9

; Created         : 2009.04.16. 14:03:00

; Last change     : 2009.10.14. 21:07:00

	PROCESSOR 16F876A

	INCLUDE P16F876A.INC

	RADIX DEC


	__IDLOCS H'0100'

	__CONFIG _CP_OFF & _PWRTE_ON & _WDT_ON & _BODEN_ON & _XT_OSC & _LVP_OFF & _CPD_OFF & _DEBUG_OFF

; Diverses

ZERO	EQU Z	; ZERO-Flag
CARRY	 EQU C	; CARRY-Flag


; Variable

ADC0	= 32	; located in Bank 0
ADC0_HI	= 33	; located in Bank 0
ADC1	= 34	; located in Bank 0
ADC1_HI	= 35	; located in Bank 0
ADC2	= 36	; located in Bank 0
ADC2_HI	= 37	; located in Bank 0
ADC3	= 38	; located in Bank 0
ADC3_HI	= 39	; located in Bank 0
S1	= 40	; located in Bank 0
S1_HI	= 41	; located in Bank 0
S29	= 42	; located in Bank 0
S3	= 43	; located in Bank 0
S3_HI	= 44	; located in Bank 0
S0	= 45	; located in Bank 0
S0_HI	= 46	; located in Bank 0
S2	= 47	; located in Bank 0
S2_HI	= 48	; located in Bank 0
S4	= 49	; located in Bank 0
S4_HI	= 50	; located in Bank 0
S5	= 51	; located in Bank 0
S5_HI	= 52	; located in Bank 0
S6	= 53	; located in Bank 0
S6_HI	= 54	; located in Bank 0
S16	= 55	; located in Bank 0
S16_HI	= 56	; located in Bank 0
S17	= 57	; located in Bank 0
S17_HI	= 58	; located in Bank 0
S30	= 59	; located in Bank 0
S18	= 60	; located in Bank 0
S18_HI	= 61	; located in Bank 0
S19	= 62	; located in Bank 0
S19_HI	= 63	; located in Bank 0
S20	= 64	; located in Bank 0
S20_HI	= 65	; located in Bank 0
S31	= 66	; located in Bank 0
S21	= 67	; located in Bank 0
S21_HI	= 68	; located in Bank 0
S10	= 69	; located in Bank 0
S10_HI	= 70	; located in Bank 0
S22	= 71	; located in Bank 0
S22_HI	= 72	; located in Bank 0
S11	= 73	; located in Bank 0
S11_HI	= 74	; located in Bank 0
S7	= 75	; located in Bank 0
S7_HI	= 76	; located in Bank 0
S25	= 77	; located in Bank 0
S25_HI	= 78	; located in Bank 0
S12	= 79	; located in Bank 0
S12_HI	= 80	; located in Bank 0
S23	= 81	; located in Bank 0
S23_HI	= 82	; located in Bank 0
S13	= 83	; located in Bank 0
S13_HI	= 84	; located in Bank 0
S8	= 85	; located in Bank 0
S8_HI	= 86	; located in Bank 0
S26	= 87	; located in Bank 0
S26_HI	= 88	; located in Bank 0
S14	= 89	; located in Bank 0
S14_HI	= 90	; located in Bank 0
S24	= 91	; located in Bank 0
S24_HI	= 92	; located in Bank 0
S15	= 93	; located in Bank 0
S15_HI	= 94	; located in Bank 0
S9	= 95	; located in Bank 0
S9_HI	= 96	; located in Bank 0
S27	= 97	; located in Bank 0
S27_HI	= 98	; located in Bank 0
TR1	= 99	; located in Bank 0
TR1_HI	= 100	; located in Bank 0
LT1_FD	= 101	; located in Bank 0
LT2_FD	= 102	; located in Bank 0
LT3_FD	= 103	; located in Bank 0
LT4_FD	= 104	; located in Bank 0
LT5_FD	= 105	; located in Bank 0
LT6_FD	= 106	; located in Bank 0
LT7_FD	= 107	; located in Bank 0
LT8_FD	= 108	; located in Bank 0
LT9_FD	= 109	; located in Bank 0
LT10_FD	= 110	; located in Bank 0
LT11_FD	= 111	; located in Bank 0
LT12_FD	= 112	; located in Bank 0, 1, 2, 3
LT13_FD	= 113	; located in Bank 0, 1, 2, 3
SYS_TMP1	= 114	; located in Bank 0, 1, 2, 3
SYS_TMP2	= 115	; located in Bank 0, 1, 2, 3
SYS_TMP3	= 116	; located in Bank 0, 1, 2, 3
SYS_TMP4	= 117	; located in Bank 0, 1, 2, 3
SYS_TMP5	= 118	; located in Bank 0, 1, 2, 3
SYS_TMP6	= 119	; located in Bank 0, 1, 2, 3
SYS_TMP7	= 120	; located in Bank 0, 1, 2, 3
SYS_TMP9	= 121	; located in Bank 0, 1, 2, 3
SYS_TMP10	= 122	; located in Bank 0, 1, 2, 3
SYS_WSAV	= 123	; located in Bank 0, 1, 2, 3
SYS_SSAV	= 124	; located in Bank 0, 1, 2, 3
SYS_PSAV	= 125	; located in Bank 0, 1, 2, 3
SYS_FSAV	= 126	; located in Bank 0, 1, 2, 3
LT14_FD	= 160	; located in Bank 1
LT15_FD	= 161	; located in Bank 1
LT16_FD	= 162	; located in Bank 1
LT17_FD	= 163	; located in Bank 1
LT18_FD	= 164	; located in Bank 1
LT19_FD	= 165	; located in Bank 1
LT20_FD	= 166	; located in Bank 1
LT21_FD	= 167	; located in Bank 1
LT22_FD	= 168	; located in Bank 1
LT23_FD	= 169	; located in Bank 1
LT24_FD	= 170	; located in Bank 1
S28	= 171	; located in Bank 1
ZV1	= 172	; located in Bank 1
ZV1_FD	= 173	; located in Bank 1
LT25_FD	= 174	; located in Bank 1
LT26_FD	= 175	; located in Bank 1
MF1	= 176	; located in Bank 1
MF1_HI	= 177	; located in Bank 1
MF1_FD	= 178	; located in Bank 1
S32	= 179	; located in Bank 1
OS1_FD	= 180	; located in Bank 1
RAM	= 181	; located in Bank 1

	ERRORLEVEL -302	; disable warning (Bankswitching)
	ERRORLEVEL -306	; disable warning (Pageswitching)

;****************************************
;Programmanfang
;****************************************

	ORG 0

	CLRF STATUS	; switch to RAM-Bank 0
	MOVLW HIGH SYS_INIT	; set page
	MOVWF PCLATH
	GOTO SYS_INIT

;****************************************
;Interrupt-Adress
;****************************************

	MOVWF SYS_WSAV	; save register
	SWAPF STATUS,W
	CLRF STATUS	; bank 0
	MOVWF SYS_SSAV
	MOVFW FSR
	MOVWF SYS_FSAV
	MOVFW PCLATH
	MOVWF SYS_PSAV
	CLRF PCLATH


	BTFSS INTCON,T0IF	; TMR0 ?
	GOTO NOTMR0INT
	BCF INTCON,T0IF	; Interrupt quitieren

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	INCFSZ TR1,F
	GOTO SYS_INT_LABEL_0
	INCF TR1_HI,F

SYS_INT_LABEL_0
	BSF STATUS,RP0	; Bank 1
	INCFSZ MF1,F
	GOTO SYS_INT_LABEL_1
	INCF MF1_HI,F

SYS_INT_LABEL_1
NOTMR0INT


EXITINT
	MOVFW SYS_PSAV
	MOVWF PCLATH

	MOVFW SYS_FSAV
	MOVWF FSR
	SWAPF SYS_SSAV,W	; Register zurück
	MOVWF STATUS
	SWAPF SYS_WSAV,F
	SWAPF SYS_WSAV,W

	RETFIE


;****************************************
; Multiplikation 16 - Bit
; OP1 = SYS_TMP1,2
; OP2 = SYS_TMP3,4
;****************************************

SYSMUL16
	MOVLW 16	; set loopcounter
	MOVWF SYS_TMP7

	CLRF SYS_TMP5	; clear result
	CLRF SYS_TMP6

SYSMUL16_1
	RRF SYS_TMP4,F
	RRF SYS_TMP3,F

	BTFSS STATUS,CARRY
	GOTO SYSMUL16_2
	MOVFW SYS_TMP2	; add High-Byte
	ADDWF SYS_TMP6,F
	MOVFW SYS_TMP1	; add Low-Byte
	ADDWF SYS_TMP5,F
	BTFSC STATUS,CARRY	; carry ?
	INCF SYS_TMP6,F	; add 256 to result

SYSMUL16_2
	BCF STATUS,CARRY
	RLF SYS_TMP1,F
	RLF SYS_TMP2,F
	DECFSZ SYS_TMP7,F

	GOTO SYSMUL16_1

	RETURN

;****************************************
; Division 16 - Bit
; OP1 = SYS_TMP1,2
; OP2 = SYS_TMP3,4
;****************************************

SYSDIV16
	MOVFW SYS_TMP3	; Division durch 0 ?
	IORWF SYS_TMP4,W
	BTFSC STATUS,ZERO
	GOTO SYSDIV16_ERROR

	CLRF SYS_TMP5	; Ergebnis löschen
	CLRF SYS_TMP6
	MOVLW 1
	MOVWF SYS_TMP7
SYSDIV16_0
	BTFSC SYS_TMP4,7	; OP2 linksbündig
	GOTO SYSDIV16_1
	INCF SYS_TMP7,F
	BCF STATUS,CARRY
	RLF SYS_TMP3,F
	RLF SYS_TMP4,F
	GOTO SYSDIV16_0

SYSDIV16_1
	MOVFW SYS_TMP4	; OP1 und OP2 vergleichen
	SUBWF SYS_TMP2,W	; F-W -> W
	BTFSS STATUS,ZERO
	GOTO SYSDIV16_2
	MOVFW SYS_TMP3
	SUBWF SYS_TMP1,W	; F-W -> W

SYSDIV16_2
	BTFSS STATUS,CARRY
	GOTO SYSDIV16_3
	MOVFW SYS_TMP4	; OP1-OP2
	SUBWF SYS_TMP2,F	; F-W -> F
	MOVFW SYS_TMP3
	SUBWF SYS_TMP1,F	; F-W -> F
	BTFSS STATUS,CARRY
	DECF SYS_TMP2,F
	BSF STATUS,CARRY
SYSDIV16_3
	RLF SYS_TMP5,F	; Ergebnis aktualisieren
	RLF SYS_TMP6,F
	RRF SYS_TMP4,F	; OP2 nach rechts schieben
	RRF SYS_TMP3,F
	DECFSZ SYS_TMP7,F	; Zähler -1
	GOTO SYSDIV16_1

	RETURN

SYSDIV16_ERROR
	MOVLW 255
	MOVWF SYS_TMP5
	MOVWF SYS_TMP6
	RETURN


;****************************************
; Subroutines
;****************************************

;****************************************
; Direct jump into a table
;****************************************

SYSTABJMP
	BCF INTCON,GIE
	BTFSC INTCON,GIE
	GOTO SYSTABJMP
	MOVFW SYS_TMP2
	MOVWF PCLATH
	MOVFW SYS_TMP1
	MOVWF PCL
;***************************************************
; Read  -> AN0
;***************************************************

READ_AN0

	MOVLW B'100'
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVWF ADCON1
	BSF TRISA,0
	BSF ADCON1,ADFM	; Right-Justified

	MOVLW B'11000001'	; CH0
	BCF STATUS,RP0	; Bank 0
	MOVWF ADCON0
	MOVLW 5
	MOVWF SYS_TMP1

SYS_ADC_LABEL_0
	DECFSZ SYS_TMP1,F
	GOTO SYS_ADC_LABEL_0

	BSF ADCON0,GO	; Start convert

SYS_ADC_LABEL_1

	BTFSC ADCON0,GO	; ready ?
	GOTO SYS_ADC_LABEL_1	; no

	BSF STATUS,RP0	; Bank 1
	MOVFW ADRESL
	BCF STATUS,RP0	; Bank 0
	MOVWF ADC0
	MOVFW ADRESH
	MOVWF ADC0_HI

	MOVLW 6
	BSF STATUS,RP0	; Bank 1
	MOVWF ADCON1
	MOVLW B'11111111'
	MOVWF TRISA
	RETURN

;***************************************************
; Read  -> AN1
;***************************************************

READ_AN1

	MOVLW B'100'
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVWF ADCON1
	BSF TRISA,1
	BSF ADCON1,ADFM	; Right-Justified

	MOVLW B'11001001'	; CH1
	BCF STATUS,RP0	; Bank 0
	MOVWF ADCON0
	MOVLW 5
	MOVWF SYS_TMP1

SYS_ADC_LABEL_2
	DECFSZ SYS_TMP1,F
	GOTO SYS_ADC_LABEL_2

	BSF ADCON0,GO	; Start convert

SYS_ADC_LABEL_3

	BTFSC ADCON0,GO	; ready ?
	GOTO SYS_ADC_LABEL_3	; no

	BSF STATUS,RP0	; Bank 1
	MOVFW ADRESL
	BCF STATUS,RP0	; Bank 0
	MOVWF ADC1
	MOVFW ADRESH
	MOVWF ADC1_HI

	MOVLW 6
	BSF STATUS,RP0	; Bank 1
	MOVWF ADCON1
	MOVLW B'11111111'
	MOVWF TRISA
	RETURN

;***************************************************
; Read  -> AN2
;***************************************************

READ_AN2

	MOVLW B'010'
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVWF ADCON1
	BSF TRISA,2
	BSF ADCON1,ADFM	; Right-Justified

	MOVLW B'11010001'	; CH2
	BCF STATUS,RP0	; Bank 0
	MOVWF ADCON0
	MOVLW 5
	MOVWF SYS_TMP1

SYS_ADC_LABEL_4
	DECFSZ SYS_TMP1,F
	GOTO SYS_ADC_LABEL_4

	BSF ADCON0,GO	; Start convert

SYS_ADC_LABEL_5

	BTFSC ADCON0,GO	; ready ?
	GOTO SYS_ADC_LABEL_5	; no

	BSF STATUS,RP0	; Bank 1
	MOVFW ADRESL
	BCF STATUS,RP0	; Bank 0
	MOVWF ADC2
	MOVFW ADRESH
	MOVWF ADC2_HI

	MOVLW 6
	BSF STATUS,RP0	; Bank 1
	MOVWF ADCON1
	MOVLW B'11111111'
	MOVWF TRISA
	RETURN

;***************************************************
; Read  -> AN3
;***************************************************

READ_AN3

	MOVLW B'010'
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVWF ADCON1
	BSF TRISA,3
	BSF ADCON1,ADFM	; Right-Justified

	MOVLW B'11011001'	; CH3
	BCF STATUS,RP0	; Bank 0
	MOVWF ADCON0
	MOVLW 5
	MOVWF SYS_TMP1

SYS_ADC_LABEL_6
	DECFSZ SYS_TMP1,F
	GOTO SYS_ADC_LABEL_6

	BSF ADCON0,GO	; Start convert

SYS_ADC_LABEL_7

	BTFSC ADCON0,GO	; ready ?
	GOTO SYS_ADC_LABEL_7	; no

	BSF STATUS,RP0	; Bank 1
	MOVFW ADRESL
	BCF STATUS,RP0	; Bank 0
	MOVWF ADC3
	MOVFW ADRESH
	MOVWF ADC3_HI

	MOVLW 6
	BSF STATUS,RP0	; Bank 1
	MOVWF ADCON1
	MOVLW B'11111111'
	MOVWF TRISA
	RETURN

;***************************************************
; Subroutines for LB1
;***************************************************

LCD_LB1_INIT
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF PORTB,4	; ir-register
LCD_LB1_L1
	CALL LCD_LB1_OUT4
	CLRWDT
	DECFSZ SYS_TMP1,F
	GOTO LCD_LB1_L1

	MOVFW PORTB
	ANDLW H'F0'
	IORLW B'0011'	; Function Set
	MOVWF PORTB

	BSF PORTB,5	; write
	GOTO $+1
	BCF PORTB,5

	BSF SYS_TMP1,5	; wait
LCD_LB1_L2
	CALL LCD_LB1_OUT4
	CLRWDT
	DECFSZ SYS_TMP1,F
	GOTO LCD_LB1_L2

	BSF PORTB,5	; write
	GOTO $+1
	BCF PORTB,5

	CALL LCD_LB1_OUT4

	BSF PORTB,5	; write
	GOTO $+1
	BCF PORTB,5

	CALL LCD_LB1_OUT4

	BCF PORTB,0	; 4-Bit Interface

	BSF PORTB,5	; write
	GOTO $+1
	BCF PORTB,5

	CALL LCD_LB1_OUT4

	MOVLW B'00101000'	; Function Set 4-Bit,2-Lines
	CALL LCD_LB1_OUT

	MOVLW B'00001100'	; Display on, Cursor off, Blink off
	CALL LCD_LB1_OUT

	MOVLW B'00000110'	; Entrymode set
	CALL LCD_LB1_OUT

LCD_LB1_CLR
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF PORTB,4	; ir-register
	MOVLW B'00000001'	; Display clear
	CALL LCD_LB1_OUT

	BSF SYS_TMP1,5	; wait
LCD_LB1_L3
	CALL LCD_LB1_OUT4
	CLRWDT
	DECFSZ SYS_TMP1,F
	GOTO LCD_LB1_L3
	GOTO LCD_LB1_OUT4

;***************************************************

LCD_LB1_GOTOXY
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF PORTB,4	; ir-register
	MOVLW H'40'
	BTFSC SYS_TMP2,0	; Ypos
	ADDWF SYS_TMP1,F
	BSF SYS_TMP1,7	; select dd-ram
	GOTO LCD_LB1_OUT1

;***************************************************

LCD_LB1_WRITESTR
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BSF PORTB,4	; dd-ram
LCD_LB1_WRITESTR1
	CALL LCD_LB1_CHAROUT
	BSF INTCON,GIE
	ANDLW H'FF'	; last is zero
	BTFSC STATUS,ZERO
	RETURN

	MOVWF SYS_TMP1
	MOVLW HIGH LCD_LB1_OUT1	; set page
	MOVWF PCLATH
	CLRWDT
	CALL LCD_LB1_OUT1
	INCFSZ SYS_TMP4,F	; next char
	GOTO LCD_LB1_WRITESTR1
	INCF SYS_TMP5,F	; next page
	GOTO LCD_LB1_WRITESTR1

LCD_LB1_CHAROUT
	BCF INTCON,GIE
	MOVFW SYS_TMP5
	MOVWF PCLATH
	MOVFW SYS_TMP4
	MOVWF PCL

;***************************************************

LCD_LB1_DEZO10000

	MOVLW LOW 10000
	MOVWF SYS_TMP1
	MOVLW HIGH 10000
	MOVWF SYS_TMP2

	CALL LCD_LB1_CONVERTDEZ
	MOVF SYS_TMP9,F
	BTFSS STATUS,ZERO
	GOTO LCD_LB1_DEZO1000
	CALL LCD_LB1_CHECKNULL

LCD_LB1_DEZO1000

	MOVLW LOW 1000
	MOVWF SYS_TMP1
	MOVLW HIGH 1000
	MOVWF SYS_TMP2

	CALL LCD_LB1_CONVERTDEZ
	MOVF SYS_TMP9,F
	BTFSS STATUS,ZERO
	GOTO LCD_LB1_DEZO100
	CALL LCD_LB1_CHECKNULL

LCD_LB1_DEZO100

	MOVLW LOW 100
	MOVWF SYS_TMP1
	CLRF SYS_TMP2

	CALL LCD_LB1_CONVERTDEZ
	MOVF SYS_TMP9,F
	BTFSS STATUS,ZERO
	GOTO LCD_LB1_DEZO10
	CALL LCD_LB1_CHECKNULL

LCD_LB1_DEZO10

	MOVLW LOW 10
	MOVWF SYS_TMP1
	CLRF SYS_TMP2

	CALL LCD_LB1_CONVERTDEZ
	MOVF SYS_TMP9,F
	BTFSS STATUS,ZERO
	GOTO LCD_LB1_DEZO1
	CALL LCD_LB1_CHECKNULL

LCD_LB1_DEZO1
	MOVLW 48
	ADDWF SYS_TMP4,W
	GOTO LCD_LB1_WRITECHAR

;***************************************************

LCD_LB1_CONVERTDEZ
	MOVF SYS_TMP9,F
	BTFSS STATUS,ZERO
	DECF SYS_TMP9,F
	CLRF SYS_TMP6
LCD_LB1_CONVERTDEZ2
	INCF SYS_TMP6,F

	MOVFW SYS_TMP1
	SUBWF SYS_TMP4,F

	MOVFW SYS_TMP2
	BTFSS STATUS,CARRY
	INCFSZ SYS_TMP2,W
	SUBWF SYS_TMP5,F
	BTFSC STATUS,CARRY
	GOTO LCD_LB1_CONVERTDEZ2

	MOVFW SYS_TMP2
	ADDWF SYS_TMP5,F
	MOVFW SYS_TMP1
	ADDWF SYS_TMP4,F
	BTFSC STATUS,CARRY
	INCF SYS_TMP5,F

	DECF SYS_TMP6,W
	BTFSS STATUS,ZERO
	BSF SYS_TMP10,0
	RETURN

;***************************************************

LCD_LB1_CONVERTHEX
	ANDLW 15
	MOVWF SYS_TMP1
	MOVLW 48
	ADDWF SYS_TMP1,F
	MOVLW 58
	SUBWF SYS_TMP1,W
	BTFSS STATUS,CARRY
	GOTO $+3
	MOVLW 7
	ADDWF SYS_TMP1,F
	MOVFW SYS_TMP1

;***************************************************

LCD_LB1_WRITECHAR
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BSF PORTB,4	; dd-ram

;***************************************************

LCD_LB1_OUT
	MOVWF SYS_TMP1	; store
LCD_LB1_OUT1
	CLRF SYS_TMP3	; LCDWriteStr (first nibble)
LCD_LB1_OUT2
	SWAPF SYS_TMP1,W	;high nibble
LCD_LB1_OUT3
	ANDLW H'0F'	; mask
	MOVWF SYS_TMP2	; store
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	MOVFW PORTB	; load port
	ANDLW H'F0'	; mask
	IORWF SYS_TMP2,W	; add cmd
	MOVWF PORTB	; out

	BSF PORTB,5	; E high
	GOTO $+1
	BCF PORTB,5	; E low

	BTFSC SYS_TMP3,3	; ready ?
	GOTO LCD_LB1_OUT4	; yes
	BSF SYS_TMP3,3	; second nibble
	MOVFW SYS_TMP1
	GOTO LCD_LB1_OUT3	; next nibble

LCD_LB1_OUT4
LCD_LB1_OUTV
	DECFSZ SYS_TMP3,F
	GOTO LCD_LB1_OUTV
	RETURN

;***************************************************

LCD_LB1_CHECKNULL
	BTFSS STATUS,ZERO
	DECF SYS_TMP9,F
	MOVWF SYS_TMP1
	BTFSS STATUS,ZERO
	BSF SYS_TMP10,0
	MOVLW 48
	BTFSC SYS_TMP10,0
	ADDWF SYS_TMP1,f
	MOVLW 32
	BTFSS SYS_TMP10,0
	ADDWF SYS_TMP1,F
	MOVFW SYS_TMP1
	GOTO LCD_LB1_WRITECHAR
; 0192

;****************************************
;Initialisierung
;****************************************


SYS_INIT

	MOVLW B'00100000'
	MOVWF INTCON

; Set output before direction

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	MOVLW B'00000000'
	MOVWF PORTA

	MOVLW B'00000000'
	MOVWF PORTB

	MOVLW B'00000000'
	MOVWF PORTC

	MOVLW 15
	BSF STATUS,RP0	; Bank 1
	MOVWF OPTION_REG

	MOVLW 6	; all Digital
	MOVWF ADCON1

; Richtung setzen

	MOVLW B'11111111'
	MOVWF TRISA

	MOVLW B'11000000'
	MOVWF TRISB

	MOVLW B'11111111'
	MOVWF TRISC

	MOVLW 7	; Comparators off
	MOVWF CMCON
; init vars


; Clear RAM

	BCF STATUS,IRP
	MOVLW 32
	MOVWF FSR
CR1
	CLRF INDF
	INCF FSR,F
	
	BTFSS FSR,7
	GOTO CR1
	BSF FSR,5
CR2
	CLRF INDF
	INCF FSR,F
	MOVLW H'F0'
	SUBWF FSR,W
	BTFSS STATUS,ZERO
	GOTO CR2
	BSF STATUS,IRP
	MOVLW 16
	MOVWF FSR
CR3
	CLRF INDF
	INCF FSR,F
	MOVLW H'70'
	SUBWF FSR,W
	BTFSS STATUS,ZERO
	GOTO CR3
	MOVLW 144
	MOVWF FSR
CR4
	CLRF INDF
	INCF FSR,F
	MOVLW H'F0'
	SUBWF FSR,W
	BTFSS STATUS,ZERO
	GOTO CR4


;***************************************************
; Init LCD -> LB1
;***************************************************

	CALL LCD_LB1_INIT

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	CLRF TMR0
	BCF INTCON,T0IF
	BSF INTCON,GIE	; Interrupt freigeben

;**********************************
;******* Haupt-Programm ***********
;**********************************

MAIN

	CLRWDT

	CALL READ_AN0
	CALL READ_AN1
	CALL READ_AN2
	CALL READ_AN3
;***************************************************
; Limiter -> LM1
;***************************************************

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF S29,0
	BCF S29,1
	MOVFW ADC0
	MOVWF S1
	MOVFW ADC0_HI
	MOVWF S1_HI

	MOVLW HIGH 893
	SUBWF S1_HI,W
	BTFSS STATUS,ZERO
	GOTO LABEL_LM1_CHECK1
	MOVLW LOW 893
	SUBWF S1,W
LABEL_LM1_CHECK1
	BTFSS STATUS,CARRY
	GOTO LABEL_LM1_BOTTOM
	BTFSC STATUS,ZERO
	GOTO LABEL_LM1_BOTTOM
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BSF S29,0
	MOVLW LOW 893
	MOVWF S1
	MOVLW HIGH 893
	MOVWF S1_HI
	GOTO LABEL_LM1_EXIT
LABEL_LM1_BOTTOM
	MOVLW HIGH 463
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	SUBWF S1_HI,W
	BTFSS STATUS,ZERO
	GOTO LABEL_LM1_CHECK2
	MOVLW LOW 463
	SUBWF S1,W
LABEL_LM1_CHECK2
	BTFSC STATUS,CARRY
	GOTO LABEL_LM1_EXIT
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BSF S29,1
	MOVLW LOW 463
	MOVWF S1
	MOVLW HIGH 463
	MOVWF S1_HI
LABEL_LM1_EXIT

;***************************************************
; Limiter -> LM2
;***************************************************

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF S29,6
	MOVFW ADC0
	MOVWF S3
	MOVFW ADC0_HI
	MOVWF S3_HI

	MOVLW HIGH 459
	SUBWF S3_HI,W
	BTFSS STATUS,ZERO
	GOTO LABEL_LM2_CHECK1
	MOVLW LOW 459
	SUBWF S3,W
LABEL_LM2_CHECK1
	BTFSS STATUS,CARRY
	GOTO LABEL_LM2_BOTTOM
	BTFSC STATUS,ZERO
	GOTO LABEL_LM2_BOTTOM
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BSF S29,6
	MOVLW LOW 459
	MOVWF S3
	MOVLW HIGH 459
	MOVWF S3_HI
	GOTO LABEL_LM2_EXIT
LABEL_LM2_BOTTOM
	MOVLW HIGH 400
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	SUBWF S3_HI,W
	BTFSS STATUS,ZERO
	GOTO LABEL_LM2_CHECK2
	MOVLW LOW 400
	SUBWF S3,W
LABEL_LM2_CHECK2
	BTFSC STATUS,CARRY
	GOTO LABEL_LM2_EXIT
	MOVLW LOW 400
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	MOVWF S3
	MOVLW HIGH 400
	MOVWF S3_HI
LABEL_LM2_EXIT

;***************************************************
;AF1
;***************************************************

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	MOVFW S1
	MOVWF SYS_TMP1
	MOVFW S1_HI
	MOVWF SYS_TMP2
	MOVLW LOW 142
	MOVWF SYS_TMP3
	MOVLW HIGH 142
	MOVWF SYS_TMP4
	MOVLW HIGH SYSMUL16
	MOVWF PCLATH
	CALL SYSMUL16
	MOVLW HIGH LABEL_AF1
	MOVWF PCLATH
LABEL_AF1
	MOVFW SYS_TMP5
	MOVWF S0
	MOVFW SYS_TMP6
	MOVWF S0_HI

LABEL_AF1_EXIT
;***************************************************
;AF2
;***************************************************

	MOVFW S0
	MOVWF SYS_TMP1
	MOVFW S0_HI
	MOVWF SYS_TMP2
	MOVLW LOW 255
	MOVWF SYS_TMP3
	MOVLW HIGH 255
	MOVWF SYS_TMP4
	MOVLW HIGH SYSDIV16
	MOVWF PCLATH
	CALL SYSDIV16
	MOVLW HIGH LABEL_AF2
	MOVWF PCLATH
LABEL_AF2
	MOVFW SYS_TMP5
	MOVWF S2
	MOVFW SYS_TMP6
	MOVWF S2_HI

LABEL_AF2_EXIT
;***************************************************
;AF3
;***************************************************

	MOVFW S3
	MOVWF SYS_TMP1
	MOVFW S3_HI
	MOVWF SYS_TMP2
	MOVLW LOW 142
	MOVWF SYS_TMP3
	MOVLW HIGH 142
	MOVWF SYS_TMP4
	MOVLW HIGH SYSMUL16
	MOVWF PCLATH
	CALL SYSMUL16
	MOVLW HIGH LABEL_AF3
	MOVWF PCLATH
LABEL_AF3
	MOVFW SYS_TMP5
	MOVWF S4
	MOVFW SYS_TMP6
	MOVWF S4_HI

LABEL_AF3_EXIT
;***************************************************
;AF4
;***************************************************

	MOVFW S4
	MOVWF SYS_TMP1
	MOVFW S4_HI
	MOVWF SYS_TMP2
	MOVLW LOW 255
	MOVWF SYS_TMP3
	MOVLW HIGH 255
	MOVWF SYS_TMP4
	MOVLW HIGH SYSDIV16
	MOVWF PCLATH
	CALL SYSDIV16
	MOVLW HIGH LABEL_AF4
	MOVWF PCLATH
LABEL_AF4
	MOVFW SYS_TMP5
	MOVWF S5
	MOVFW SYS_TMP6
	MOVWF S5_HI

LABEL_AF4_EXIT
;***************************************************
;AF5
;***************************************************

	MOVFW S5_HI
	SUBLW HIGH 256
	MOVWF S6_HI
	MOVFW S5
	SUBLW LOW 256
	MOVWF S6
	BTFSS STATUS,CARRY
	DECF S6_HI,F

LABEL_AF5_EXIT
;***************************************************
; Limiter -> LM3
;***************************************************

	BCF S29,7
	MOVFW ADC1
	MOVWF S16
	MOVFW ADC1_HI
	MOVWF S16_HI

	MOVLW HIGH 893
	SUBWF S16_HI,W
	BTFSS STATUS,ZERO
	GOTO LABEL_LM3_CHECK1
	MOVLW LOW 893
	SUBWF S16,W
LABEL_LM3_CHECK1
	BTFSS STATUS,CARRY
	GOTO LABEL_LM3_BOTTOM
	BTFSC STATUS,ZERO
	GOTO LABEL_LM3_BOTTOM
	MOVLW LOW 893
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	MOVWF S16
	MOVLW HIGH 893
	MOVWF S16_HI
	GOTO LABEL_LM3_EXIT
LABEL_LM3_BOTTOM
	MOVLW HIGH 463
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	SUBWF S16_HI,W
	BTFSS STATUS,ZERO
	GOTO LABEL_LM3_CHECK2
	MOVLW LOW 463
	SUBWF S16,W
LABEL_LM3_CHECK2
	BTFSC STATUS,CARRY
	GOTO LABEL_LM3_EXIT
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BSF S29,7
	MOVLW LOW 463
	MOVWF S16
	MOVLW HIGH 463
	MOVWF S16_HI
LABEL_LM3_EXIT

;***************************************************
; Limiter -> LM4
;***************************************************

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF S30,0
	MOVFW ADC1
	MOVWF S17
	MOVFW ADC1_HI
	MOVWF S17_HI

	MOVLW HIGH 459
	SUBWF S17_HI,W
	BTFSS STATUS,ZERO
	GOTO LABEL_LM4_CHECK1
	MOVLW LOW 459
	SUBWF S17,W
LABEL_LM4_CHECK1
	BTFSS STATUS,CARRY
	GOTO LABEL_LM4_BOTTOM
	BTFSC STATUS,ZERO
	GOTO LABEL_LM4_BOTTOM
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BSF S30,0
	MOVLW LOW 459
	MOVWF S17
	MOVLW HIGH 459
	MOVWF S17_HI
	GOTO LABEL_LM4_EXIT
LABEL_LM4_BOTTOM
	MOVLW HIGH 400
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	SUBWF S17_HI,W
	BTFSS STATUS,ZERO
	GOTO LABEL_LM4_CHECK2
	MOVLW LOW 400
	SUBWF S17,W
LABEL_LM4_CHECK2
	BTFSC STATUS,CARRY
	GOTO LABEL_LM4_EXIT
	MOVLW LOW 400
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	MOVWF S17
	MOVLW HIGH 400
	MOVWF S17_HI
LABEL_LM4_EXIT

;***************************************************
; Limiter -> LM5
;***************************************************

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF S30,6
	MOVFW ADC2
	MOVWF S18
	MOVFW ADC2_HI
	MOVWF S18_HI

	MOVLW HIGH 893
	SUBWF S18_HI,W
	BTFSS STATUS,ZERO
	GOTO LABEL_LM5_CHECK1
	MOVLW LOW 893
	SUBWF S18,W
LABEL_LM5_CHECK1
	BTFSS STATUS,CARRY
	GOTO LABEL_LM5_BOTTOM
	BTFSC STATUS,ZERO
	GOTO LABEL_LM5_BOTTOM
	MOVLW LOW 893
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	MOVWF S18
	MOVLW HIGH 893
	MOVWF S18_HI
	GOTO LABEL_LM5_EXIT
LABEL_LM5_BOTTOM
	MOVLW HIGH 463
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	SUBWF S18_HI,W
	BTFSS STATUS,ZERO
	GOTO LABEL_LM5_CHECK2
	MOVLW LOW 463
	SUBWF S18,W
LABEL_LM5_CHECK2
	BTFSC STATUS,CARRY
	GOTO LABEL_LM5_EXIT
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BSF S30,6
	MOVLW LOW 463
	MOVWF S18
	MOVLW HIGH 463
	MOVWF S18_HI
LABEL_LM5_EXIT

;***************************************************
; Limiter -> LM6
;***************************************************

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF S30,7
	MOVFW ADC2
	MOVWF S19
	MOVFW ADC2_HI
	MOVWF S19_HI

	MOVLW HIGH 459
	SUBWF S19_HI,W
	BTFSS STATUS,ZERO
	GOTO LABEL_LM6_CHECK1
	MOVLW LOW 459
	SUBWF S19,W
LABEL_LM6_CHECK1
	BTFSS STATUS,CARRY
	GOTO LABEL_LM6_BOTTOM
	BTFSC STATUS,ZERO
	GOTO LABEL_LM6_BOTTOM
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BSF S30,7
	MOVLW LOW 459
	MOVWF S19
	MOVLW HIGH 459
	MOVWF S19_HI
	GOTO LABEL_LM6_EXIT
LABEL_LM6_BOTTOM
	MOVLW HIGH 400
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	SUBWF S19_HI,W
	BTFSS STATUS,ZERO
	GOTO LABEL_LM6_CHECK2
	MOVLW LOW 400
	SUBWF S19,W
LABEL_LM6_CHECK2
	BTFSC STATUS,CARRY
	GOTO LABEL_LM6_EXIT
	MOVLW LOW 400
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	MOVWF S19
	MOVLW HIGH 400
	MOVWF S19_HI
LABEL_LM6_EXIT

;***************************************************
; Limiter -> LM7
;***************************************************

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF S31,0
	MOVFW ADC3
	MOVWF S20
	MOVFW ADC3_HI
	MOVWF S20_HI

	MOVLW HIGH 893
	SUBWF S20_HI,W
	BTFSS STATUS,ZERO
	GOTO LABEL_LM7_CHECK1
	MOVLW LOW 893
	SUBWF S20,W
LABEL_LM7_CHECK1
	BTFSS STATUS,CARRY
	GOTO LABEL_LM7_BOTTOM
	BTFSC STATUS,ZERO
	GOTO LABEL_LM7_BOTTOM
	MOVLW LOW 893
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	MOVWF S20
	MOVLW HIGH 893
	MOVWF S20_HI
	GOTO LABEL_LM7_EXIT
LABEL_LM7_BOTTOM
	MOVLW HIGH 463
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	SUBWF S20_HI,W
	BTFSS STATUS,ZERO
	GOTO LABEL_LM7_CHECK2
	MOVLW LOW 463
	SUBWF S20,W
LABEL_LM7_CHECK2
	BTFSC STATUS,CARRY
	GOTO LABEL_LM7_EXIT
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BSF S31,0
	MOVLW LOW 463
	MOVWF S20
	MOVLW HIGH 463
	MOVWF S20_HI
LABEL_LM7_EXIT

;***************************************************
; Limiter -> LM8
;***************************************************

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF S31,1
	MOVFW ADC3
	MOVWF S21
	MOVFW ADC3_HI
	MOVWF S21_HI

	MOVLW HIGH 459
	SUBWF S21_HI,W
	BTFSS STATUS,ZERO
	GOTO LABEL_LM8_CHECK1
	MOVLW LOW 459
	SUBWF S21,W
LABEL_LM8_CHECK1
	BTFSS STATUS,CARRY
	GOTO LABEL_LM8_BOTTOM
	BTFSC STATUS,ZERO
	GOTO LABEL_LM8_BOTTOM
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BSF S31,1
	MOVLW LOW 459
	MOVWF S21
	MOVLW HIGH 459
	MOVWF S21_HI
	GOTO LABEL_LM8_EXIT
LABEL_LM8_BOTTOM
	MOVLW HIGH 400
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	SUBWF S21_HI,W
	BTFSS STATUS,ZERO
	GOTO LABEL_LM8_CHECK2
	MOVLW LOW 400
	SUBWF S21,W
LABEL_LM8_CHECK2
	BTFSC STATUS,CARRY
	GOTO LABEL_LM8_EXIT
	MOVLW LOW 400
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	MOVWF S21
	MOVLW HIGH 400
	MOVWF S21_HI
LABEL_LM8_EXIT

;***************************************************
;AF6
;***************************************************

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	MOVFW S16
	MOVWF SYS_TMP1
	MOVFW S16_HI
	MOVWF SYS_TMP2
	MOVLW LOW 142
	MOVWF SYS_TMP3
	MOVLW HIGH 142
	MOVWF SYS_TMP4
	MOVLW HIGH SYSMUL16
	MOVWF PCLATH
	CALL SYSMUL16
	MOVLW HIGH LABEL_AF6
	MOVWF PCLATH
LABEL_AF6
	MOVFW SYS_TMP5
	MOVWF S10
	MOVFW SYS_TMP6
	MOVWF S10_HI

LABEL_AF6_EXIT
;***************************************************
;AF7
;***************************************************

	MOVFW S10
	MOVWF SYS_TMP1
	MOVFW S10_HI
	MOVWF SYS_TMP2
	MOVLW LOW 255
	MOVWF SYS_TMP3
	MOVLW HIGH 255
	MOVWF SYS_TMP4
	MOVLW HIGH SYSDIV16
	MOVWF PCLATH
	CALL SYSDIV16
	MOVLW HIGH LABEL_AF7
	MOVWF PCLATH
LABEL_AF7
	MOVFW SYS_TMP5
	MOVWF S22
	MOVFW SYS_TMP6
	MOVWF S22_HI

LABEL_AF7_EXIT
;***************************************************
;AF8
;***************************************************

	MOVFW S17
	MOVWF SYS_TMP1
	MOVFW S17_HI
	MOVWF SYS_TMP2
	MOVLW LOW 142
	MOVWF SYS_TMP3
	MOVLW HIGH 142
	MOVWF SYS_TMP4
	MOVLW HIGH SYSMUL16
	MOVWF PCLATH
	CALL SYSMUL16
	MOVLW HIGH LABEL_AF8
	MOVWF PCLATH
LABEL_AF8
	MOVFW SYS_TMP5
	MOVWF S11
	MOVFW SYS_TMP6
	MOVWF S11_HI

LABEL_AF8_EXIT
;***************************************************
;AF9
;***************************************************

	MOVFW S11
	MOVWF SYS_TMP1
	MOVFW S11_HI
	MOVWF SYS_TMP2
	MOVLW LOW 255
	MOVWF SYS_TMP3
	MOVLW HIGH 255
	MOVWF SYS_TMP4
	MOVLW HIGH SYSDIV16
	MOVWF PCLATH
	CALL SYSDIV16
	MOVLW HIGH LABEL_AF9
	MOVWF PCLATH
LABEL_AF9
	MOVFW SYS_TMP5
	MOVWF S7
	MOVFW SYS_TMP6
	MOVWF S7_HI

LABEL_AF9_EXIT
;***************************************************
;AF10
;***************************************************

	MOVFW S7_HI
	SUBLW HIGH 256
	MOVWF S25_HI
	MOVFW S7
	SUBLW LOW 256
	MOVWF S25
	BTFSS STATUS,CARRY
	DECF S25_HI,F

LABEL_AF10_EXIT
;***************************************************
;AF11
;***************************************************

	MOVFW S18
	MOVWF SYS_TMP1
	MOVFW S18_HI
	MOVWF SYS_TMP2
	MOVLW LOW 142
	MOVWF SYS_TMP3
	MOVLW HIGH 142
	MOVWF SYS_TMP4
	MOVLW HIGH SYSMUL16
	MOVWF PCLATH
	CALL SYSMUL16
	MOVLW HIGH LABEL_AF11
	MOVWF PCLATH
LABEL_AF11
	MOVFW SYS_TMP5
	MOVWF S12
	MOVFW SYS_TMP6
	MOVWF S12_HI

LABEL_AF11_EXIT
;***************************************************
;AF12
;***************************************************

	MOVFW S12
	MOVWF SYS_TMP1
	MOVFW S12_HI
	MOVWF SYS_TMP2
	MOVLW LOW 255
	MOVWF SYS_TMP3
	MOVLW HIGH 255
	MOVWF SYS_TMP4
	MOVLW HIGH SYSDIV16
	MOVWF PCLATH
	CALL SYSDIV16
	MOVLW HIGH LABEL_AF12
	MOVWF PCLATH
LABEL_AF12
	MOVFW SYS_TMP5
	MOVWF S23
	MOVFW SYS_TMP6
	MOVWF S23_HI

LABEL_AF12_EXIT
;***************************************************
;AF13
;***************************************************

	MOVFW S19
	MOVWF SYS_TMP1
	MOVFW S19_HI
	MOVWF SYS_TMP2
	MOVLW LOW 142
	MOVWF SYS_TMP3
	MOVLW HIGH 142
	MOVWF SYS_TMP4
	MOVLW HIGH SYSMUL16
	MOVWF PCLATH
	CALL SYSMUL16
	MOVLW HIGH LABEL_AF13
	MOVWF PCLATH
LABEL_AF13
	MOVFW SYS_TMP5
	MOVWF S13
	MOVFW SYS_TMP6
	MOVWF S13_HI

LABEL_AF13_EXIT
;***************************************************
;AF14
;***************************************************

	MOVFW S13
	MOVWF SYS_TMP1
	MOVFW S13_HI
	MOVWF SYS_TMP2
	MOVLW LOW 255
	MOVWF SYS_TMP3
	MOVLW HIGH 255
	MOVWF SYS_TMP4
	MOVLW HIGH SYSDIV16
	MOVWF PCLATH
	CALL SYSDIV16
	MOVLW HIGH LABEL_AF14
	MOVWF PCLATH
LABEL_AF14
	MOVFW SYS_TMP5
	MOVWF S8
	MOVFW SYS_TMP6
	MOVWF S8_HI

LABEL_AF14_EXIT
;***************************************************
;AF15
;***************************************************

	MOVFW S8_HI
	SUBLW HIGH 256
	MOVWF S26_HI
	MOVFW S8
	SUBLW LOW 256
	MOVWF S26
	BTFSS STATUS,CARRY
	DECF S26_HI,F

LABEL_AF15_EXIT
;***************************************************
;AF16
;***************************************************

	MOVFW S20
	MOVWF SYS_TMP1
	MOVFW S20_HI
	MOVWF SYS_TMP2
	MOVLW LOW 142
	MOVWF SYS_TMP3
	MOVLW HIGH 142
	MOVWF SYS_TMP4
	MOVLW HIGH SYSMUL16
	MOVWF PCLATH
	CALL SYSMUL16
	MOVLW HIGH LABEL_AF16
	MOVWF PCLATH
LABEL_AF16
	MOVFW SYS_TMP5
	MOVWF S14
	MOVFW SYS_TMP6
	MOVWF S14_HI

LABEL_AF16_EXIT
;***************************************************
;AF17
;***************************************************

	MOVFW S14
	MOVWF SYS_TMP1
	MOVFW S14_HI
	MOVWF SYS_TMP2
	MOVLW LOW 255
	MOVWF SYS_TMP3
	MOVLW HIGH 255
	MOVWF SYS_TMP4
	MOVLW HIGH SYSDIV16
	MOVWF PCLATH
	CALL SYSDIV16
	MOVLW HIGH LABEL_AF17
	MOVWF PCLATH
LABEL_AF17
	MOVFW SYS_TMP5
	MOVWF S24
	MOVFW SYS_TMP6
	MOVWF S24_HI

LABEL_AF17_EXIT
;***************************************************
;AF18
;***************************************************

	MOVFW S21
	MOVWF SYS_TMP1
	MOVFW S21_HI
	MOVWF SYS_TMP2
	MOVLW LOW 142
	MOVWF SYS_TMP3
	MOVLW HIGH 142
	MOVWF SYS_TMP4
	MOVLW HIGH SYSMUL16
	MOVWF PCLATH
	CALL SYSMUL16
	MOVLW HIGH LABEL_AF18
	MOVWF PCLATH
LABEL_AF18
	MOVFW SYS_TMP5
	MOVWF S15
	MOVFW SYS_TMP6
	MOVWF S15_HI

LABEL_AF18_EXIT
;***************************************************
;AF19
;***************************************************

	MOVFW S15
	MOVWF SYS_TMP1
	MOVFW S15_HI
	MOVWF SYS_TMP2
	MOVLW LOW 255
	MOVWF SYS_TMP3
	MOVLW HIGH 255
	MOVWF SYS_TMP4
	MOVLW HIGH SYSDIV16
	MOVWF PCLATH
	CALL SYSDIV16
	MOVLW HIGH LABEL_AF19
	MOVWF PCLATH
LABEL_AF19
	MOVFW SYS_TMP5
	MOVWF S9
	MOVFW SYS_TMP6
	MOVWF S9_HI

LABEL_AF19_EXIT
;***************************************************
;AF20
;***************************************************

	MOVFW S9_HI
	SUBLW HIGH 256
	MOVWF S27_HI
	MOVFW S9
	SUBLW LOW 256
	MOVWF S27
	BTFSS STATUS,CARRY
	DECF S27_HI,F

LABEL_AF20_EXIT
;***************************************************
; UND - Gatter -> LG1
;***************************************************

LABEL_LG1_1
	BTFSS S29,2
	GOTO LABEL_LG1_FALSE
LABEL_LG1_2
	BTFSS S29,3
	GOTO LABEL_LG1_FALSE

LABEL_LG1_TRUE
	BSF S29,5
	GOTO LABEL_LG1_ENDE
LABEL_LG1_FALSE
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF S29,5
LABEL_LG1_ENDE
;***************************************************
; UND - Gatter -> LG2
;***************************************************

LABEL_LG2_1
	BTFSS S29,2
	GOTO LABEL_LG2_FALSE
LABEL_LG2_2
	BTFSS S29,4
	GOTO LABEL_LG2_FALSE

LABEL_LG2_TRUE
	BSF S30,1
	GOTO LABEL_LG2_ENDE
LABEL_LG2_FALSE
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF S30,1
LABEL_LG2_ENDE
;***************************************************
; UND - Gatter -> LG3
;***************************************************

LABEL_LG3_1
	BTFSS S29,5
	GOTO LABEL_LG3_FALSE
LABEL_LG3_2
	BTFSS S29,1
	GOTO LABEL_LG3_FALSE

LABEL_LG3_TRUE
	BSF S30,3
	GOTO LABEL_LG3_ENDE
LABEL_LG3_FALSE
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF S30,3
LABEL_LG3_ENDE
;***************************************************
; UND - Gatter -> LG4
;***************************************************

LABEL_LG4_1
	BTFSS S29,5
	GOTO LABEL_LG4_FALSE
LABEL_LG4_2
	BTFSS S29,6
	GOTO LABEL_LG4_FALSE

LABEL_LG4_TRUE
	BSF S30,2
	GOTO LABEL_LG4_ENDE
LABEL_LG4_FALSE
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF S30,2
LABEL_LG4_ENDE
;***************************************************
; UND - Gatter -> LG5
;***************************************************

LABEL_LG5_1
	BTFSS S30,6
	GOTO LABEL_LG5_FALSE
LABEL_LG5_2
	BTFSS S30,1
	GOTO LABEL_LG5_FALSE

LABEL_LG5_TRUE
	BSF S31,2
	GOTO LABEL_LG5_ENDE
LABEL_LG5_FALSE
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF S31,2
LABEL_LG5_ENDE
;***************************************************
; UND - Gatter -> LG6
;***************************************************

LABEL_LG6_1
	BTFSS S30,7
	GOTO LABEL_LG6_FALSE
LABEL_LG6_2
	BTFSS S30,1
	GOTO LABEL_LG6_FALSE

LABEL_LG6_TRUE
	BSF S31,3
	GOTO LABEL_LG6_ENDE
LABEL_LG6_FALSE
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF S31,3
LABEL_LG6_ENDE
;***************************************************
; Timer -> TR1
;***************************************************

	MOVLW 0	; Test auf >=
	SUBWF TR1_HI,W	;F-W -> W
	BTFSS STATUS,ZERO
	GOTO LABEL_TR1_CHECK
	MOVLW 20
	SUBWF TR1,W	;F-W -> W
LABEL_TR1_CHECK
	BTFSS STATUS,CARRY
	GOTO LABEL_TR1_ENDE

LABEL_TR1_RESET
	MOVLW 0	; Test auf >=
	SUBWF TR1_HI,F	;F-W -> F
	MOVLW 20
	SUBWF TR1,F	;F-W -> F
	BTFSS STATUS,CARRY
	DECF TR1_HI,F

LABEL_TR1_SET	; toggel output
	BTFSC S29,2
	GOTO LABEL_TR1_CLR
	BSF S29,2
	GOTO LABEL_TR1_ENDE
LABEL_TR1_CLR
	BCF S29,2
LABEL_TR1_ENDE

;***************************************************
; UND - Gatter -> LG7
;***************************************************

LABEL_LG7_1
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S29,5
	GOTO LABEL_LG7_FALSE
LABEL_LG7_2
	BTFSS S29,7
	GOTO LABEL_LG7_FALSE

LABEL_LG7_TRUE
	BSF S30,4
	GOTO LABEL_LG7_ENDE
LABEL_LG7_FALSE
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF S30,4
LABEL_LG7_ENDE
;***************************************************
; UND - Gatter -> LG8
;***************************************************

LABEL_LG8_1
	BTFSS S29,5
	GOTO LABEL_LG8_FALSE
LABEL_LG8_2
	BTFSS S30,0
	GOTO LABEL_LG8_FALSE

LABEL_LG8_TRUE
	BSF S30,5
	GOTO LABEL_LG8_ENDE
LABEL_LG8_FALSE
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF S30,5
LABEL_LG8_ENDE
;***************************************************
; UND - Gatter -> LG9
;***************************************************

LABEL_LG9_1
	BTFSS S31,0
	GOTO LABEL_LG9_FALSE
LABEL_LG9_2
	BTFSS S30,1
	GOTO LABEL_LG9_FALSE

LABEL_LG9_TRUE
	BSF S31,4
	GOTO LABEL_LG9_ENDE
LABEL_LG9_FALSE
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF S31,4
LABEL_LG9_ENDE
;***************************************************
; UND - Gatter -> LG10
;***************************************************

LABEL_LG10_1
	BTFSS S31,1
	GOTO LABEL_LG10_FALSE
LABEL_LG10_2
	BTFSS S30,1
	GOTO LABEL_LG10_FALSE

LABEL_LG10_TRUE
	BSF S31,5
	GOTO LABEL_LG10_ENDE
LABEL_LG10_FALSE
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF S31,5
LABEL_LG10_ENDE
;***************************************************
; LCD -> LT1
;***************************************************

; test of positiv edge

	BTFSC LT1_FD,0
	GOTO LABEL_LT1_SETFD
	BTFSS S30,2
	GOTO LABEL_LT1_SETFD


	MOVLW 5
	MOVWF SYS_TMP1
	MOVLW 0
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	MOVFW S2
	MOVWF SYS_TMP4
	MOVFW S2_HI
	MOVWF SYS_TMP5

	BCF SYS_TMP10,0
	MOVLW 3
	MOVWF SYS_TMP9
	MOVLW HIGH LCD_LB1_DEZO10000	; set page
	MOVWF PCLATH
	CALL LCD_LB1_DEZO10000
	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
LABEL_LT1_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S30,2
	GOTO LABEL_LT1_SETFD2
	BSF LT1_FD,0
	GOTO LABEL_LT1_END
LABEL_LT1_SETFD2
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF LT1_FD,0
LABEL_LT1_END

;***************************************************
; LCD -> LT2
;***************************************************

; test of positiv edge

	BTFSC LT2_FD,0
	GOTO LABEL_LT2_SETFD
	BTFSS S30,3
	GOTO LABEL_LT2_SETFD


	MOVLW 6
	MOVWF SYS_TMP1
	MOVLW 0
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	MOVFW S6
	MOVWF SYS_TMP4
	MOVFW S6_HI
	MOVWF SYS_TMP5

	BCF SYS_TMP10,0
	MOVLW 4
	MOVWF SYS_TMP9
	MOVLW HIGH LCD_LB1_DEZO10000	; set page
	MOVWF PCLATH
	CALL LCD_LB1_DEZO10000
	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
LABEL_LT2_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S30,3
	GOTO LABEL_LT2_SETFD2
	BSF LT2_FD,0
	GOTO LABEL_LT2_END
LABEL_LT2_SETFD2
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF LT2_FD,0
LABEL_LT2_END

;***************************************************
; LCD -> LT3
;***************************************************

; test of positiv edge

	BTFSC LT3_FD,0
	GOTO LABEL_LT3_SETFD
	BTFSS S30,3
	GOTO LABEL_LT3_SETFD


	MOVLW 0
	MOVWF SYS_TMP1
	MOVLW 0
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	MOVLW LOW TAB_LT3
	MOVWF SYS_TMP4
	MOVLW HIGH TAB_LT3
	MOVWF SYS_TMP5

	MOVLW HIGH LCD_LB1_WRITESTR	; set page
	MOVWF PCLATH

	CALL LCD_LB1_WRITESTR

	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
LABEL_LT3_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S30,3
	GOTO LABEL_LT3_SETFD2
	BSF LT3_FD,0
	GOTO LABEL_LT3_END
LABEL_LT3_SETFD2
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF LT3_FD,0
LABEL_LT3_END

;***************************************************
; LCD -> LT4
;***************************************************

; test of positiv edge

	BTFSC LT4_FD,0
	GOTO LABEL_LT4_SETFD
	BTFSS S30,3
	GOTO LABEL_LT4_SETFD


	MOVLW 9
	MOVWF SYS_TMP1
	MOVLW 0
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	MOVLW LOW TAB_LT4
	MOVWF SYS_TMP4
	MOVLW HIGH TAB_LT4
	MOVWF SYS_TMP5

	MOVLW HIGH LCD_LB1_WRITESTR	; set page
	MOVWF PCLATH

	CALL LCD_LB1_WRITESTR

	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
LABEL_LT4_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S30,3
	GOTO LABEL_LT4_SETFD2
	BSF LT4_FD,0
	GOTO LABEL_LT4_END
LABEL_LT4_SETFD2
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF LT4_FD,0
LABEL_LT4_END

;***************************************************
; LCD -> LT5
;***************************************************

; test of positiv edge

	BTFSC LT5_FD,0
	GOTO LABEL_LT5_SETFD
	BTFSS S30,4
	GOTO LABEL_LT5_SETFD


	MOVLW 6
	MOVWF SYS_TMP1
	MOVLW 1
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	MOVFW S25
	MOVWF SYS_TMP4
	MOVFW S25_HI
	MOVWF SYS_TMP5

	BCF SYS_TMP10,0
	MOVLW 4
	MOVWF SYS_TMP9
	MOVLW HIGH LCD_LB1_DEZO10000	; set page
	MOVWF PCLATH
	CALL LCD_LB1_DEZO10000
	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
LABEL_LT5_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S30,4
	GOTO LABEL_LT5_SETFD2
	BSF LT5_FD,0
	GOTO LABEL_LT5_END
LABEL_LT5_SETFD2
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF LT5_FD,0
LABEL_LT5_END

;***************************************************
; LCD -> LT6
;***************************************************

; test of positiv edge

	BTFSC LT6_FD,0
	GOTO LABEL_LT6_SETFD
	BTFSS S30,5
	GOTO LABEL_LT6_SETFD


	MOVLW 5
	MOVWF SYS_TMP1
	MOVLW 1
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	MOVFW S22
	MOVWF SYS_TMP4
	MOVFW S22_HI
	MOVWF SYS_TMP5

	BCF SYS_TMP10,0
	MOVLW 3
	MOVWF SYS_TMP9
	MOVLW HIGH LCD_LB1_DEZO10000	; set page
	MOVWF PCLATH
	CALL LCD_LB1_DEZO10000
	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
LABEL_LT6_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S30,5
	GOTO LABEL_LT6_SETFD2
	BSF LT6_FD,0
	GOTO LABEL_LT6_END
LABEL_LT6_SETFD2
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF LT6_FD,0
LABEL_LT6_END

;***************************************************
; LCD -> LT7
;***************************************************

; test of positiv edge

	BTFSC LT7_FD,0
	GOTO LABEL_LT7_SETFD
	BTFSS S30,4
	GOTO LABEL_LT7_SETFD


	MOVLW 0
	MOVWF SYS_TMP1
	MOVLW 1
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	MOVLW LOW TAB_LT7
	MOVWF SYS_TMP4
	MOVLW HIGH TAB_LT7
	MOVWF SYS_TMP5

	MOVLW HIGH LCD_LB1_WRITESTR	; set page
	MOVWF PCLATH

	CALL LCD_LB1_WRITESTR

	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
LABEL_LT7_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S30,4
	GOTO LABEL_LT7_SETFD2
	BSF LT7_FD,0
	GOTO LABEL_LT7_END
LABEL_LT7_SETFD2
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF LT7_FD,0
LABEL_LT7_END

;***************************************************
; LCD -> LT8
;***************************************************

; test of positiv edge

	BTFSC LT8_FD,0
	GOTO LABEL_LT8_SETFD
	BTFSS S30,4
	GOTO LABEL_LT8_SETFD


	MOVLW 9
	MOVWF SYS_TMP1
	MOVLW 1
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	MOVLW LOW TAB_LT8
	MOVWF SYS_TMP4
	MOVLW HIGH TAB_LT8
	MOVWF SYS_TMP5

	MOVLW HIGH LCD_LB1_WRITESTR	; set page
	MOVWF PCLATH

	CALL LCD_LB1_WRITESTR

	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
LABEL_LT8_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S30,4
	GOTO LABEL_LT8_SETFD2
	BSF LT8_FD,0
	GOTO LABEL_LT8_END
LABEL_LT8_SETFD2
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF LT8_FD,0
LABEL_LT8_END

;***************************************************
; LCD -> LT9
;***************************************************

; test of positiv edge

	BTFSC LT9_FD,0
	GOTO LABEL_LT9_SETFD
	BTFSS S31,2
	GOTO LABEL_LT9_SETFD


	MOVLW 6
	MOVWF SYS_TMP1
	MOVLW 0
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	MOVFW S26
	MOVWF SYS_TMP4
	MOVFW S26_HI
	MOVWF SYS_TMP5

	BCF SYS_TMP10,0
	MOVLW 4
	MOVWF SYS_TMP9
	MOVLW HIGH LCD_LB1_DEZO10000	; set page
	MOVWF PCLATH
	CALL LCD_LB1_DEZO10000
	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
LABEL_LT9_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S31,2
	GOTO LABEL_LT9_SETFD2
	BSF LT9_FD,0
	GOTO LABEL_LT9_END
LABEL_LT9_SETFD2
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF LT9_FD,0
LABEL_LT9_END

;***************************************************
; LCD -> LT10
;***************************************************

; test of positiv edge

	BTFSC LT10_FD,0
	GOTO LABEL_LT10_SETFD
	BTFSS S31,2
	GOTO LABEL_LT10_SETFD


	MOVLW 0
	MOVWF SYS_TMP1
	MOVLW 0
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	MOVLW LOW TAB_LT10
	MOVWF SYS_TMP4
	MOVLW HIGH TAB_LT10
	MOVWF SYS_TMP5

	MOVLW HIGH LCD_LB1_WRITESTR	; set page
	MOVWF PCLATH

	CALL LCD_LB1_WRITESTR

	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
LABEL_LT10_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S31,2
	GOTO LABEL_LT10_SETFD2
	BSF LT10_FD,0
	GOTO LABEL_LT10_END
LABEL_LT10_SETFD2
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF LT10_FD,0
LABEL_LT10_END

;***************************************************
; LCD -> LT11
;***************************************************

; test of positiv edge

	BTFSC LT11_FD,0
	GOTO LABEL_LT11_SETFD
	BTFSS S31,2
	GOTO LABEL_LT11_SETFD


	MOVLW 9
	MOVWF SYS_TMP1
	MOVLW 0
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	MOVLW LOW TAB_LT11
	MOVWF SYS_TMP4
	MOVLW HIGH TAB_LT11
	MOVWF SYS_TMP5

	MOVLW HIGH LCD_LB1_WRITESTR	; set page
	MOVWF PCLATH

	CALL LCD_LB1_WRITESTR

	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
LABEL_LT11_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S31,2
	GOTO LABEL_LT11_SETFD2
	BSF LT11_FD,0
	GOTO LABEL_LT11_END
LABEL_LT11_SETFD2
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF LT11_FD,0
LABEL_LT11_END

;***************************************************
; LCD -> LT12
;***************************************************

; test of positiv edge

	BTFSC LT12_FD,0
	GOTO LABEL_LT12_SETFD
	BTFSS S31,3
	GOTO LABEL_LT12_SETFD


	MOVLW 5
	MOVWF SYS_TMP1
	MOVLW 0
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	MOVFW S23
	MOVWF SYS_TMP4
	MOVFW S23_HI
	MOVWF SYS_TMP5

	BCF SYS_TMP10,0
	MOVLW 3
	MOVWF SYS_TMP9
	MOVLW HIGH LCD_LB1_DEZO10000	; set page
	MOVWF PCLATH
	CALL LCD_LB1_DEZO10000
	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
LABEL_LT12_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S31,3
	GOTO LABEL_LT12_SETFD2
	BSF LT12_FD,0
	GOTO LABEL_LT12_END
LABEL_LT12_SETFD2
	BCF LT12_FD,0
LABEL_LT12_END

;***************************************************
; LCD -> LT13
;***************************************************

; test of positiv edge

	BTFSC LT13_FD,0
	GOTO LABEL_LT13_SETFD
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S31,4
	GOTO LABEL_LT13_SETFD


	MOVLW 6
	MOVWF SYS_TMP1
	MOVLW 1
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	MOVFW S27
	MOVWF SYS_TMP4
	MOVFW S27_HI
	MOVWF SYS_TMP5

	BCF SYS_TMP10,0
	MOVLW 4
	MOVWF SYS_TMP9
	MOVLW HIGH LCD_LB1_DEZO10000	; set page
	MOVWF PCLATH
	CALL LCD_LB1_DEZO10000
	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
LABEL_LT13_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S31,4
	GOTO LABEL_LT13_SETFD2
	BSF LT13_FD,0
	GOTO LABEL_LT13_END
LABEL_LT13_SETFD2
	BCF LT13_FD,0
LABEL_LT13_END

;***************************************************
; LCD -> LT14
;***************************************************

; test of positiv edge

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC LT14_FD,0
	GOTO LABEL_LT14_SETFD
	BCF STATUS,RP0	; Bank 0
	BTFSS S31,4
	GOTO LABEL_LT14_SETFD


	MOVLW 0
	MOVWF SYS_TMP1
	MOVLW 1
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	MOVLW LOW TAB_LT14
	MOVWF SYS_TMP4
	MOVLW HIGH TAB_LT14
	MOVWF SYS_TMP5

	MOVLW HIGH LCD_LB1_WRITESTR	; set page
	MOVWF PCLATH

	CALL LCD_LB1_WRITESTR

	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
LABEL_LT14_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S31,4
	GOTO LABEL_LT14_SETFD2
	BSF STATUS,RP0	; Bank 1
	BSF LT14_FD,0
	GOTO LABEL_LT14_END
LABEL_LT14_SETFD2
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF LT14_FD,0
LABEL_LT14_END

;***************************************************
; LCD -> LT15
;***************************************************

; test of positiv edge

	BTFSC LT15_FD,0
	GOTO LABEL_LT15_SETFD
	BCF STATUS,RP0	; Bank 0
	BTFSS S31,4
	GOTO LABEL_LT15_SETFD


	MOVLW 9
	MOVWF SYS_TMP1
	MOVLW 1
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	MOVLW LOW TAB_LT15
	MOVWF SYS_TMP4
	MOVLW HIGH TAB_LT15
	MOVWF SYS_TMP5

	MOVLW HIGH LCD_LB1_WRITESTR	; set page
	MOVWF PCLATH

	CALL LCD_LB1_WRITESTR

	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
LABEL_LT15_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S31,4
	GOTO LABEL_LT15_SETFD2
	BSF STATUS,RP0	; Bank 1
	BSF LT15_FD,0
	GOTO LABEL_LT15_END
LABEL_LT15_SETFD2
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF LT15_FD,0
LABEL_LT15_END

;***************************************************
; LCD -> LT16
;***************************************************

; test of positiv edge

	BTFSC LT16_FD,0
	GOTO LABEL_LT16_SETFD
	BCF STATUS,RP0	; Bank 0
	BTFSS S31,5
	GOTO LABEL_LT16_SETFD


	MOVLW 5
	MOVWF SYS_TMP1
	MOVLW 1
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	MOVFW S24
	MOVWF SYS_TMP4
	MOVFW S24_HI
	MOVWF SYS_TMP5

	BCF SYS_TMP10,0
	MOVLW 3
	MOVWF SYS_TMP9
	MOVLW HIGH LCD_LB1_DEZO10000	; set page
	MOVWF PCLATH
	CALL LCD_LB1_DEZO10000
	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
LABEL_LT16_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S31,5
	GOTO LABEL_LT16_SETFD2
	BSF STATUS,RP0	; Bank 1
	BSF LT16_FD,0
	GOTO LABEL_LT16_END
LABEL_LT16_SETFD2
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF LT16_FD,0
LABEL_LT16_END

;***************************************************
; LCD -> LT17
;***************************************************

; test of positiv edge

	BTFSC LT17_FD,0
	GOTO LABEL_LT17_SETFD
	BCF STATUS,RP0	; Bank 0
	BTFSS S30,5
	GOTO LABEL_LT17_SETFD


	MOVLW 0
	MOVWF SYS_TMP1
	MOVLW 1
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	MOVLW LOW TAB_LT17
	MOVWF SYS_TMP4
	MOVLW HIGH TAB_LT17
	MOVWF SYS_TMP5

	MOVLW HIGH LCD_LB1_WRITESTR	; set page
	MOVWF PCLATH

	CALL LCD_LB1_WRITESTR

	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
LABEL_LT17_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S30,5
	GOTO LABEL_LT17_SETFD2
	BSF STATUS,RP0	; Bank 1
	BSF LT17_FD,0
	GOTO LABEL_LT17_END
LABEL_LT17_SETFD2
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF LT17_FD,0
LABEL_LT17_END

;***************************************************
; LCD -> LT18
;***************************************************

; test of positiv edge

	BTFSC LT18_FD,0
	GOTO LABEL_LT18_SETFD
	BCF STATUS,RP0	; Bank 0
	BTFSS S30,2
	GOTO LABEL_LT18_SETFD


	MOVLW 0
	MOVWF SYS_TMP1
	MOVLW 0
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	MOVLW LOW TAB_LT18
	MOVWF SYS_TMP4
	MOVLW HIGH TAB_LT18
	MOVWF SYS_TMP5

	MOVLW HIGH LCD_LB1_WRITESTR	; set page
	MOVWF PCLATH

	CALL LCD_LB1_WRITESTR

	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
LABEL_LT18_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S30,2
	GOTO LABEL_LT18_SETFD2
	BSF STATUS,RP0	; Bank 1
	BSF LT18_FD,0
	GOTO LABEL_LT18_END
LABEL_LT18_SETFD2
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF LT18_FD,0
LABEL_LT18_END

;***************************************************
; LCD -> LT19
;***************************************************

; test of positiv edge

	BTFSC LT19_FD,0
	GOTO LABEL_LT19_SETFD
	BCF STATUS,RP0	; Bank 0
	BTFSS S30,2
	GOTO LABEL_LT19_SETFD


	MOVLW 9
	MOVWF SYS_TMP1
	MOVLW 0
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	MOVLW LOW TAB_LT19
	MOVWF SYS_TMP4
	MOVLW HIGH TAB_LT19
	MOVWF SYS_TMP5

	MOVLW HIGH LCD_LB1_WRITESTR	; set page
	MOVWF PCLATH

	CALL LCD_LB1_WRITESTR

	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
LABEL_LT19_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S30,2
	GOTO LABEL_LT19_SETFD2
	BSF STATUS,RP0	; Bank 1
	BSF LT19_FD,0
	GOTO LABEL_LT19_END
LABEL_LT19_SETFD2
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF LT19_FD,0
LABEL_LT19_END

;***************************************************
; LCD -> LT20
;***************************************************

; test of positiv edge

	BTFSC LT20_FD,0
	GOTO LABEL_LT20_SETFD
	BCF STATUS,RP0	; Bank 0
	BTFSS S30,5
	GOTO LABEL_LT20_SETFD


	MOVLW 9
	MOVWF SYS_TMP1
	MOVLW 1
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	MOVLW LOW TAB_LT20
	MOVWF SYS_TMP4
	MOVLW HIGH TAB_LT20
	MOVWF SYS_TMP5

	MOVLW HIGH LCD_LB1_WRITESTR	; set page
	MOVWF PCLATH

	CALL LCD_LB1_WRITESTR

	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
LABEL_LT20_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S30,5
	GOTO LABEL_LT20_SETFD2
	BSF STATUS,RP0	; Bank 1
	BSF LT20_FD,0
	GOTO LABEL_LT20_END
LABEL_LT20_SETFD2
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF LT20_FD,0
LABEL_LT20_END

;***************************************************
; LCD -> LT21
;***************************************************

; test of positiv edge

	BTFSC LT21_FD,0
	GOTO LABEL_LT21_SETFD
	BCF STATUS,RP0	; Bank 0
	BTFSS S31,3
	GOTO LABEL_LT21_SETFD


	MOVLW 0
	MOVWF SYS_TMP1
	MOVLW 0
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	MOVLW LOW TAB_LT21
	MOVWF SYS_TMP4
	MOVLW HIGH TAB_LT21
	MOVWF SYS_TMP5

	MOVLW HIGH LCD_LB1_WRITESTR	; set page
	MOVWF PCLATH

	CALL LCD_LB1_WRITESTR

	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
LABEL_LT21_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S31,3
	GOTO LABEL_LT21_SETFD2
	BSF STATUS,RP0	; Bank 1
	BSF LT21_FD,0
	GOTO LABEL_LT21_END
LABEL_LT21_SETFD2
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF LT21_FD,0
LABEL_LT21_END

;***************************************************
; LCD -> LT22
;***************************************************

; test of positiv edge

	BTFSC LT22_FD,0
	GOTO LABEL_LT22_SETFD
	BCF STATUS,RP0	; Bank 0
	BTFSS S31,3
	GOTO LABEL_LT22_SETFD


	MOVLW 9
	MOVWF SYS_TMP1
	MOVLW 0
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	MOVLW LOW TAB_LT22
	MOVWF SYS_TMP4
	MOVLW HIGH TAB_LT22
	MOVWF SYS_TMP5

	MOVLW HIGH LCD_LB1_WRITESTR	; set page
	MOVWF PCLATH

	CALL LCD_LB1_WRITESTR

	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
LABEL_LT22_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S31,3
	GOTO LABEL_LT22_SETFD2
	BSF STATUS,RP0	; Bank 1
	BSF LT22_FD,0
	GOTO LABEL_LT22_END
LABEL_LT22_SETFD2
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF LT22_FD,0
LABEL_LT22_END

;***************************************************
; LCD -> LT23
;***************************************************

; test of positiv edge

	BTFSC LT23_FD,0
	GOTO LABEL_LT23_SETFD
	BCF STATUS,RP0	; Bank 0
	BTFSS S31,5
	GOTO LABEL_LT23_SETFD


	MOVLW 0
	MOVWF SYS_TMP1
	MOVLW 1
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	MOVLW LOW TAB_LT23
	MOVWF SYS_TMP4
	MOVLW HIGH TAB_LT23
	MOVWF SYS_TMP5

	MOVLW HIGH LCD_LB1_WRITESTR	; set page
	MOVWF PCLATH

	CALL LCD_LB1_WRITESTR

	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
LABEL_LT23_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S31,5
	GOTO LABEL_LT23_SETFD2
	BSF STATUS,RP0	; Bank 1
	BSF LT23_FD,0
	GOTO LABEL_LT23_END
LABEL_LT23_SETFD2
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF LT23_FD,0
LABEL_LT23_END

;***************************************************
; LCD -> LT24
;***************************************************

; test of positiv edge

	BTFSC LT24_FD,0
	GOTO LABEL_LT24_SETFD
	BCF STATUS,RP0	; Bank 0
	BTFSS S31,5
	GOTO LABEL_LT24_SETFD


	MOVLW 9
	MOVWF SYS_TMP1
	MOVLW 1
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	MOVLW LOW TAB_LT24
	MOVWF SYS_TMP4
	MOVLW HIGH TAB_LT24
	MOVWF SYS_TMP5

	MOVLW HIGH LCD_LB1_WRITESTR	; set page
	MOVWF PCLATH

	CALL LCD_LB1_WRITESTR

	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
LABEL_LT24_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S31,5
	GOTO LABEL_LT24_SETFD2
	BSF STATUS,RP0	; Bank 1
	BSF LT24_FD,0
	GOTO LABEL_LT24_END
LABEL_LT24_SETFD2
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF LT24_FD,0
LABEL_LT24_END

;***************************************************
; Verteiler -> BV1
;***************************************************

	BTFSC S28,0
	GOTO LABEL_BV1_0
	BCF STATUS,RP0	; Bank 0
	BCF S31,6
	GOTO LABEL_BV1_0_END
LABEL_BV1_0
	BCF STATUS,RP0	; Bank 0
	BSF S31,6
LABEL_BV1_0_END

;**********************************************

	BSF STATUS,RP0	; Bank 1
	BTFSC S28,1
	GOTO LABEL_BV1_1
	BCF STATUS,RP0	; Bank 0
	BCF S29,3
	GOTO LABEL_BV1_1_END
LABEL_BV1_1
	BCF STATUS,RP0	; Bank 0
	BSF S29,3
LABEL_BV1_1_END

;**********************************************

	BSF STATUS,RP0	; Bank 1
	BTFSC S28,2
	GOTO LABEL_BV1_2
	BCF STATUS,RP0	; Bank 0
	BCF S29,4
	GOTO LABEL_BV1_2_END
LABEL_BV1_2
	BCF STATUS,RP0	; Bank 0
	BSF S29,4
LABEL_BV1_2_END

;**********************************************


;***************************************************
; Call subroutine TAB
;***************************************************


	MOVLW LOW TAB
	MOVWF SYS_TMP1
	MOVLW HIGH TAB
	MOVWF SYS_TMP2

	BSF STATUS,RP0	; Bank 1
	MOVFW ZV1
	ADDWF SYS_TMP1,F
	BTFSC STATUS,CARRY
	INCF SYS_TMP2,F

	MOVLW HIGH SYSTABJMP	; set page
	MOVWF PCLATH
	CALL SYSTABJMP

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVWF S28

	BSF INTCON,GIE
	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
;***************************************************
; Zähler -> ZV1
;***************************************************

	BCF STATUS,RP0	; Bank 0
	BTFSS PORTC,3	; Reset ?
	GOTO LABEL_ZV1_COUNT
	BSF STATUS,RP0	; Bank 1
	CLRF ZV1
	GOTO LABEL_ZV1_SETOUT

LABEL_ZV1_COUNT

; Test auf positive Flanke

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S31,7
	GOTO LABEL_ZV1_SETFD
	BSF STATUS,RP0	; Bank 1
	BTFSC ZV1_FD,0
	GOTO LABEL_ZV1_SETFD

	BSF ZV1_FD,0


	BCF STATUS,RP0	; Bank 0
	BTFSC S29,4	; Vorwärts oder Rückwärts ?
	GOTO LABEL_ZV1_BACKWARD

	BSF STATUS,RP0	; Bank 1
	INCF ZV1,F
	GOTO LABEL_ZV1_SETOUT

LABEL_ZV1_BACKWARD
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	DECF ZV1,F

LABEL_ZV1_SETOUT


LABEL_ZV1_SETFD

; Test auf negative Flanke

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSC S31,7
	GOTO LABEL_ZV1_EXIT
	BSF STATUS,RP0	; Bank 1
	BCF ZV1_FD,0

LABEL_ZV1_EXIT

	BSF PCLATH,3	; Page 1
	GOTO 2048
	NOP
	NOP
	NOP
	NOP

;***************************************************
; LCD -> LT25
;***************************************************

; test of positiv edge

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC LT25_FD,0
	GOTO LABEL_LT25_SETFD
	BCF STATUS,RP0	; Bank 0
	BTFSS S31,6
	GOTO LABEL_LT25_SETFD


	MOVLW 0
	MOVWF SYS_TMP1
	MOVLW 0
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	MOVLW LOW TAB_LT25
	MOVWF SYS_TMP4
	MOVLW HIGH TAB_LT25
	MOVWF SYS_TMP5

	MOVLW HIGH LCD_LB1_WRITESTR	; set page
	MOVWF PCLATH

	CALL LCD_LB1_WRITESTR

	BSF PCLATH,3	; Page 1
	BCF PCLATH,4	; Page 1
LABEL_LT25_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S31,6
	GOTO LABEL_LT25_SETFD2
	BSF STATUS,RP0	; Bank 1
	BSF LT25_FD,0
	GOTO LABEL_LT25_END
LABEL_LT25_SETFD2
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF LT25_FD,0
LABEL_LT25_END

;***************************************************
; LCD -> LT26
;***************************************************

; test of positiv edge

	BTFSC LT26_FD,0
	GOTO LABEL_LT26_SETFD
	BCF STATUS,RP0	; Bank 0
	BTFSS S31,6
	GOTO LABEL_LT26_SETFD


	MOVLW 0
	MOVWF SYS_TMP1
	MOVLW 1
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	MOVLW LOW TAB_LT26
	MOVWF SYS_TMP4
	MOVLW HIGH TAB_LT26
	MOVWF SYS_TMP5

	MOVLW HIGH LCD_LB1_WRITESTR	; set page
	MOVWF PCLATH

	CALL LCD_LB1_WRITESTR

	BSF PCLATH,3	; Page 1
	BCF PCLATH,4	; Page 1
LABEL_LT26_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S31,6
	GOTO LABEL_LT26_SETFD2
	BSF STATUS,RP0	; Bank 1
	BSF LT26_FD,0
	GOTO LABEL_LT26_END
LABEL_LT26_SETFD2
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF LT26_FD,0
LABEL_LT26_END

;***************************************************
; Mono-Flop -> MF1
;***************************************************

; Läuft der Impuls ?

	BTFSC MF1_FD,1
	GOTO LABEL_MF1_CHKTIME

; Test auf positive Flanke

	BTFSC MF1_FD,0
	GOTO LABEL_MF1_SETFD
	BCF STATUS,RP0	; Bank 0
	BTFSS PORTA,5
	GOTO LABEL_MF1_SETFD


LABEL_MF1_RESET

	BSF STATUS,RP0	; Bank 1
	CLRF MF1
	CLRF MF1_HI
	BSF MF1_FD,1
	BSF S32,0

LABEL_MF1_CHKTIME

	MOVLW 0
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	SUBWF MF1_HI,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MF1_CHECK
	MOVLW 78
	SUBWF MF1,W
LABEL_MF1_CHECK
	BTFSS STATUS,CARRY
	GOTO LABEL_MF1_SETFD
LABEL_MF1_TO

	BCF MF1_FD,1
	BCF S32,0

LABEL_MF1_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS PORTA,5
	GOTO LABEL_MF1_CLR
	BSF STATUS,RP0	; Bank 1
	BSF MF1_FD,0
	GOTO LABEL_MF1_ENDE
LABEL_MF1_CLR
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF MF1_FD,0

LABEL_MF1_ENDE

;***************************************************
; One Shot -> OS1
;***************************************************


	BTFSS S32,0
	GOTO LABEL_OS1_1
	BTFSC OS1_FD,0
	GOTO LABEL_OS1_1
	BSF OS1_FD,0
	BCF STATUS,RP0	; Bank 0
	BSF S31,7
	GOTO LABEL_OS1_2
LABEL_OS1_1
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF S31,7
	BSF STATUS,RP0	; Bank 1
	BTFSC S32,0
	GOTO LABEL_OS1_2
	BCF OS1_FD,0
LABEL_OS1_2
;****************************************

	BCF PCLATH,3	; Page 0
	GOTO MAIN






TAB_LT3
	RETLW 83	; S
	RETLW 101	; e
	RETLW 110	; n
	RETLW 49	; 1
	RETLW 32	;  
	RETLW 45	; -
	RETLW 0	; end


TAB_LT4
	RETLW 67	; C
	RETLW 101	; e
	RETLW 108	; l
	RETLW 115	; s
	RETLW 105	; i
	RETLW 117	; u
	RETLW 115	; s
	RETLW 0	; end






TAB_LT7
	RETLW 83	; S
	RETLW 101	; e
	RETLW 110	; n
	RETLW 50	; 2
	RETLW 32	;  
	RETLW 45	; -
	RETLW 0	; end


TAB_LT8
	RETLW 67	; C
	RETLW 101	; e
	RETLW 108	; l
	RETLW 115	; s
	RETLW 105	; i
	RETLW 117	; u
	RETLW 115	; s
	RETLW 0	; end




TAB_LT10
	RETLW 83	; S
	RETLW 101	; e
	RETLW 110	; n
	RETLW 51	; 3
	RETLW 32	;  
	RETLW 45	; -
	RETLW 0	; end


TAB_LT11
	RETLW 67	; C
	RETLW 101	; e
	RETLW 108	; l
	RETLW 115	; s
	RETLW 105	; i
	RETLW 117	; u
	RETLW 115	; s
	RETLW 0	; end






TAB_LT14
	RETLW 83	; S
	RETLW 101	; e
	RETLW 110	; n
	RETLW 52	; 4
	RETLW 32	;  
	RETLW 45	; -
	RETLW 0	; end


TAB_LT15
	RETLW 67	; C
	RETLW 101	; e
	RETLW 108	; l
	RETLW 115	; s
	RETLW 105	; i
	RETLW 117	; u
	RETLW 115	; s
	RETLW 0	; end




TAB_LT17
	RETLW 83	; S
	RETLW 101	; e
	RETLW 110	; n
	RETLW 50	; 2
	RETLW 32	;  
	RETLW 0	; end


TAB_LT18
	RETLW 83	; S
	RETLW 101	; e
	RETLW 110	; n
	RETLW 49	; 1
	RETLW 32	;  
	RETLW 0	; end


TAB_LT19
	RETLW 67	; C
	RETLW 101	; e
	RETLW 108	; l
	RETLW 115	; s
	RETLW 105	; i
	RETLW 117	; u
	RETLW 115	; s
	RETLW 0	; end


TAB_LT20
	RETLW 67	; C
	RETLW 101	; e
	RETLW 108	; l
	RETLW 115	; s
	RETLW 105	; i
	RETLW 117	; u
	RETLW 115	; s
	RETLW 0	; end


TAB_LT21
	RETLW 83	; S
	RETLW 101	; e
	RETLW 110	; n
	RETLW 51	; 3
	RETLW 0	; end


TAB_LT22
	RETLW 67	; C
	RETLW 101	; e
	RETLW 108	; l
	RETLW 115	; s
	RETLW 105	; i
	RETLW 117	; u
	RETLW 115	; s
	RETLW 0	; end


TAB_LT23
	RETLW 83	; S
	RETLW 101	; e
	RETLW 110	; n
	RETLW 52	; 4
	RETLW 0	; end


TAB_LT24
	RETLW 67	; C
	RETLW 101	; e
	RETLW 108	; l
	RETLW 115	; s
	RETLW 105	; i
	RETLW 117	; u
	RETLW 115	; s
	RETLW 0	; end

;***************************************************
; Table -> TAB
;***************************************************

TAB

	RETLW 1	; // INDEX 0
	RETLW 2	; // INDEX 1
	RETLW 4	; // INDEX 2
	RETLW 8	; // INDEX 3
	RETLW 16	; // INDEX 4
	RETLW 32	; // INDEX 5
	RETLW 64	; // INDEX 6
	RETLW 128	; // INDEX 7


TAB_LT25
	RETLW 32	;  
	RETLW 32	;  
	RETLW 32	;  
	RETLW 78	; N
	RETLW 121	; y
	RETLW 111	; o
	RETLW 109	; m
	RETLW 100	; d
	RETLW 32	;  
	RETLW 109	; m
	RETLW 101	; e
	RETLW 103	; g
	RETLW 32	;  
	RETLW 97	; a
	RETLW 32	;  
	RETLW 32	;  
	RETLW 0	; end


TAB_LT26
	RETLW 32	;  
	RETLW 102	; f
	RETLW 101	; e
	RETLW 107	; k
	RETLW 101	; e
	RETLW 116	; t
	RETLW 101	; e
	RETLW 32	;  
	RETLW 32	;  
	RETLW 103	; g
	RETLW 111	; o
	RETLW 109	; m
	RETLW 98	; b
	RETLW 111	; o
	RETLW 116	; t
	RETLW 33	; !
	RETLW 0	; end


	END

