; Source created with Parsic Version 3.x

; at              : 2011.08.12. 9:28:31


; Project File    : C:\-PARSI~1\analog27.PIC

; Project Version : 1.0.13

; Created         : 2011.06.18. 6:37:00

; Last change     : 2011.08.12. 9:15:00

	PROCESSOR 16F876A

	INCLUDE P16F876A.INC

	RADIX DEC


	__IDLOCS H'0100'

	__CONFIG _CP_OFF & _PWRTE_OFF & _WDT_OFF & _BODEN_OFF & _XT_OSC & _LVP_OFF & _CPD_OFF & _DEBUG_OFF

; Diverses

ZERO	EQU Z	; ZERO-Flag
CARRY	 EQU C	; CARRY-Flag


; Variable

TR1	= 32	; located in Bank 0
TR1_HI	= 33	; located in Bank 0
S64	= 34	; located in Bank 0
S4	= 35	; located in Bank 0
S4_HI	= 36	; located in Bank 0
S5	= 37	; located in Bank 0
S5_HI	= 38	; located in Bank 0
S2	= 39	; located in Bank 0
S2_HI	= 40	; located in Bank 0
S1	= 41	; located in Bank 0
S1_HI	= 42	; located in Bank 0
S7	= 43	; located in Bank 0
S7_HI	= 44	; located in Bank 0
S3	= 45	; located in Bank 0
S3_HI	= 46	; located in Bank 0
S6	= 47	; located in Bank 0
S6_HI	= 48	; located in Bank 0
S8	= 49	; located in Bank 0
S8_HI	= 50	; located in Bank 0
S9	= 51	; located in Bank 0
S9_HI	= 52	; located in Bank 0
S10	= 53	; located in Bank 0
S10_HI	= 54	; located in Bank 0
S11	= 55	; located in Bank 0
S11_HI	= 56	; located in Bank 0
S12	= 57	; located in Bank 0
S12_HI	= 58	; located in Bank 0
S13	= 59	; located in Bank 0
S13_HI	= 60	; located in Bank 0
S14	= 61	; located in Bank 0
S14_HI	= 62	; located in Bank 0
S15	= 63	; located in Bank 0
S15_HI	= 64	; located in Bank 0
S16	= 65	; located in Bank 0
S16_HI	= 66	; located in Bank 0
S17	= 67	; located in Bank 0
S17_HI	= 68	; located in Bank 0
S18	= 69	; located in Bank 0
S18_HI	= 70	; located in Bank 0
S19	= 71	; located in Bank 0
S19_HI	= 72	; located in Bank 0
S21	= 73	; located in Bank 0
S21_HI	= 74	; located in Bank 0
S20	= 75	; located in Bank 0
S20_HI	= 76	; located in Bank 0
S22	= 77	; located in Bank 0
S22_HI	= 78	; located in Bank 0
S24	= 79	; located in Bank 0
S24_HI	= 80	; located in Bank 0
ZV1	= 81	; located in Bank 0
ZV1_HI	= 82	; located in Bank 0
ZV1_FD	= 83	; located in Bank 0
S25	= 84	; located in Bank 0
S25_HI	= 85	; located in Bank 0
S26	= 86	; located in Bank 0
S26_HI	= 87	; located in Bank 0
S27	= 88	; located in Bank 0
S27_HI	= 89	; located in Bank 0
S28	= 90	; located in Bank 0
S28_HI	= 91	; located in Bank 0
OS1_FD	= 92	; located in Bank 0
S0	= 93	; located in Bank 0
S0_HI	= 94	; located in Bank 0
S29	= 95	; located in Bank 0
S29_HI	= 96	; located in Bank 0
S65	= 97	; located in Bank 0
ZV2	= 98	; located in Bank 0
ZV2_HI	= 99	; located in Bank 0
ZV2_FD	= 100	; located in Bank 0
ZV3	= 101	; located in Bank 0
ZV3_HI	= 102	; located in Bank 0
ZV3_FD	= 103	; located in Bank 0
ZV4	= 104	; located in Bank 0
ZV4_HI	= 105	; located in Bank 0
ZV4_FD	= 106	; located in Bank 0
TR2	= 107	; located in Bank 0
TR2_HI	= 108	; located in Bank 0
S23	= 109	; located in Bank 0
S23_HI	= 110	; located in Bank 0
ADC0	= 111	; located in Bank 0
ADC0_HI	= 112	; located in Bank 0, 1, 2, 3
S66	= 113	; located in Bank 0, 1, 2, 3
OS2_FD	= 114	; located in Bank 0, 1, 2, 3
SYS_WSAV	= 115	; located in Bank 0, 1, 2, 3
SYS_SSAV	= 116	; located in Bank 0, 1, 2, 3
SYS_PSAV	= 117	; located in Bank 0, 1, 2, 3
SYS_TMP1	= 118	; located in Bank 0, 1, 2, 3
SYS_TMP2	= 119	; located in Bank 0, 1, 2, 3
SYS_TMP3	= 120	; located in Bank 0, 1, 2, 3
SYS_TMP4	= 121	; located in Bank 0, 1, 2, 3
SYS_TMP5	= 122	; located in Bank 0, 1, 2, 3
SYS_TMP6	= 123	; located in Bank 0, 1, 2, 3
SYS_TMP7	= 124	; located in Bank 0, 1, 2, 3
S30	= 160	; located in Bank 1
S30_HI	= 161	; located in Bank 1
S31	= 162	; located in Bank 1
S31_HI	= 163	; located in Bank 1
S32	= 164	; located in Bank 1
S32_HI	= 165	; located in Bank 1
S33	= 166	; located in Bank 1
S33_HI	= 167	; located in Bank 1
S34	= 168	; located in Bank 1
S34_HI	= 169	; located in Bank 1
S35	= 170	; located in Bank 1
S35_HI	= 171	; located in Bank 1
S36	= 172	; located in Bank 1
S36_HI	= 173	; located in Bank 1
S37	= 174	; located in Bank 1
S37_HI	= 175	; located in Bank 1
S38	= 176	; located in Bank 1
S38_HI	= 177	; located in Bank 1
S39	= 178	; located in Bank 1
S39_HI	= 179	; located in Bank 1
S40	= 180	; located in Bank 1
S40_HI	= 181	; located in Bank 1
S41	= 182	; located in Bank 1
S41_HI	= 183	; located in Bank 1
S43	= 184	; located in Bank 1
S43_HI	= 185	; located in Bank 1
S42	= 186	; located in Bank 1
S42_HI	= 187	; located in Bank 1
S44	= 188	; located in Bank 1
S44_HI	= 189	; located in Bank 1
S45	= 190	; located in Bank 1
S45_HI	= 191	; located in Bank 1
ZV5	= 192	; located in Bank 1
ZV5_HI	= 193	; located in Bank 1
ZV5_FD	= 194	; located in Bank 1
EGY	= 195	; located in Bank 1
EGY_HI	= 196	; located in Bank 1
S46	= 197	; located in Bank 1
S46_HI	= 198	; located in Bank 1
S48	= 199	; located in Bank 1
S48_HI	= 200	; located in Bank 1
S57	= 201	; located in Bank 1
S57_HI	= 202	; located in Bank 1
S49	= 203	; located in Bank 1
S49_HI	= 204	; located in Bank 1
S51	= 205	; located in Bank 1
S51_HI	= 206	; located in Bank 1
S60	= 207	; located in Bank 1
S60_HI	= 208	; located in Bank 1
S52	= 209	; located in Bank 1
S52_HI	= 210	; located in Bank 1
S54	= 211	; located in Bank 1
S54_HI	= 212	; located in Bank 1
S63	= 213	; located in Bank 1
S63_HI	= 214	; located in Bank 1
S47	= 215	; located in Bank 1
S47_HI	= 216	; located in Bank 1
ZV6	= 217	; located in Bank 1
ZV6_HI	= 218	; located in Bank 1
ZV6_FD	= 219	; located in Bank 1
S50	= 220	; located in Bank 1
S50_HI	= 221	; located in Bank 1
S53	= 222	; located in Bank 1
S53_HI	= 223	; located in Bank 1
S67	= 224	; located in Bank 1
OS3_FD	= 225	; located in Bank 1
ADC1	= 226	; located in Bank 1
ADC1_HI	= 227	; located in Bank 1
MF1	= 228	; located in Bank 1
MF1_HI	= 229	; located in Bank 1
OS4_FD	= 230	; located in Bank 1
S55	= 231	; located in Bank 1
S55_HI	= 232	; located in Bank 1
KETTO	= 233	; located in Bank 1
KETTO_HI	= 234	; located in Bank 1
S56	= 235	; located in Bank 1
S56_HI	= 236	; located in Bank 1
HAROM	= 237	; located in Bank 1
HAROM_HI	= 238	; located in Bank 1
S58	= 239	; located in Bank 1
S58_HI	= 272	; located in Bank 2
NEGY	= 273	; located in Bank 2
NEGY_HI	= 274	; located in Bank 2
S59	= 275	; located in Bank 2
S59_HI	= 276	; located in Bank 2
OT	= 277	; located in Bank 2
OT_HI	= 278	; located in Bank 2
S61	= 279	; located in Bank 2
S61_HI	= 280	; located in Bank 2
HAT	= 281	; located in Bank 2
HAT_HI	= 282	; located in Bank 2
S62	= 283	; located in Bank 2
S62_HI	= 284	; located in Bank 2
TEMP	= 285	; located in Bank 2
TEMP_HI	= 286	; located in Bank 2
RAM	= 287	; located in Bank 2

	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 PCLATH
	MOVWF SYS_PSAV
	CLRF PCLATH

	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
	INCFSZ TR2,F
	GOTO SYS_INT_LABEL_1
	INCF TR2_HI,F

SYS_INT_LABEL_1
	BSF STATUS,RP0	; Bank 1
	INCFSZ MF1,F
	GOTO SYS_INT_LABEL_2
	INCF MF1_HI,F

SYS_INT_LABEL_2

EXITINT
	MOVFW SYS_PSAV
	MOVWF PCLATH

	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
	MOVWF ADC1
	BCF STATUS,RP0	; Bank 0
	MOVFW ADRESH
	BSF STATUS,RP0	; Bank 1
	MOVWF ADC1_HI

	MOVLW 6
	MOVWF ADCON1
	MOVLW B'11111111'
	MOVWF TRISA
	RETURN

BEGININC1133
	ERRORLEVEL +306	; enable warning (Pageswitching)
	ERRORLEVEL +302	; enable warning (Bankswitching)

	INCLUDE 6DIGIT.INC

	ERRORLEVEL -302	; disable warning (Bankswitching)
	ERRORLEVEL -306	; disable warning (Pageswitching)
ENDINC1133


;****************************************
;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 143
	BSF STATUS,RP0	; Bank 1
	MOVWF OPTION_REG

	MOVLW 6	; all Digital
	MOVWF ADCON1

; Richtung setzen

	MOVLW B'11111111'
	MOVWF TRISA

	MOVLW B'11111111'
	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

	MOVLW B'01001001'
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	MOVWF S65
	MOVLW B'00010100'
	MOVWF S66
	MOVLW B'00010000'
	BSF STATUS,RP0	; Bank 1
	MOVWF S67

BEGININC1134
	ERRORLEVEL +306	; enable warning (Pageswitching)
	ERRORLEVEL +302	; enable warning (Bankswitching)

	INCLUDE KIJELZO_.INC

	ERRORLEVEL -302	; disable warning (Bankswitching)
	ERRORLEVEL -306	; disable warning (Pageswitching)
ENDINC1134

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	CLRF TMR0
	BCF INTCON,T0IF
	BSF INTCON,GIE	; Interrupt freigeben

;**********************************
;******* Haupt-Programm ***********
;**********************************

MAIN

	CALL READ_AN0
	CALL READ_AN1
;***************************************************
; Timer -> TR1
;***************************************************

	MOVLW 0	; Test auf >=
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	SUBWF TR1_HI,W	;F-W -> W
	BTFSS STATUS,ZERO
	GOTO LABEL_TR1_CHECK
	MOVLW 195
	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 195
	SUBWF TR1,F	;F-W -> F
	BTFSS STATUS,CARRY
	DECF TR1_HI,F

LABEL_TR1_SET	; toggel output
	BTFSC S64,6
	GOTO LABEL_TR1_CLR
	BSF S64,6
	GOTO LABEL_TR1_ENDE
LABEL_TR1_CLR
	BCF S64,6
LABEL_TR1_ENDE

;***************************************************
;AF1
;***************************************************

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	MOVFW S0
	MOVWF SYS_TMP1
	MOVFW S0_HI
	MOVWF SYS_TMP2
	MOVLW LOW 256
	MOVWF SYS_TMP3
	MOVLW HIGH 256
	MOVWF SYS_TMP4
	MOVLW HIGH SYSDIV16
	MOVWF PCLATH
	CALL SYSDIV16
	MOVLW HIGH LABEL_AF1
	MOVWF PCLATH
LABEL_AF1
	MOVFW SYS_TMP5
	MOVWF S4
	MOVFW SYS_TMP6
	MOVWF S4_HI

LABEL_AF1_EXIT
;***************************************************
;AF2
;***************************************************

	MOVLW HIGH 50
	SUBWF S4_HI,W
	MOVWF S5_HI
	MOVLW LOW 50
	SUBWF S4,W
	MOVWF S5
	BTFSS STATUS,CARRY
	DECF S5_HI,F

LABEL_AF2_EXIT
;***************************************************
;AF3
;***************************************************

	MOVFW S7_HI
	SUBWF S0_HI,W
	MOVWF S2_HI
	MOVFW S7
	SUBWF S0,W
	MOVWF S2
	BTFSS STATUS,CARRY
	DECF S2_HI,F

LABEL_AF3_EXIT
;***************************************************
;AF4
;***************************************************

	MOVFW S3
	MOVWF SYS_TMP1
	MOVFW S3_HI
	MOVWF SYS_TMP2
	MOVLW LOW 256
	MOVWF SYS_TMP3
	MOVLW HIGH 256
	MOVWF SYS_TMP4
	MOVLW HIGH SYSDIV16
	MOVWF PCLATH
	CALL SYSDIV16
	MOVLW HIGH LABEL_AF4
	MOVWF PCLATH
LABEL_AF4
	MOVFW SYS_TMP5
	MOVWF S1
	MOVFW SYS_TMP6
	MOVWF S1_HI

LABEL_AF4_EXIT
;***************************************************
;AF5
;***************************************************

	MOVFW S4
	MOVWF SYS_TMP1
	MOVFW S4_HI
	MOVWF SYS_TMP2
	MOVLW LOW 256
	MOVWF SYS_TMP3
	MOVLW HIGH 256
	MOVWF SYS_TMP4
	MOVLW HIGH SYSMUL16
	MOVWF PCLATH
	CALL SYSMUL16
	MOVLW HIGH LABEL_AF5
	MOVWF PCLATH
LABEL_AF5
	MOVFW SYS_TMP5
	MOVWF S7
	MOVFW SYS_TMP6
	MOVWF S7_HI

LABEL_AF5_EXIT
;***************************************************
;AF6
;***************************************************

	MOVFW S2
	MOVWF SYS_TMP1
	MOVFW S2_HI
	MOVWF SYS_TMP2
	MOVLW LOW 100
	MOVWF SYS_TMP3
	MOVLW HIGH 100
	MOVWF SYS_TMP4
	MOVLW HIGH SYSMUL16
	MOVWF PCLATH
	CALL SYSMUL16
	MOVLW HIGH LABEL_AF6
	MOVWF PCLATH
LABEL_AF6
	MOVFW SYS_TMP5
	MOVWF S3
	MOVFW SYS_TMP6
	MOVWF S3_HI

LABEL_AF6_EXIT
;***************************************************
; Vergleich -> IF1
;***************************************************

	MOVLW HIGH 12875
	SUBWF S0_HI,W	; F - W -> W

	BTFSS STATUS,ZERO	; Wenn ZERO gesetzt LOW-Byte testen
	GOTO LABEL_IF1_CHECK
	MOVLW LOW 12875
	SUBWF S0,W	; F - W -> W

LABEL_IF1_CHECK
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS STATUS,CARRY	; Test auf -> >=
	GOTO LABEL_IF1_FALSE

LABEL_IF1_TRUE
	BSF S64,1
	GOTO LABEL_IF1_EXIT

LABEL_IF1_FALSE
	BCF S64,1

LABEL_IF1_EXIT
;***************************************************
; UND - Gatter -> LG1
;***************************************************

LABEL_LG1_1
	BTFSS S64,1
	GOTO LABEL_LG1_FALSE
LABEL_LG1_2
	BTFSS S64,0
	GOTO LABEL_LG1_FALSE

LABEL_LG1_TRUE
	BSF S64,3
	GOTO LABEL_LG1_ENDE
LABEL_LG1_FALSE
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF S64,3
LABEL_LG1_ENDE
;***************************************************
; UND - Gatter -> LG2
;***************************************************

LABEL_LG2_1
	BTFSC S64,1
	GOTO LABEL_LG2_FALSE
LABEL_LG2_2
	BTFSS S64,0
	GOTO LABEL_LG2_FALSE

LABEL_LG2_TRUE
	BSF S64,2
	GOTO LABEL_LG2_ENDE
LABEL_LG2_FALSE
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF S64,2
LABEL_LG2_ENDE
;***************************************************
;AF7
;***************************************************

	MOVFW S1_HI
	SUBLW HIGH 99
	MOVWF S6_HI
	MOVFW S1
	SUBLW LOW 99
	MOVWF S6
	BTFSS STATUS,CARRY
	DECF S6_HI,F

LABEL_AF7_EXIT
;***************************************************
; Multiplexer -> MX1
;***************************************************

	CLRF SYS_TMP1
	MOVFW ZV1
	BTFSS STATUS,ZERO
	GOTO LABEL_MX1_CHECKCONTROL1

	MOVFW S23
	MOVWF S8
	MOVFW S23_HI
	MOVWF S8_HI
	GOTO LABEL_MX1_END

LABEL_MX1_CHECKCONTROL1
	INCF SYS_TMP1,F
	MOVFW ZV1
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX1_CHECKCONTROL2

	MOVFW S23
	MOVWF S9
	MOVFW S23_HI
	MOVWF S9_HI
	GOTO LABEL_MX1_END

LABEL_MX1_CHECKCONTROL2
	INCF SYS_TMP1,F
	MOVFW ZV1
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX1_CHECKCONTROL3

	MOVFW S23
	MOVWF S10
	MOVFW S23_HI
	MOVWF S10_HI
	GOTO LABEL_MX1_END

LABEL_MX1_CHECKCONTROL3
	INCF SYS_TMP1,F
	MOVFW ZV1
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX1_CHECKCONTROL4

	MOVFW S23
	MOVWF S11
	MOVFW S23_HI
	MOVWF S11_HI
	GOTO LABEL_MX1_END

LABEL_MX1_CHECKCONTROL4
	INCF SYS_TMP1,F
	MOVFW ZV1
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX1_CHECKCONTROL5

	MOVFW S23
	MOVWF S12
	MOVFW S23_HI
	MOVWF S12_HI
	GOTO LABEL_MX1_END

LABEL_MX1_CHECKCONTROL5
	INCF SYS_TMP1,F
	MOVFW ZV1
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX1_CHECKCONTROL6

	MOVFW S23
	MOVWF S13
	MOVFW S23_HI
	MOVWF S13_HI
	GOTO LABEL_MX1_END

LABEL_MX1_CHECKCONTROL6
	INCF SYS_TMP1,F
	MOVFW ZV1
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX1_CHECKCONTROL7

	MOVFW S23
	MOVWF S14
	MOVFW S23_HI
	MOVWF S14_HI
	GOTO LABEL_MX1_END

LABEL_MX1_CHECKCONTROL7
	INCF SYS_TMP1,F
	MOVFW ZV1
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX1_CHECKCONTROL8

	MOVFW S23
	MOVWF S15
	MOVFW S23_HI
	MOVWF S15_HI
	GOTO LABEL_MX1_END

LABEL_MX1_CHECKCONTROL8

LABEL_MX1_END

;***************************************************
;AF8
;***************************************************

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	MOVFW S8_HI
	ADDWF S9_HI,W
	MOVWF S16_HI
	MOVFW S8
	ADDWF S9,W
	MOVWF S16
	BTFSC STATUS,CARRY
	INCF S16_HI,F

LABEL_AF8_EXIT
;***************************************************
;AF9
;***************************************************

	MOVFW S10_HI
	ADDWF S11_HI,W
	MOVWF S17_HI
	MOVFW S10
	ADDWF S11,W
	MOVWF S17
	BTFSC STATUS,CARRY
	INCF S17_HI,F

LABEL_AF9_EXIT
;***************************************************
;AF10
;***************************************************

	MOVFW S12_HI
	ADDWF S13_HI,W
	MOVWF S18_HI
	MOVFW S12
	ADDWF S13,W
	MOVWF S18
	BTFSC STATUS,CARRY
	INCF S18_HI,F

LABEL_AF10_EXIT
;***************************************************
;AF11
;***************************************************

	MOVFW S14_HI
	ADDWF S15_HI,W
	MOVWF S19_HI
	MOVFW S14
	ADDWF S15,W
	MOVWF S19
	BTFSC STATUS,CARRY
	INCF S19_HI,F

LABEL_AF11_EXIT
;***************************************************
;AF12
;***************************************************

	MOVFW S16_HI
	ADDWF S17_HI,W
	MOVWF S21_HI
	MOVFW S16
	ADDWF S17,W
	MOVWF S21
	BTFSC STATUS,CARRY
	INCF S21_HI,F

LABEL_AF12_EXIT
;***************************************************
;AF13
;***************************************************

	MOVFW S18_HI
	ADDWF S19_HI,W
	MOVWF S20_HI
	MOVFW S18
	ADDWF S19,W
	MOVWF S20
	BTFSC STATUS,CARRY
	INCF S20_HI,F

LABEL_AF13_EXIT
;***************************************************
;AF14
;***************************************************

	MOVFW S21_HI
	ADDWF S20_HI,W
	MOVWF S22_HI
	MOVFW S21
	ADDWF S20,W
	MOVWF S22
	BTFSC STATUS,CARRY
	INCF S22_HI,F

LABEL_AF14_EXIT
;***************************************************
;AF15
;***************************************************

	MOVFW S22
	MOVWF SYS_TMP1
	MOVFW S22_HI
	MOVWF SYS_TMP2
	MOVLW LOW 8
	MOVWF SYS_TMP3
	MOVLW HIGH 8
	MOVWF SYS_TMP4
	MOVLW HIGH SYSDIV16
	MOVWF PCLATH
	CALL SYSDIV16
	MOVLW HIGH LABEL_AF15
	MOVWF PCLATH
LABEL_AF15
	MOVFW SYS_TMP5
	MOVWF S24
	MOVFW SYS_TMP6
	MOVWF S24_HI

LABEL_AF15_EXIT
;***************************************************
; Zähler -> ZV1
;***************************************************

	BTFSS S64,4	; Reset ?
	GOTO LABEL_ZV1_COUNT
	CLRF ZV1
	CLRF ZV1_HI
	GOTO LABEL_ZV1_SETOUT

LABEL_ZV1_COUNT

; Test auf positive Flanke

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S64,0
	GOTO LABEL_ZV1_SETFD
	BTFSC ZV1_FD,0
	GOTO LABEL_ZV1_SETFD

	BSF ZV1_FD,0


	BTFSC S64,5	; Vorwärts oder Rückwärts ?
	GOTO LABEL_ZV1_BACKWARD

	INCFSZ ZV1,F
	GOTO LABEL_ZV1_SETOUT
	INCF ZV1_HI,F
	GOTO LABEL_ZV1_SETOUT

LABEL_ZV1_BACKWARD
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	DECF ZV1,F
	INCFSZ ZV1,W
	GOTO LABEL_ZV1_SETOUT
	DECF ZV1_HI,F

LABEL_ZV1_SETOUT

; Output Q3

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS ZV1,3
	GOTO LABEL_ZV1_SETOUT3
	BSF S64,4
	GOTO LABEL_ZV1_SETOUT3_END
LABEL_ZV1_SETOUT3
	BCF S64,4
LABEL_ZV1_SETOUT3_END


LABEL_ZV1_SETFD

; Test auf negative Flanke

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSC S64,0
	GOTO LABEL_ZV1_EXIT
	BCF ZV1_FD,0

LABEL_ZV1_EXIT

;***************************************************
; GND
;***************************************************

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF S64,5	; immer Low

;***************************************************
;AF16
;***************************************************

	BSF STATUS,RP0	; Bank 1
	MOVFW S45
	MOVWF SYS_TMP1
	MOVFW S45_HI
	MOVWF SYS_TMP2
	MOVLW LOW 2
	MOVWF SYS_TMP3
	MOVLW HIGH 2
	MOVWF SYS_TMP4
	MOVLW HIGH SYSMUL16
	MOVWF PCLATH
	CALL SYSMUL16
	MOVLW HIGH LABEL_AF16
	MOVWF PCLATH
LABEL_AF16
	MOVFW SYS_TMP5
	BCF STATUS,RP0	; Bank 0
	MOVWF S25
	MOVFW SYS_TMP6
	MOVWF S25_HI

LABEL_AF16_EXIT
;***************************************************
;AF17
;***************************************************

	MOVFW S25
	MOVWF SYS_TMP1
	MOVFW S25_HI
	MOVWF SYS_TMP2
	MOVLW LOW 100
	MOVWF SYS_TMP3
	MOVLW HIGH 100
	MOVWF SYS_TMP4
	MOVLW HIGH SYSDIV16
	MOVWF PCLATH
	CALL SYSDIV16
	MOVLW HIGH LABEL_AF17
	MOVWF PCLATH
LABEL_AF17
	MOVFW SYS_TMP5
	MOVWF S26
	MOVFW SYS_TMP6
	MOVWF S26_HI

LABEL_AF17_EXIT
;***************************************************
;AF18
;***************************************************

	MOVFW S26
	MOVWF SYS_TMP1
	MOVFW S26_HI
	MOVWF SYS_TMP2
	MOVLW LOW 100
	MOVWF SYS_TMP3
	MOVLW HIGH 100
	MOVWF SYS_TMP4
	MOVLW HIGH SYSMUL16
	MOVWF PCLATH
	CALL SYSMUL16
	MOVLW HIGH LABEL_AF18
	MOVWF PCLATH
LABEL_AF18
	MOVFW SYS_TMP5
	MOVWF S27
	MOVFW SYS_TMP6
	MOVWF S27_HI

LABEL_AF18_EXIT
;***************************************************
;AF19
;***************************************************

	MOVFW S27_HI
	SUBWF S25_HI,W
	MOVWF S28_HI
	MOVFW S27
	SUBWF S25,W
	MOVWF S28
	BTFSS STATUS,CARRY
	DECF S28_HI,F

LABEL_AF19_EXIT
;***************************************************
; One Shot -> OS1
;***************************************************


	BTFSS S64,6
	GOTO LABEL_OS1_1
	BTFSC OS1_FD,0
	GOTO LABEL_OS1_1
	BSF OS1_FD,0
	BSF S64,0
	GOTO LABEL_OS1_2
LABEL_OS1_1
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF S64,0
	BTFSC S64,6
	GOTO LABEL_OS1_2
	BCF OS1_FD,0
LABEL_OS1_2
;***************************************************
;AF20
;***************************************************

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	MOVFW S24
	MOVWF SYS_TMP1
	MOVFW S24_HI
	MOVWF SYS_TMP2
	MOVLW LOW 125
	MOVWF SYS_TMP3
	MOVLW HIGH 125
	MOVWF SYS_TMP4
	MOVLW HIGH SYSMUL16
	MOVWF PCLATH
	CALL SYSMUL16
	MOVLW HIGH LABEL_AF20
	MOVWF PCLATH
LABEL_AF20
	MOVFW SYS_TMP5
	MOVWF S0
	MOVFW SYS_TMP6
	MOVWF S0_HI

LABEL_AF20_EXIT
;***************************************************
;AF21
;***************************************************

	MOVFW S4_HI
	SUBLW HIGH 49
	MOVWF S29_HI
	MOVFW S4
	SUBLW LOW 49
	MOVWF S29
	BTFSS STATUS,CARRY
	DECF S29_HI,F

LABEL_AF21_EXIT
;***************************************************
; Schmitt-Trigger 16-Bit -> ST1
;***************************************************

	MOVLW LOW 60
	MOVWF SYS_TMP1
	MOVLW HIGH 60
	MOVWF SYS_TMP2

	BTFSS S65,4	; Ausgang gesetzt ?
	GOTO LABEL_ST1_TEST	; without Hysterese

	MOVLW HIGH 0
	SUBWF SYS_TMP2,F
	MOVLW LOW 0
	SUBWF SYS_TMP1,F
	BTFSS STATUS,CARRY
	DECF SYS_TMP2,F

LABEL_ST1_TEST
	MOVFW SYS_TMP2
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	SUBWF ZV2_HI,W

	BTFSS STATUS,ZERO
	GOTO LABEL_ST1_TEST2

	MOVFW SYS_TMP1
	SUBWF ZV2,W

LABEL_ST1_TEST2
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS STATUS,CARRY
	GOTO LABEL_ST1_RESET

LABEL_ST1_SET
	BSF S65,4	; if greater or equal
	GOTO LABEL_ST1_ENDE

LABEL_ST1_RESET
	BCF S65,4	; if less
LABEL_ST1_ENDE

;***************************************************
; Zähler -> ZV2
;***************************************************

	BTFSS S66,0	; Reset ?
	GOTO LABEL_ZV2_COUNT
	CLRF ZV2
	CLRF ZV2_HI
	GOTO LABEL_ZV2_SETOUT

LABEL_ZV2_COUNT

; Test auf positive Flanke

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S65,1
	GOTO LABEL_ZV2_SETFD
	BTFSC ZV2_FD,0
	GOTO LABEL_ZV2_SETFD

	BSF ZV2_FD,0


	BTFSC S66,5	; Vorwärts oder Rückwärts ?
	GOTO LABEL_ZV2_BACKWARD

	INCFSZ ZV2,F
	GOTO LABEL_ZV2_SETOUT
	INCF ZV2_HI,F
	GOTO LABEL_ZV2_SETOUT

LABEL_ZV2_BACKWARD
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	DECF ZV2,F
	INCFSZ ZV2,W
	GOTO LABEL_ZV2_SETOUT
	DECF ZV2_HI,F

LABEL_ZV2_SETOUT


LABEL_ZV2_SETFD

; Test auf negative Flanke

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSC S65,1
	GOTO LABEL_ZV2_EXIT
	BCF ZV2_FD,0

LABEL_ZV2_EXIT

;***************************************************
; Zähler -> ZV3
;***************************************************

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S64,7	; Reset ?
	GOTO LABEL_ZV3_COUNT
	CLRF ZV3
	CLRF ZV3_HI
	GOTO LABEL_ZV3_SETOUT

LABEL_ZV3_COUNT

; Test auf positive Flanke

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S65,5
	GOTO LABEL_ZV3_SETFD
	BTFSC ZV3_FD,0
	GOTO LABEL_ZV3_SETFD

	BSF ZV3_FD,0


	BTFSC S65,6	; Vorwärts oder Rückwärts ?
	GOTO LABEL_ZV3_BACKWARD

	INCFSZ ZV3,F
	GOTO LABEL_ZV3_SETOUT
	INCF ZV3_HI,F
	GOTO LABEL_ZV3_SETOUT

LABEL_ZV3_BACKWARD
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	DECF ZV3,F
	INCFSZ ZV3,W
	GOTO LABEL_ZV3_SETOUT
	DECF ZV3_HI,F

LABEL_ZV3_SETOUT


LABEL_ZV3_SETFD

; Test auf negative Flanke

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSC S65,5
	GOTO LABEL_ZV3_EXIT
	BCF ZV3_FD,0

LABEL_ZV3_EXIT

;***************************************************
; Schmitt-Trigger 16-Bit -> ST2
;***************************************************

	MOVLW LOW 60
	MOVWF SYS_TMP1
	MOVLW HIGH 60
	MOVWF SYS_TMP2

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S64,7	; Ausgang gesetzt ?
	GOTO LABEL_ST2_TEST	; without Hysterese

	MOVLW HIGH 0
	SUBWF SYS_TMP2,F
	MOVLW LOW 0
	SUBWF SYS_TMP1,F
	BTFSS STATUS,CARRY
	DECF SYS_TMP2,F

LABEL_ST2_TEST
	MOVFW SYS_TMP2
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	SUBWF ZV3_HI,W

	BTFSS STATUS,ZERO
	GOTO LABEL_ST2_TEST2

	MOVFW SYS_TMP1
	SUBWF ZV3,W

LABEL_ST2_TEST2
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS STATUS,CARRY
	GOTO LABEL_ST2_RESET

LABEL_ST2_SET
	BSF S64,7	; if greater or equal
	GOTO LABEL_ST2_ENDE

LABEL_ST2_RESET
	BCF S64,7	; if less
LABEL_ST2_ENDE

;***************************************************
; Schmitt-Trigger 16-Bit -> ST3
;***************************************************

	MOVLW LOW 24
	MOVWF SYS_TMP1
	MOVLW HIGH 24
	MOVWF SYS_TMP2

	BTFSS S65,2	; Ausgang gesetzt ?
	GOTO LABEL_ST3_TEST	; without Hysterese

	MOVLW HIGH 0
	SUBWF SYS_TMP2,F
	MOVLW LOW 0
	SUBWF SYS_TMP1,F
	BTFSS STATUS,CARRY
	DECF SYS_TMP2,F

LABEL_ST3_TEST
	MOVFW SYS_TMP2
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	SUBWF ZV4_HI,W

	BTFSS STATUS,ZERO
	GOTO LABEL_ST3_TEST2

	MOVFW SYS_TMP1
	SUBWF ZV4,W

LABEL_ST3_TEST2
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS STATUS,CARRY
	GOTO LABEL_ST3_RESET

LABEL_ST3_SET
	BSF S65,2	; if greater or equal
	GOTO LABEL_ST3_ENDE

LABEL_ST3_RESET
	BCF S65,2	; if less
LABEL_ST3_ENDE

;***************************************************
; ODER - Gatter -> LG3
;***************************************************

LABEL_LG3_1
	BTFSC S64,7
	GOTO LABEL_LG3_TRUE
LABEL_LG3_2
	BTFSC S65,0
	GOTO LABEL_LG3_TRUE

LABEL_LG3_FALSE
	BCF S65,7
	GOTO LABEL_LG3_ENDE
LABEL_LG3_TRUE
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BSF S65,7
LABEL_LG3_ENDE
;***************************************************
; UND - Gatter -> LG4
;***************************************************

LABEL_LG4_1
	BTFSS PORTA,4
	GOTO LABEL_LG4_FALSE

LABEL_LG4_TRUE
	BCF S65,0
	GOTO LABEL_LG4_ENDE
LABEL_LG4_FALSE
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BSF S65,0
LABEL_LG4_ENDE
;***************************************************
; ODER - Gatter -> LG5
;***************************************************

LABEL_LG5_1
	BTFSC S65,4
	GOTO LABEL_LG5_TRUE
LABEL_LG5_2
	BTFSC S65,3
	GOTO LABEL_LG5_TRUE

LABEL_LG5_FALSE
	BCF S65,5
	GOTO LABEL_LG5_ENDE
LABEL_LG5_TRUE
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BSF S65,5
LABEL_LG5_ENDE
;***************************************************
; UND - Gatter -> LG6
;***************************************************

LABEL_LG6_1
	BTFSS PORTA,5
	GOTO LABEL_LG6_FALSE

LABEL_LG6_TRUE
	BCF S65,3
	GOTO LABEL_LG6_ENDE
LABEL_LG6_FALSE
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BSF S65,3
LABEL_LG6_ENDE
;***************************************************
; Zähler -> ZV4
;***************************************************

	BTFSS S65,2	; Reset ?
	GOTO LABEL_ZV4_COUNT
	CLRF ZV4
	CLRF ZV4_HI
	GOTO LABEL_ZV4_SETOUT

LABEL_ZV4_COUNT

; Test auf positive Flanke

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S65,7
	GOTO LABEL_ZV4_SETFD
	BTFSC ZV4_FD,0
	GOTO LABEL_ZV4_SETFD

	BSF ZV4_FD,0


	BTFSC S65,6	; Vorwärts oder Rückwärts ?
	GOTO LABEL_ZV4_BACKWARD

	INCFSZ ZV4,F
	GOTO LABEL_ZV4_SETOUT
	INCF ZV4_HI,F
	GOTO LABEL_ZV4_SETOUT

LABEL_ZV4_BACKWARD
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	DECF ZV4,F
	INCFSZ ZV4,W
	GOTO LABEL_ZV4_SETOUT
	DECF ZV4_HI,F

LABEL_ZV4_SETOUT


LABEL_ZV4_SETFD

; Test auf negative Flanke

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSC S65,7
	GOTO LABEL_ZV4_EXIT
	BCF ZV4_FD,0

LABEL_ZV4_EXIT

;***************************************************
; Timer -> TR2
;***************************************************

	MOVLW 7	; Test auf >=
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	SUBWF TR2_HI,W	;F-W -> W
	BTFSS STATUS,ZERO
	GOTO LABEL_TR2_CHECK
	MOVLW 161
	SUBWF TR2,W	;F-W -> W
LABEL_TR2_CHECK
	BTFSS STATUS,CARRY
	GOTO LABEL_TR2_ENDE

LABEL_TR2_RESET
	MOVLW 7	; Test auf >=
	SUBWF TR2_HI,F	;F-W -> F
	MOVLW 161
	SUBWF TR2,F	;F-W -> F
	BTFSS STATUS,CARRY
	DECF TR2_HI,F

LABEL_TR2_SET	; toggel output
	BTFSC S65,1
	GOTO LABEL_TR2_CLR
	BSF S65,1
	GOTO LABEL_TR2_ENDE
LABEL_TR2_CLR
	BCF S65,1
LABEL_TR2_ENDE

;***************************************************
; Limiter -> LM1
;***************************************************

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	MOVFW ADC0
	MOVWF S23
	MOVFW ADC0_HI
	MOVWF S23_HI

	MOVLW HIGH 524
	SUBWF S23_HI,W
	BTFSS STATUS,ZERO
	GOTO LABEL_LM1_CHECK1
	MOVLW LOW 524
	SUBWF S23,W
LABEL_LM1_CHECK1
	BTFSS STATUS,CARRY
	GOTO LABEL_LM1_EXIT
	BTFSC STATUS,ZERO
	GOTO LABEL_LM1_EXIT
	MOVLW LOW 524
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	MOVWF S23
	MOVLW HIGH 524
	MOVWF S23_HI
LABEL_LM1_EXIT

;***************************************************
; ODER - Gatter -> LG7
;***************************************************

LABEL_LG7_1
	BTFSC S65,4
	GOTO LABEL_LG7_TRUE
LABEL_LG7_2
	BTFSC S66,1
	GOTO LABEL_LG7_TRUE

LABEL_LG7_FALSE
	BCF S66,0
	GOTO LABEL_LG7_ENDE
LABEL_LG7_TRUE
	BSF S66,0
LABEL_LG7_ENDE
;***************************************************
; One Shot -> OS2
;***************************************************


	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S65,3
	GOTO LABEL_OS2_1
	BTFSC OS2_FD,0
	GOTO LABEL_OS2_1
	BSF OS2_FD,0
	BSF S66,1
	GOTO LABEL_OS2_2
LABEL_OS2_1
	BCF S66,1
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSC S65,3
	GOTO LABEL_OS2_2
	BCF OS2_FD,0
LABEL_OS2_2
;***************************************************
; UND - Gatter -> LG8
;***************************************************

LABEL_LG8_1
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS PORTC,7
	GOTO LABEL_LG8_FALSE

LABEL_LG8_TRUE
	BCF S66,2
	GOTO LABEL_LG8_ENDE
LABEL_LG8_FALSE
	BSF S66,2
LABEL_LG8_ENDE
;***************************************************
; RS-FLIP-FLOP -> RS1
;***************************************************

	BTFSC S66,2
	GOTO LABEL_RS1_RESET
	BTFSS S66,4
	GOTO LABEL_RS1_ENDE
	BSF S66,3	; Ausgang setzen
	GOTO LABEL_RS1_ENDE
LABEL_RS1_RESET
	BCF S66,3	; Ausgang zurücksetzen
LABEL_RS1_ENDE

;***************************************************
; UND - Gatter -> LG9
;***************************************************

LABEL_LG9_1
	BTFSS S66,3
	GOTO LABEL_LG9_FALSE

LABEL_LG9_TRUE
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF S65,6
	GOTO LABEL_LG9_ENDE
LABEL_LG9_FALSE
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BSF S65,6
LABEL_LG9_ENDE
;***************************************************
; GND
;***************************************************

	BCF S66,5	; immer Low

;***************************************************
; VCC
;***************************************************

	BSF S66,4	; immer High

;***************************************************
; Multiplexer -> MX2
;***************************************************

	CLRF SYS_TMP1
	BSF STATUS,RP0	; Bank 1
	MOVFW ZV5
	BTFSS STATUS,ZERO
	GOTO LABEL_MX2_CHECKCONTROL1

	MOVFW ADC1
	MOVWF S30
	MOVFW ADC1_HI
	MOVWF S30_HI
	GOTO LABEL_MX2_END

LABEL_MX2_CHECKCONTROL1
	INCF SYS_TMP1,F
	BSF STATUS,RP0	; Bank 1
	MOVFW ZV5
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX2_CHECKCONTROL2

	MOVFW ADC1
	MOVWF S31
	MOVFW ADC1_HI
	MOVWF S31_HI
	GOTO LABEL_MX2_END

LABEL_MX2_CHECKCONTROL2
	INCF SYS_TMP1,F
	BSF STATUS,RP0	; Bank 1
	MOVFW ZV5
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX2_CHECKCONTROL3

	MOVFW ADC1
	MOVWF S32
	MOVFW ADC1_HI
	MOVWF S32_HI
	GOTO LABEL_MX2_END

LABEL_MX2_CHECKCONTROL3
	INCF SYS_TMP1,F
	BSF STATUS,RP0	; Bank 1
	MOVFW ZV5
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX2_CHECKCONTROL4

	MOVFW ADC1
	MOVWF S33
	MOVFW ADC1_HI
	MOVWF S33_HI
	GOTO LABEL_MX2_END

LABEL_MX2_CHECKCONTROL4
	INCF SYS_TMP1,F
	BSF STATUS,RP0	; Bank 1
	MOVFW ZV5
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX2_CHECKCONTROL5

	MOVFW ADC1
	MOVWF S34
	MOVFW ADC1_HI
	MOVWF S34_HI
	GOTO LABEL_MX2_END

LABEL_MX2_CHECKCONTROL5
	INCF SYS_TMP1,F
	BSF STATUS,RP0	; Bank 1
	MOVFW ZV5
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX2_CHECKCONTROL6

	MOVFW ADC1
	MOVWF S35
	MOVFW ADC1_HI
	MOVWF S35_HI
	GOTO LABEL_MX2_END

LABEL_MX2_CHECKCONTROL6
	INCF SYS_TMP1,F
	BSF STATUS,RP0	; Bank 1
	MOVFW ZV5
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX2_CHECKCONTROL7

	MOVFW ADC1
	MOVWF S36
	MOVFW ADC1_HI
	MOVWF S36_HI
	GOTO LABEL_MX2_END

LABEL_MX2_CHECKCONTROL7
	INCF SYS_TMP1,F
	BSF STATUS,RP0	; Bank 1
	MOVFW ZV5
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX2_CHECKCONTROL8

	MOVFW ADC1
	MOVWF S37
	MOVFW ADC1_HI
	MOVWF S37_HI
	GOTO LABEL_MX2_END

LABEL_MX2_CHECKCONTROL8

LABEL_MX2_END

;***************************************************
;AF22
;***************************************************

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW S30_HI
	ADDWF S31_HI,W
	MOVWF S38_HI
	MOVFW S30
	ADDWF S31,W
	MOVWF S38
	BTFSC STATUS,CARRY
	INCF S38_HI,F

LABEL_AF22_EXIT
;***************************************************
;AF23
;***************************************************

	MOVFW S32_HI
	ADDWF S33_HI,W
	MOVWF S39_HI
	MOVFW S32
	ADDWF S33,W
	MOVWF S39
	BTFSC STATUS,CARRY
	INCF S39_HI,F

LABEL_AF23_EXIT
;***************************************************
;AF24
;***************************************************

	MOVFW S34_HI
	ADDWF S35_HI,W
	MOVWF S40_HI
	MOVFW S34
	ADDWF S35,W
	MOVWF S40
	BTFSC STATUS,CARRY
	INCF S40_HI,F

LABEL_AF24_EXIT
;***************************************************
;AF25
;***************************************************

	MOVFW S36_HI
	ADDWF S37_HI,W
	MOVWF S41_HI
	MOVFW S36
	ADDWF S37,W
	MOVWF S41
	BTFSC STATUS,CARRY
	INCF S41_HI,F

LABEL_AF25_EXIT
;***************************************************
;AF26
;***************************************************

	MOVFW S38_HI
	ADDWF S39_HI,W
	MOVWF S43_HI
	MOVFW S38
	ADDWF S39,W
	MOVWF S43
	BTFSC STATUS,CARRY
	INCF S43_HI,F

LABEL_AF26_EXIT
;***************************************************
;AF27
;***************************************************

	MOVFW S40_HI
	ADDWF S41_HI,W
	MOVWF S42_HI
	MOVFW S40
	ADDWF S41,W
	MOVWF S42
	BTFSC STATUS,CARRY
	INCF S42_HI,F

LABEL_AF27_EXIT
;***************************************************
;AF28
;***************************************************

	MOVFW S43_HI
	ADDWF S42_HI,W
	MOVWF S44_HI
	MOVFW S43
	ADDWF S42,W
	MOVWF S44
	BTFSC STATUS,CARRY
	INCF S44_HI,F

LABEL_AF28_EXIT
;***************************************************
;AF29
;***************************************************

	MOVFW S44
	MOVWF SYS_TMP1
	MOVFW S44_HI
	MOVWF SYS_TMP2
	MOVLW LOW 8
	MOVWF SYS_TMP3
	MOVLW HIGH 8
	MOVWF SYS_TMP4
	MOVLW HIGH SYSDIV16
	MOVWF PCLATH
	CALL SYSDIV16
	MOVLW HIGH LABEL_AF29
	MOVWF PCLATH
LABEL_AF29
	MOVFW SYS_TMP5
	MOVWF S45
	MOVFW SYS_TMP6
	MOVWF S45_HI

LABEL_AF29_EXIT
;***************************************************
; Zähler -> ZV5
;***************************************************

	BTFSS S66,6	; Reset ?
	GOTO LABEL_ZV5_COUNT
	CLRF ZV5
	CLRF ZV5_HI
	GOTO LABEL_ZV5_SETOUT

LABEL_ZV5_COUNT

; Test auf positive Flanke

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S64,0
	GOTO LABEL_ZV5_SETFD
	BSF STATUS,RP0	; Bank 1
	BTFSC ZV5_FD,0
	GOTO LABEL_ZV5_SETFD

	BSF ZV5_FD,0


	BTFSC S66,7	; Vorwärts oder Rückwärts ?
	GOTO LABEL_ZV5_BACKWARD

	INCFSZ ZV5,F
	GOTO LABEL_ZV5_SETOUT
	INCF ZV5_HI,F
	GOTO LABEL_ZV5_SETOUT

LABEL_ZV5_BACKWARD
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	DECF ZV5,F
	INCFSZ ZV5,W
	GOTO LABEL_ZV5_SETOUT
	DECF ZV5_HI,F

LABEL_ZV5_SETOUT

; Output Q3

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSS ZV5,3
	GOTO LABEL_ZV5_SETOUT3
	BSF S66,6
	GOTO LABEL_ZV5_SETOUT3_END
LABEL_ZV5_SETOUT3
	BCF S66,6
LABEL_ZV5_SETOUT3_END


LABEL_ZV5_SETFD

; Test auf negative Flanke

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSC S64,0
	GOTO LABEL_ZV5_EXIT
	BSF STATUS,RP0	; Bank 1
	BCF ZV5_FD,0

LABEL_ZV5_EXIT

;***************************************************
; GND
;***************************************************

	BCF S66,7	; immer Low

;***************************************************
; Call subroutine TAB1
;***************************************************


	MOVLW LOW TAB1
	MOVWF SYS_TMP1
	MOVLW HIGH TAB1
	MOVWF SYS_TMP2

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF STATUS,CARRY
	RLF S55,W
	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 EGY


	INCF SYS_TMP1,F
	BTFSC STATUS,ZERO
	INCF SYS_TMP2,F

	MOVLW HIGH SYSTABJMP	; set page
	MOVWF PCLATH
	CALL SYSTABJMP

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVWF EGY_HI

	BSF INTCON,GIE
	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
;***************************************************
;AF30
;***************************************************

	MOVFW S47
	MOVWF SYS_TMP1
	MOVFW S47_HI
	MOVWF SYS_TMP2
	MOVLW LOW 10
	MOVWF SYS_TMP3
	MOVLW HIGH 10
	MOVWF SYS_TMP4
	MOVLW HIGH SYSDIV16
	MOVWF PCLATH
	CALL SYSDIV16
	MOVLW HIGH LABEL_AF30
	MOVWF PCLATH
LABEL_AF30
	MOVFW SYS_TMP5
	MOVWF S46
	MOVFW SYS_TMP6
	MOVWF S46_HI

LABEL_AF30_EXIT
;***************************************************
;AF31
;***************************************************

	MOVFW S46
	MOVWF SYS_TMP1
	MOVFW S46_HI
	MOVWF SYS_TMP2
	MOVLW LOW 10
	MOVWF SYS_TMP3
	MOVLW HIGH 10
	MOVWF SYS_TMP4
	MOVLW HIGH SYSMUL16
	MOVWF PCLATH
	CALL SYSMUL16
	MOVLW HIGH LABEL_AF31
	MOVWF PCLATH
LABEL_AF31
	MOVFW SYS_TMP5
	MOVWF S48
	MOVFW SYS_TMP6
	MOVWF S48_HI

LABEL_AF31_EXIT
;***************************************************
;AF32
;***************************************************

	MOVFW S48_HI
	SUBWF S47_HI,W
	MOVWF S57_HI
	MOVFW S48
	SUBWF S47,W
	MOVWF S57
	BTFSS STATUS,CARRY
	DECF S57_HI,F

LABEL_AF32_EXIT
;***************************************************
;AF33
;***************************************************

	MOVFW S50
	MOVWF SYS_TMP1
	MOVFW S50_HI
	MOVWF SYS_TMP2
	MOVLW LOW 10
	MOVWF SYS_TMP3
	MOVLW HIGH 10
	MOVWF SYS_TMP4
	MOVLW HIGH SYSDIV16
	MOVWF PCLATH
	CALL SYSDIV16
	MOVLW HIGH LABEL_AF33
	MOVWF PCLATH
LABEL_AF33
	MOVFW SYS_TMP5
	MOVWF S49
	MOVFW SYS_TMP6
	MOVWF S49_HI

LABEL_AF33_EXIT
;***************************************************
;AF34
;***************************************************

	MOVFW S49
	MOVWF SYS_TMP1
	MOVFW S49_HI
	MOVWF SYS_TMP2
	MOVLW LOW 10
	MOVWF SYS_TMP3
	MOVLW HIGH 10
	MOVWF SYS_TMP4
	MOVLW HIGH SYSMUL16
	MOVWF PCLATH
	CALL SYSMUL16
	MOVLW HIGH LABEL_AF34
	MOVWF PCLATH
LABEL_AF34
	MOVFW SYS_TMP5
	MOVWF S51
	MOVFW SYS_TMP6
	MOVWF S51_HI

LABEL_AF34_EXIT
;***************************************************
;AF35
;***************************************************

	MOVFW S51_HI
	SUBWF S50_HI,W
	MOVWF S60_HI
	MOVFW S51
	SUBWF S50,W
	MOVWF S60
	BTFSS STATUS,CARRY
	DECF S60_HI,F

LABEL_AF35_EXIT
;***************************************************
;AF36
;***************************************************

	MOVFW S53
	MOVWF SYS_TMP1
	MOVFW S53_HI
	MOVWF SYS_TMP2
	MOVLW LOW 10
	MOVWF SYS_TMP3
	MOVLW HIGH 10
	MOVWF SYS_TMP4
	MOVLW HIGH SYSDIV16
	MOVWF PCLATH
	CALL SYSDIV16
	MOVLW HIGH LABEL_AF36
	MOVWF PCLATH
LABEL_AF36
	MOVFW SYS_TMP5
	MOVWF S52
	MOVFW SYS_TMP6
	MOVWF S52_HI

LABEL_AF36_EXIT
;***************************************************
;AF37
;***************************************************

	MOVFW S52
	MOVWF SYS_TMP1
	MOVFW S52_HI
	MOVWF SYS_TMP2
	MOVLW LOW 10
	MOVWF SYS_TMP3
	MOVLW HIGH 10
	MOVWF SYS_TMP4
	MOVLW HIGH SYSMUL16
	MOVWF PCLATH
	CALL SYSMUL16
	MOVLW HIGH LABEL_AF37
	MOVWF PCLATH
LABEL_AF37
	MOVFW SYS_TMP5
	MOVWF S54
	MOVFW SYS_TMP6
	MOVWF S54_HI

LABEL_AF37_EXIT
;***************************************************
;AF38
;***************************************************

	MOVFW S54_HI
	SUBWF S53_HI,W
	MOVWF S63_HI
	MOVFW S54
	SUBWF S53,W
	MOVWF S63
	BTFSS STATUS,CARRY
	DECF S63_HI,F

LABEL_AF38_EXIT
;***************************************************
; Multiplexer -> MX3
;***************************************************

	CLRF SYS_TMP1
	MOVFW ZV6
	BTFSS STATUS,ZERO
	GOTO LABEL_MX3_CHECKCONTROL1

	MOVLW LOW 110
	MOVWF S47
	MOVLW HIGH 110
	MOVWF S47_HI
	GOTO LABEL_MX3_END

LABEL_MX3_CHECKCONTROL1
	INCF SYS_TMP1,F
	MOVFW ZV6
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX3_CHECKCONTROL2

	BCF STATUS,RP0	; Bank 0
	MOVFW ZV4
	BSF STATUS,RP0	; Bank 1
	MOVWF S47
	BCF STATUS,RP0	; Bank 0
	MOVFW ZV4_HI
	BSF STATUS,RP0	; Bank 1
	MOVWF S47_HI
	GOTO LABEL_MX3_END

LABEL_MX3_CHECKCONTROL2
	INCF SYS_TMP1,F
	MOVFW ZV6
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX3_CHECKCONTROL3

	MOVLW LOW 100
	MOVWF S47
	MOVLW HIGH 100
	MOVWF S47_HI
	GOTO LABEL_MX3_END

LABEL_MX3_CHECKCONTROL3

LABEL_MX3_END

;***************************************************
; Zähler -> ZV6
;***************************************************

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSS S67,1	; Reset ?
	GOTO LABEL_ZV6_COUNT
	CLRF ZV6
	CLRF ZV6_HI
	GOTO LABEL_ZV6_SETOUT

LABEL_ZV6_COUNT

; Test auf positive Flanke

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSS S67,4
	GOTO LABEL_ZV6_SETFD
	BTFSC ZV6_FD,0
	GOTO LABEL_ZV6_SETFD

	BSF ZV6_FD,0


	BTFSC S67,7	; Vorwärts oder Rückwärts ?
	GOTO LABEL_ZV6_BACKWARD

	INCFSZ ZV6,F
	GOTO LABEL_ZV6_SETOUT
	INCF ZV6_HI,F
	GOTO LABEL_ZV6_SETOUT

LABEL_ZV6_BACKWARD
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	DECF ZV6,F
	INCFSZ ZV6,W
	GOTO LABEL_ZV6_SETOUT
	DECF ZV6_HI,F

LABEL_ZV6_SETOUT


LABEL_ZV6_SETFD

; Test auf negative Flanke

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC S67,4
	GOTO LABEL_ZV6_EXIT
	BCF ZV6_FD,0

LABEL_ZV6_EXIT

;***************************************************
; Multiplexer -> MX4
;***************************************************

	CLRF SYS_TMP1
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW ZV6
	BTFSS STATUS,ZERO
	GOTO LABEL_MX4_CHECKCONTROL1

	BCF STATUS,RP0	; Bank 0
	MOVFW S26
	BSF STATUS,RP0	; Bank 1
	MOVWF S50
	BCF STATUS,RP0	; Bank 0
	MOVFW S26_HI
	BSF STATUS,RP0	; Bank 1
	MOVWF S50_HI
	GOTO LABEL_MX4_END

LABEL_MX4_CHECKCONTROL1
	INCF SYS_TMP1,F
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW ZV6
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX4_CHECKCONTROL2

	BCF STATUS,RP0	; Bank 0
	MOVFW ZV3
	BSF STATUS,RP0	; Bank 1
	MOVWF S50
	BCF STATUS,RP0	; Bank 0
	MOVFW ZV3_HI
	BSF STATUS,RP0	; Bank 1
	MOVWF S50_HI
	GOTO LABEL_MX4_END

LABEL_MX4_CHECKCONTROL2
	INCF SYS_TMP1,F
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW ZV6
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX4_CHECKCONTROL3

	BCF STATUS,RP0	; Bank 0
	MOVFW S5
	BSF STATUS,RP0	; Bank 1
	MOVWF S50
	BCF STATUS,RP0	; Bank 0
	MOVFW S5_HI
	BSF STATUS,RP0	; Bank 1
	MOVWF S50_HI
	GOTO LABEL_MX4_END

LABEL_MX4_CHECKCONTROL3

LABEL_MX4_END

;***************************************************
; Multiplexer -> MX5
;***************************************************

	CLRF SYS_TMP1
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW ZV6
	BTFSS STATUS,ZERO
	GOTO LABEL_MX5_CHECKCONTROL1

	BCF STATUS,RP0	; Bank 0
	MOVFW S28
	BSF STATUS,RP0	; Bank 1
	MOVWF S53
	BCF STATUS,RP0	; Bank 0
	MOVFW S28_HI
	BSF STATUS,RP0	; Bank 1
	MOVWF S53_HI
	GOTO LABEL_MX5_END

LABEL_MX5_CHECKCONTROL1
	INCF SYS_TMP1,F
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW ZV6
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX5_CHECKCONTROL2

	BCF STATUS,RP0	; Bank 0
	MOVFW ZV2
	BSF STATUS,RP0	; Bank 1
	MOVWF S53
	BCF STATUS,RP0	; Bank 0
	MOVFW ZV2_HI
	BSF STATUS,RP0	; Bank 1
	MOVWF S53_HI
	GOTO LABEL_MX5_END

LABEL_MX5_CHECKCONTROL2
	INCF SYS_TMP1,F
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW ZV6
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX5_CHECKCONTROL3

	BCF STATUS,RP0	; Bank 0
	MOVFW S1
	BSF STATUS,RP0	; Bank 1
	MOVWF S53
	BCF STATUS,RP0	; Bank 0
	MOVFW S1_HI
	BSF STATUS,RP0	; Bank 1
	MOVWF S53_HI
	GOTO LABEL_MX5_END

LABEL_MX5_CHECKCONTROL3

LABEL_MX5_END

;***************************************************
; Vergleich -> IF2
;***************************************************

	MOVLW HIGH 3
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	SUBWF ZV6_HI,W	; F - W -> W

	BTFSS STATUS,ZERO	; Wenn ZERO gesetzt LOW-Byte testen
	GOTO LABEL_IF2_CHECK
	MOVLW LOW 3
	SUBWF ZV6,W	; F - W -> W

LABEL_IF2_CHECK
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSS STATUS,ZERO	; Test auf -> =
	GOTO LABEL_IF2_FALSE

LABEL_IF2_TRUE
	BSF S67,0
	GOTO LABEL_IF2_EXIT

LABEL_IF2_FALSE
	BCF S67,0

LABEL_IF2_EXIT
;***************************************************
; UND - Gatter -> LG10
;***************************************************

LABEL_LG10_1
	BTFSS S67,5
	GOTO LABEL_LG10_FALSE

LABEL_LG10_TRUE
	BCF S67,4
	GOTO LABEL_LG10_ENDE
LABEL_LG10_FALSE
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BSF S67,4
LABEL_LG10_ENDE
;***************************************************
; One Shot -> OS3
;***************************************************


	BCF STATUS,RP0	; Bank 0
	BTFSS PORTA,2
	GOTO LABEL_OS3_1
	BSF STATUS,RP0	; Bank 1
	BTFSC OS3_FD,0
	GOTO LABEL_OS3_1
	BSF OS3_FD,0
	BSF S67,2
	GOTO LABEL_OS3_2
LABEL_OS3_1
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF S67,2
	BCF STATUS,RP0	; Bank 0
	BTFSC PORTA,2
	GOTO LABEL_OS3_2
	BSF STATUS,RP0	; Bank 1
	BCF OS3_FD,0
LABEL_OS3_2
;***************************************************
; ODER - Gatter -> LG11
;***************************************************

LABEL_LG11_1
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC S67,0
	GOTO LABEL_LG11_TRUE
LABEL_LG11_2
	BTFSC S67,2
	GOTO LABEL_LG11_TRUE

LABEL_LG11_FALSE
	BCF S67,1
	GOTO LABEL_LG11_ENDE
LABEL_LG11_TRUE
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BSF S67,1
LABEL_LG11_ENDE
;***************************************************
; Abfall-Verzögerung -> MF1
;***************************************************

	BTFSS S67,2	; Eingang auf High ?
	GOTO LABEL_MF1_CHKTIME	; Nein

; RESET

	CLRF MF1
	CLRF MF1_HI
	BSF S67,3
	GOTO LABEL_MF1_EXIT	; raus

LABEL_MF1_CHKTIME

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSS S67,3	; Ausgang schon auf Low ?
	GOTO LABEL_MF1_EXIT	; Ja

	MOVLW 61
	SUBWF MF1_HI,W
	BTFSS STATUS,CARRY
	GOTO LABEL_MF1_EXIT

	MOVLW 9
	SUBWF MF1,W
	BTFSS STATUS,CARRY
	GOTO LABEL_MF1_EXIT

	BCF S67,3
LABEL_MF1_EXIT

;***************************************************
; One Shot -> OS4
;***************************************************


	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSC PORTC,6
	GOTO LABEL_OS4_1
	BSF STATUS,RP0	; Bank 1
	BTFSC OS4_FD,0
	GOTO LABEL_OS4_1
	BSF OS4_FD,0
	BSF S67,6
	GOTO LABEL_OS4_2
LABEL_OS4_1
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF S67,6
	BCF STATUS,RP0	; Bank 0
	BTFSS PORTC,6
	GOTO LABEL_OS4_2
	BSF STATUS,RP0	; Bank 1
	BCF OS4_FD,0
LABEL_OS4_2
;***************************************************
; ODER - Gatter -> LG12
;***************************************************

LABEL_LG12_1
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC S67,6
	GOTO LABEL_LG12_TRUE
LABEL_LG12_2
	BTFSC S67,3
	GOTO LABEL_LG12_TRUE

LABEL_LG12_FALSE
	BCF S67,5
	GOTO LABEL_LG12_ENDE
LABEL_LG12_TRUE
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BSF S67,5
LABEL_LG12_ENDE
;***************************************************
; Limiter -> LM2
;***************************************************

	MOVFW S46
	MOVWF S55
	MOVFW S46_HI
	MOVWF S55_HI

	MOVLW HIGH 12
	SUBWF S55_HI,W
	BTFSS STATUS,ZERO
	GOTO LABEL_LM2_CHECK1
	MOVLW LOW 12
	SUBWF S55,W
LABEL_LM2_CHECK1
	BTFSS STATUS,CARRY
	GOTO LABEL_LM2_EXIT
	BTFSC STATUS,ZERO
	GOTO LABEL_LM2_EXIT
	MOVLW LOW 12
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVWF S55
	MOVLW HIGH 12
	MOVWF S55_HI
LABEL_LM2_EXIT

;***************************************************
; GND
;***************************************************

	BCF S67,7	; immer Low

;***************************************************
; Call subroutine TAB2
;***************************************************


	MOVLW LOW TAB2
	MOVWF SYS_TMP1
	MOVLW HIGH TAB2
	MOVWF SYS_TMP2

	BCF STATUS,CARRY
	RLF S56,W
	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 KETTO


	INCF SYS_TMP1,F
	BTFSC STATUS,ZERO
	INCF SYS_TMP2,F

	MOVLW HIGH SYSTABJMP	; set page
	MOVWF PCLATH
	CALL SYSTABJMP

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVWF KETTO_HI

	BSF INTCON,GIE
	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
;***************************************************
; Limiter -> LM3
;***************************************************

	MOVFW S57
	MOVWF S56
	MOVFW S57_HI
	MOVWF S56_HI

	MOVLW HIGH 12
	SUBWF S56_HI,W
	BTFSS STATUS,ZERO
	GOTO LABEL_LM3_CHECK1
	MOVLW LOW 12
	SUBWF S56,W
LABEL_LM3_CHECK1
	BTFSS STATUS,CARRY
	GOTO LABEL_LM3_EXIT
	BTFSC STATUS,ZERO
	GOTO LABEL_LM3_EXIT
	MOVLW LOW 12
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVWF S56
	MOVLW HIGH 12
	MOVWF S56_HI
LABEL_LM3_EXIT

;***************************************************
; Call subroutine TAB3
;***************************************************


	MOVLW LOW TAB3
	MOVWF SYS_TMP1
	MOVLW HIGH TAB3
	MOVWF SYS_TMP2

	BCF STATUS,CARRY
	RLF S58,W
	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 HAROM


	INCF SYS_TMP1,F
	BTFSC STATUS,ZERO
	INCF SYS_TMP2,F

	MOVLW HIGH SYSTABJMP	; set page
	MOVWF PCLATH
	CALL SYSTABJMP

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVWF HAROM_HI

	BSF INTCON,GIE
	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
;***************************************************
; Limiter -> LM4
;***************************************************

	MOVFW S49
	MOVWF S58
	MOVFW S49_HI
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVWF S58_HI

	MOVLW HIGH 12
	SUBWF S58_HI,W
	BTFSS STATUS,ZERO
	GOTO LABEL_LM4_CHECK1
	MOVLW LOW 12
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	SUBWF S58,W
LABEL_LM4_CHECK1
	BTFSS STATUS,CARRY
	GOTO LABEL_LM4_EXIT
	BTFSC STATUS,ZERO
	GOTO LABEL_LM4_EXIT
	MOVLW LOW 12
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVWF S58
	MOVLW HIGH 12
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVWF S58_HI
LABEL_LM4_EXIT

;***************************************************
; Call subroutine TAB4
;***************************************************


	MOVLW LOW TAB4
	MOVWF SYS_TMP1
	MOVLW HIGH TAB4
	MOVWF SYS_TMP2

	BCF STATUS,CARRY
	RLF S59,W
	ADDWF SYS_TMP1,F
	BTFSC STATUS,CARRY
	INCF SYS_TMP2,F

	MOVLW HIGH SYSTABJMP	; set page
	MOVWF PCLATH
	CALL SYSTABJMP

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVWF NEGY


	INCF SYS_TMP1,F
	BTFSC STATUS,ZERO
	INCF SYS_TMP2,F

	MOVLW HIGH SYSTABJMP	; set page
	MOVWF PCLATH
	CALL SYSTABJMP

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVWF NEGY_HI

	BSF INTCON,GIE
	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
;***************************************************
; Limiter -> LM5
;***************************************************

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW S60
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVWF S59
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW S60_HI
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVWF S59_HI

	MOVLW HIGH 12
	SUBWF S59_HI,W
	BTFSS STATUS,ZERO
	GOTO LABEL_LM5_CHECK1
	MOVLW LOW 12
	SUBWF S59,W
LABEL_LM5_CHECK1
	BTFSS STATUS,CARRY
	GOTO LABEL_LM5_EXIT
	BTFSC STATUS,ZERO
	GOTO LABEL_LM5_EXIT
	MOVLW LOW 12
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVWF S59
	MOVLW HIGH 12
	MOVWF S59_HI
LABEL_LM5_EXIT

;***************************************************
; Call subroutine TAB5
;***************************************************


	MOVLW LOW TAB5
	MOVWF SYS_TMP1
	MOVLW HIGH TAB5
	MOVWF SYS_TMP2

	BCF STATUS,CARRY
	RLF S61,W
	ADDWF SYS_TMP1,F
	BTFSC STATUS,CARRY
	INCF SYS_TMP2,F

	MOVLW HIGH SYSTABJMP	; set page
	MOVWF PCLATH
	CALL SYSTABJMP

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVWF OT


	INCF SYS_TMP1,F
	BTFSC STATUS,ZERO
	INCF SYS_TMP2,F

	MOVLW HIGH SYSTABJMP	; set page
	MOVWF PCLATH
	CALL SYSTABJMP

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVWF OT_HI

	BSF INTCON,GIE
	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
;***************************************************
; Limiter -> LM6
;***************************************************

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW S52
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVWF S61
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW S52_HI
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVWF S61_HI

	MOVLW HIGH 12
	SUBWF S61_HI,W
	BTFSS STATUS,ZERO
	GOTO LABEL_LM6_CHECK1
	MOVLW LOW 12
	SUBWF S61,W
LABEL_LM6_CHECK1
	BTFSS STATUS,CARRY
	GOTO LABEL_LM6_EXIT
	BTFSC STATUS,ZERO
	GOTO LABEL_LM6_EXIT
	MOVLW LOW 12
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVWF S61
	MOVLW HIGH 12
	MOVWF S61_HI
LABEL_LM6_EXIT

;***************************************************
; Call subroutine TAB6
;***************************************************


	MOVLW LOW TAB6
	MOVWF SYS_TMP1
	MOVLW HIGH TAB6
	MOVWF SYS_TMP2

	BCF STATUS,CARRY
	RLF S62,W
	ADDWF SYS_TMP1,F
	BTFSC STATUS,CARRY
	INCF SYS_TMP2,F

	MOVLW HIGH SYSTABJMP	; set page
	MOVWF PCLATH
	CALL SYSTABJMP

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVWF HAT


	INCF SYS_TMP1,F
	BTFSC STATUS,ZERO
	INCF SYS_TMP2,F

	MOVLW HIGH SYSTABJMP	; set page
	MOVWF PCLATH
	CALL SYSTABJMP

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVWF HAT_HI

	BSF INTCON,GIE
	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
;***************************************************
; Limiter -> LM7
;***************************************************

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW S63
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVWF S62
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW S63_HI
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVWF S62_HI

	MOVLW HIGH 12
	SUBWF S62_HI,W
	BTFSS STATUS,ZERO
	GOTO LABEL_LM7_CHECK1
	MOVLW LOW 12
	SUBWF S62,W
LABEL_LM7_CHECK1
	BTFSS STATUS,CARRY
	GOTO LABEL_LM7_EXIT
	BTFSC STATUS,ZERO
	GOTO LABEL_LM7_EXIT
	MOVLW LOW 12
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVWF S62
	MOVLW HIGH 12
	MOVWF S62_HI
LABEL_LM7_EXIT

;****************************************

	GOTO MAIN

;***************************************************
; Table -> TAB1
;***************************************************

TAB1

	RETLW 63	; // INDEX 0
	RETLW 0	; // INDEX 0
	RETLW 6	; // INDEX 1
	RETLW 0	; // INDEX 1
	RETLW 91	; // INDEX 2
	RETLW 0	; // INDEX 2
	RETLW 79	; // INDEX 3
	RETLW 0	; // INDEX 3
	RETLW 102	; // INDEX 4
	RETLW 0	; // INDEX 4
	RETLW 109	; // INDEX 5
	RETLW 0	; // INDEX 5
	RETLW 125	; // INDEX 6
	RETLW 0	; // INDEX 6
	RETLW 7	; // INDEX 7
	RETLW 0	; // INDEX 7
	RETLW 127	; // INDEX 8
	RETLW 0	; // INDEX 8
	RETLW 111	; // INDEX 9
	RETLW 0	; // INDEX 9
	RETLW 99	; // INDEX 10
	RETLW 0	; // INDEX 10
	RETLW 28	; // INDEX 11
	RETLW 0	; // INDEX 11
	RETLW 64	; // INDEX 12
	RETLW 0	; // INDEX 12

;***************************************************
; Table -> TAB2
;***************************************************

TAB2

	RETLW 63	; // INDEX 0
	RETLW 0	; // INDEX 0
	RETLW 6	; // INDEX 1
	RETLW 0	; // INDEX 1
	RETLW 91	; // INDEX 2
	RETLW 0	; // INDEX 2
	RETLW 79	; // INDEX 3
	RETLW 0	; // INDEX 3
	RETLW 102	; // INDEX 4
	RETLW 0	; // INDEX 4
	RETLW 109	; // INDEX 5
	RETLW 0	; // INDEX 5
	RETLW 125	; // INDEX 6
	RETLW 0	; // INDEX 6
	RETLW 7	; // INDEX 7
	RETLW 0	; // INDEX 7
	RETLW 127	; // INDEX 8
	RETLW 0	; // INDEX 8
	RETLW 111	; // INDEX 9
	RETLW 0	; // INDEX 9
	RETLW 99	; // INDEX 10
	RETLW 0	; // INDEX 10
	RETLW 28	; // INDEX 11
	RETLW 0	; // INDEX 11
	RETLW 64	; // INDEX 12
	RETLW 0	; // INDEX 12

;***************************************************
; Table -> TAB3
;***************************************************

TAB3

	RETLW 63	; // INDEX 0
	RETLW 0	; // INDEX 0
	RETLW 6	; // INDEX 1
	RETLW 0	; // INDEX 1
	RETLW 91	; // INDEX 2
	RETLW 0	; // INDEX 2
	RETLW 79	; // INDEX 3
	RETLW 0	; // INDEX 3
	RETLW 102	; // INDEX 4
	RETLW 0	; // INDEX 4
	RETLW 109	; // INDEX 5
	RETLW 0	; // INDEX 5
	RETLW 125	; // INDEX 6
	RETLW 0	; // INDEX 6
	RETLW 7	; // INDEX 7
	RETLW 0	; // INDEX 7
	RETLW 127	; // INDEX 8
	RETLW 0	; // INDEX 8
	RETLW 111	; // INDEX 9
	RETLW 0	; // INDEX 9
	RETLW 99	; // INDEX 10
	RETLW 0	; // INDEX 10
	RETLW 28	; // INDEX 11
	RETLW 0	; // INDEX 11
	RETLW 64	; // INDEX 12
	RETLW 0	; // INDEX 12

;***************************************************
; Table -> TAB4
;***************************************************

TAB4

	RETLW 63	; // INDEX 0
	RETLW 0	; // INDEX 0
	RETLW 6	; // INDEX 1
	RETLW 0	; // INDEX 1
	RETLW 91	; // INDEX 2
	RETLW 0	; // INDEX 2
	RETLW 79	; // INDEX 3
	RETLW 0	; // INDEX 3
	RETLW 102	; // INDEX 4
	RETLW 0	; // INDEX 4
	RETLW 109	; // INDEX 5
	RETLW 0	; // INDEX 5
	RETLW 125	; // INDEX 6
	RETLW 0	; // INDEX 6
	RETLW 7	; // INDEX 7
	RETLW 0	; // INDEX 7
	RETLW 127	; // INDEX 8
	RETLW 0	; // INDEX 8
	RETLW 111	; // INDEX 9
	RETLW 0	; // INDEX 9
	RETLW 99	; // INDEX 10
	RETLW 0	; // INDEX 10
	RETLW 28	; // INDEX 11
	RETLW 0	; // INDEX 11
	RETLW 64	; // INDEX 12
	RETLW 0	; // INDEX 12

;***************************************************
; Table -> TAB5
;***************************************************

TAB5

	RETLW 63	; // INDEX 0
	RETLW 0	; // INDEX 0
	RETLW 6	; // INDEX 1
	RETLW 0	; // INDEX 1
	RETLW 91	; // INDEX 2
	RETLW 0	; // INDEX 2
	RETLW 79	; // INDEX 3
	RETLW 0	; // INDEX 3
	RETLW 102	; // INDEX 4
	RETLW 0	; // INDEX 4
	RETLW 109	; // INDEX 5
	RETLW 0	; // INDEX 5
	RETLW 125	; // INDEX 6
	RETLW 0	; // INDEX 6
	RETLW 7	; // INDEX 7
	RETLW 0	; // INDEX 7
	RETLW 127	; // INDEX 8
	RETLW 0	; // INDEX 8
	RETLW 111	; // INDEX 9
	RETLW 0	; // INDEX 9
	RETLW 99	; // INDEX 10
	RETLW 0	; // INDEX 10
	RETLW 28	; // INDEX 11
	RETLW 0	; // INDEX 11
	RETLW 64	; // INDEX 12
	RETLW 0	; // INDEX 12

;***************************************************
; Table -> TAB6
;***************************************************

TAB6

	RETLW 63	; // INDEX 0
	RETLW 0	; // INDEX 0
	RETLW 6	; // INDEX 1
	RETLW 0	; // INDEX 1
	RETLW 91	; // INDEX 2
	RETLW 0	; // INDEX 2
	RETLW 79	; // INDEX 3
	RETLW 0	; // INDEX 3
	RETLW 102	; // INDEX 4
	RETLW 0	; // INDEX 4
	RETLW 109	; // INDEX 5
	RETLW 0	; // INDEX 5
	RETLW 125	; // INDEX 6
	RETLW 0	; // INDEX 6
	RETLW 7	; // INDEX 7
	RETLW 0	; // INDEX 7
	RETLW 127	; // INDEX 8
	RETLW 0	; // INDEX 8
	RETLW 111	; // INDEX 9
	RETLW 0	; // INDEX 9
	RETLW 99	; // INDEX 10
	RETLW 0	; // INDEX 10
	RETLW 28	; // INDEX 11
	RETLW 0	; // INDEX 11
	RETLW 64	; // INDEX 12
	RETLW 0	; // INDEX 12


	END

