; Source created with Parsic Version 3.x

; at              : 2009.07.05. 19:19:43


; Project File    : C:\PROGRA~1\Parsic\Projekt\RG_FSC0.PIC

; Project Version : 1.0.89

; Created         : 2009.04.06. 17:34:00

; Last change     : 2009.07.05. 19:19:38

	PROCESSOR 16F876

	INCLUDE P16F876.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

N10	= 32	; located in Bank 0
N11	= 33	; located in Bank 0
N12	= 34	; located in Bank 0
N13	= 35	; located in Bank 0
N14	= 36	; located in Bank 0
N15	= 37	; located in Bank 0
ZX1	= 38	; located in Bank 0
ZX1_HI	= 39	; located in Bank 0
ZX2	= 40	; located in Bank 0
ZX2_HI	= 41	; located in Bank 0
ZX3	= 42	; located in Bank 0
ZX3_HI	= 43	; located in Bank 0
ZX4	= 44	; located in Bank 0
ZX4_HI	= 45	; located in Bank 0
N20	= 46	; located in Bank 0
N21	= 47	; located in Bank 0
N22	= 48	; located in Bank 0
N23	= 49	; located in Bank 0
N24	= 50	; located in Bank 0
N25	= 51	; located in Bank 0
U0	= 52	; located in Bank 0
U1	= 53	; located in Bank 0
U2	= 54	; located in Bank 0
U3	= 55	; located in Bank 0
N30	= 56	; located in Bank 0
N31	= 57	; located in Bank 0
N32	= 58	; located in Bank 0
N33	= 59	; located in Bank 0
N34	= 60	; located in Bank 0
N35	= 61	; located in Bank 0
U4	= 62	; located in Bank 0
U5	= 63	; located in Bank 0
U6	= 64	; located in Bank 0
N16	= 65	; located in Bank 0
HE0	= 66	; located in Bank 0
HE1	= 67	; located in Bank 0
HE2	= 68	; located in Bank 0
HE3	= 69	; located in Bank 0
HE4	= 70	; located in Bank 0
HE5	= 71	; located in Bank 0
MU0	= 72	; located in Bank 0
MU1	= 73	; located in Bank 0
MU2	= 74	; located in Bank 0
MU3	= 75	; located in Bank 0
MU4	= 76	; located in Bank 0
MU5	= 77	; located in Bank 0
MU6	= 78	; located in Bank 0
HE6	= 79	; located in Bank 0
N26	= 80	; located in Bank 0
N36	= 81	; located in Bank 0
ADAYOFWEEK	= 82	; located in Bank 0
AHOUR_Z	= 83	; located in Bank 0
AHOUR_E	= 84	; located in Bank 0
AHOUR	= 85	; located in Bank 0
AMIN_Z	= 86	; located in Bank 0
AMIN_E	= 87	; located in Bank 0
AMINUT	= 88	; located in Bank 0
IICOUNT	= 89	; located in Bank 0
ASEC	= 90	; located in Bank 0
ASEC_E	= 91	; located in Bank 0
ASEC_Z	= 92	; located in Bank 0
IISLAVEADR	= 93	; located in Bank 0
IIADR	= 94	; located in Bank 0
IIDATA	= 95	; located in Bank 0
IITEMP	= 96	; located in Bank 0
M0	= 97	; located in Bank 0
S55	= 98	; located in Bank 0
OS1_FD	= 99	; located in Bank 0
TR1	= 100	; located in Bank 0
TR1_HI	= 101	; located in Bank 0
LT1_FD	= 102	; located in Bank 0
LT2_FD	= 103	; located in Bank 0
LT3_FD	= 104	; located in Bank 0
LT4_FD	= 105	; located in Bank 0
LT5_FD	= 106	; located in Bank 0
LT6_FD	= 107	; located in Bank 0
LT7_FD	= 108	; located in Bank 0
LT8_FD	= 109	; located in Bank 0
LT9_FD	= 110	; located in Bank 0
LT10_FD	= 111	; located in Bank 0
LT11_FD	= 112	; located in Bank 0, 1, 2, 3
LT12_FD	= 113	; located in Bank 0, 1, 2, 3
SYS_WSAV	= 114	; located in Bank 0, 1, 2, 3
SYS_SSAV	= 115	; located in Bank 0, 1, 2, 3
SYS_PSAV	= 116	; located in Bank 0, 1, 2, 3
SYS_TMP1	= 117	; located in Bank 0, 1, 2, 3
SYS_TMP2	= 118	; located in Bank 0, 1, 2, 3
SYS_TMP3	= 119	; located in Bank 0, 1, 2, 3
SYS_TMP4	= 120	; located in Bank 0, 1, 2, 3
SYS_TMP5	= 121	; located in Bank 0, 1, 2, 3
SYS_TMP6	= 122	; located in Bank 0, 1, 2, 3
SYS_TMP7	= 123	; located in Bank 0, 1, 2, 3
SYS_TMP9	= 124	; located in Bank 0, 1, 2, 3
SYS_TMP10	= 125	; located in Bank 0, 1, 2, 3
SYS_FSAV	= 126	; located in Bank 0, 1, 2, 3
LT13_FD	= 160	; located in Bank 1
LT14_FD	= 161	; located in Bank 1
S56	= 162	; located in Bank 1
S57	= 163	; located in Bank 1
S0	= 164	; located in Bank 1
S0_HI	= 165	; located in Bank 1
S1	= 166	; located in Bank 1
S1_HI	= 167	; located in Bank 1
S2	= 168	; located in Bank 1
S2_HI	= 169	; located in Bank 1
ZV1	= 170	; located in Bank 1
ZV1_HI	= 171	; located in Bank 1
ZV1_FD	= 172	; located in Bank 1
S5	= 173	; located in Bank 1
S5_HI	= 174	; located in Bank 1
S3	= 175	; located in Bank 1
S3_HI	= 176	; located in Bank 1
S53	= 177	; located in Bank 1
S58	= 178	; located in Bank 1
S4	= 179	; located in Bank 1
S4_HI	= 180	; located in Bank 1
S6	= 181	; located in Bank 1
S6_HI	= 182	; located in Bank 1
LT15_FD	= 183	; located in Bank 1
LT16_FD	= 184	; located in Bank 1
LT17_FD	= 185	; located in Bank 1
LT18_FD	= 186	; located in Bank 1
LT19_FD	= 187	; located in Bank 1
LT20_FD	= 188	; located in Bank 1
LT21_FD	= 189	; located in Bank 1
LT22_FD	= 190	; located in Bank 1
S7	= 191	; located in Bank 1
S7_HI	= 192	; located in Bank 1
S8	= 193	; located in Bank 1
S8_HI	= 194	; located in Bank 1
S9	= 195	; located in Bank 1
S9_HI	= 196	; located in Bank 1
ZV2	= 197	; located in Bank 1
ZV2_HI	= 198	; located in Bank 1
ZV2_FD	= 199	; located in Bank 1
ZV3	= 200	; located in Bank 1
ZV3_HI	= 201	; located in Bank 1
ZV3_FD	= 202	; located in Bank 1
ZV4	= 203	; located in Bank 1
ZV4_HI	= 204	; located in Bank 1
ZV4_FD	= 205	; located in Bank 1
ZV5	= 206	; located in Bank 1
ZV5_HI	= 207	; located in Bank 1
ZV5_FD	= 208	; located in Bank 1
S12	= 209	; located in Bank 1
S12_HI	= 210	; located in Bank 1
S10	= 211	; located in Bank 1
S10_HI	= 212	; located in Bank 1
S13	= 213	; located in Bank 1
S11	= 214	; located in Bank 1
S11_HI	= 215	; located in Bank 1
S14	= 216	; located in Bank 1
S14_HI	= 217	; located in Bank 1
S17	= 218	; located in Bank 1
S17_HI	= 219	; located in Bank 1
S16	= 220	; located in Bank 1
S16_HI	= 221	; located in Bank 1
S15	= 222	; located in Bank 1
S15_HI	= 223	; located in Bank 1
MF1	= 224	; located in Bank 1
MF1_HI	= 225	; located in Bank 1
OS2_FD	= 226	; located in Bank 1
OS3_FD	= 227	; located in Bank 1
OS4_FD	= 228	; located in Bank 1
OS5_FD	= 229	; located in Bank 1
S59	= 230	; located in Bank 1
OS6_FD	= 231	; located in Bank 1
OS7_FD	= 232	; located in Bank 1
MF2	= 233	; located in Bank 1
MF2_HI	= 234	; located in Bank 1
OS8_FD	= 235	; located in Bank 1
ZV6	= 236	; located in Bank 1
ZV6_FD	= 237	; located in Bank 1
OS9_FD	= 238	; located in Bank 1
LT23_FD	= 239	; located in Bank 1
LT24_FD	= 272	; located in Bank 2
LT25_FD	= 273	; located in Bank 2
LT26_FD	= 274	; located in Bank 2
LT27_FD	= 275	; located in Bank 2
S60	= 276	; located in Bank 2
LT28_FD	= 277	; located in Bank 2
LT29_FD	= 278	; located in Bank 2
LT30_FD	= 279	; located in Bank 2
S61	= 280	; located in Bank 2
ZV7	= 281	; located in Bank 2
ZV7_FD	= 282	; located in Bank 2
ZV8	= 283	; located in Bank 2
ZV8_FD	= 284	; located in Bank 2
S21	= 285	; located in Bank 2
S22	= 286	; located in Bank 2
S23	= 287	; located in Bank 2
S24	= 288	; located in Bank 2
S25	= 289	; located in Bank 2
S26	= 290	; located in Bank 2
S19	= 291	; located in Bank 2
S20	= 292	; located in Bank 2
S28	= 293	; located in Bank 2
S27	= 294	; located in Bank 2
S62	= 295	; located in Bank 2
S29	= 296	; located in Bank 2
S30	= 297	; located in Bank 2
S31	= 298	; located in Bank 2
S63	= 299	; located in Bank 2
OS10_FD	= 300	; located in Bank 2
OS11_FD	= 301	; located in Bank 2
S64	= 302	; located in Bank 2
S75	= 303	; located in Bank 2
OS12_FD	= 304	; located in Bank 2
MF3	= 305	; located in Bank 2
MF3_HI	= 306	; located in Bank 2
OS13_FD	= 307	; located in Bank 2
OS14_FD	= 308	; located in Bank 2
T0	= 309	; located in Bank 2
T0_HI	= 310	; located in Bank 2
T1	= 311	; located in Bank 2
T1_HI	= 312	; located in Bank 2
T2	= 313	; located in Bank 2
T2_HI	= 314	; located in Bank 2
S33	= 315	; located in Bank 2
S34	= 316	; located in Bank 2
S35	= 317	; located in Bank 2
OS15_FD	= 318	; located in Bank 2
OS16_FD	= 319	; located in Bank 2
S65	= 320	; located in Bank 2
OS17_FD	= 321	; located in Bank 2
OS18_FD	= 322	; located in Bank 2
OS19_FD	= 323	; located in Bank 2
OS20_FD	= 324	; located in Bank 2
OS21_FD	= 325	; located in Bank 2
OS22_FD	= 326	; located in Bank 2
OS23_FD	= 327	; located in Bank 2
OS24_FD	= 328	; located in Bank 2
OS25_FD	= 329	; located in Bank 2
OS26_FD	= 330	; located in Bank 2
ZV9	= 331	; located in Bank 2
ZV9_FD	= 332	; located in Bank 2
ZV10	= 333	; located in Bank 2
ZV10_FD	= 334	; located in Bank 2
ZV11	= 335	; located in Bank 2
ZV11_FD	= 336	; located in Bank 2
ZV12	= 337	; located in Bank 2
ZV12_FD	= 338	; located in Bank 2
S66	= 339	; located in Bank 2
S37	= 340	; located in Bank 2
S38	= 341	; located in Bank 2
S39	= 342	; located in Bank 2
S40	= 343	; located in Bank 2
S67	= 344	; located in Bank 2
ZV13	= 345	; located in Bank 2
ZV13_FD	= 346	; located in Bank 2
OS27_FD	= 347	; located in Bank 2
S68	= 348	; located in Bank 2
OS28_FD	= 349	; located in Bank 2
S69	= 350	; located in Bank 2
OS29_FD	= 351	; located in Bank 2
OS30_FD	= 352	; located in Bank 2
OS31_FD	= 353	; located in Bank 2
ZV14	= 354	; located in Bank 2
ZV14_FD	= 355	; located in Bank 2
S41	= 356	; located in Bank 2
OS32_FD	= 357	; located in Bank 2
ZV15	= 358	; located in Bank 2
ZV15_FD	= 359	; located in Bank 2
OS33_FD	= 360	; located in Bank 2
OS34_FD	= 361	; located in Bank 2
S70	= 362	; located in Bank 2
S71	= 363	; located in Bank 2
S50	= 364	; located in Bank 2
S72	= 365	; located in Bank 2
OS35_FD	= 366	; located in Bank 2
OS36_FD	= 367	; located in Bank 2
S76	= 400	; located in Bank 3
S42	= 401	; located in Bank 3
S43	= 402	; located in Bank 3
S73	= 403	; located in Bank 3
S44	= 404	; located in Bank 3
S45	= 405	; located in Bank 3
S46	= 406	; located in Bank 3
S47	= 407	; located in Bank 3
S48	= 408	; located in Bank 3
S49	= 409	; located in Bank 3
S74	= 410	; located in Bank 3
S32	= 411	; located in Bank 3
S51	= 412	; located in Bank 3
S52	= 413	; located in Bank 3
S36	= 414	; located in Bank 3
ZV16	= 415	; located in Bank 3
ZV16_FD	= 416	; located in Bank 3
OS37_FD	= 417	; located in Bank 3
OS38_FD	= 418	; located in Bank 3
OS39_FD	= 419	; located in Bank 3
LT31_FD	= 420	; located in Bank 3
OS40_FD	= 421	; located in Bank 3
OS41_FD	= 422	; located in Bank 3
OS42_FD	= 423	; located in Bank 3
OS43_FD	= 424	; located in Bank 3
ZV17	= 425	; located in Bank 3
ZV17_FD	= 426	; located in Bank 3
OS44_FD	= 427	; located in Bank 3
OS45_FD	= 428	; located in Bank 3
OS46_FD	= 429	; located in Bank 3
S18	= 430	; located in Bank 3
S54	= 431	; located in Bank 3
T0_FD	= 432	; located in Bank 3
T1_FD	= 433	; located in Bank 3
T2_FD	= 434	; located in Bank 3
LT32_FD	= 435	; located in Bank 3
LT33_FD	= 436	; located in Bank 3
RAM	= 437	; located in Bank 3

	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
	INCFSZ MF2,F
	GOTO SYS_INT_LABEL_2
	INCF MF2_HI,F

SYS_INT_LABEL_2
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	INCFSZ MF3,F
	GOTO SYS_INT_LABEL_3
	INCF MF3_HI,F

SYS_INT_LABEL_3
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


;****************************************
; Multiplication 8 - Bit
;****************************************

SYSMUL8
	CLRF SYS_TMP3
	MOVLW 8
	MOVWF SYS_TMP4

SYSMUL8_1
	MOVFW SYS_TMP1
	RRF SYS_TMP2,F

	BTFSC STATUS,CARRY
	ADDWF SYS_TMP3,F

	RLF SYS_TMP1,F
	DECFSZ SYS_TMP4,F

	GOTO SYSMUL8_1

	RETURN

;****************************************
; 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
BEGININC103
	ERRORLEVEL +306	; enable warning (Pageswitching)
	ERRORLEVEL +302	; enable warning (Bankswitching)

	INCLUDE PCF8583R.INC

	ERRORLEVEL -302	; disable warning (Bankswitching)
	ERRORLEVEL -306	; disable warning (Pageswitching)
ENDINC103

;***************************************************
; 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
	MOVLW D'20'
	BTFSC SYS_TMP2,1	; 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
; 0654

;****************************************
;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'11000000'
	MOVWF TRISB

	MOVLW B'11111110'
	MOVWF TRISC

; 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


BEGININC102
	ERRORLEVEL +306	; enable warning (Pageswitching)
	ERRORLEVEL +302	; enable warning (Bankswitching)

	INCLUDE INIT.INC

	ERRORLEVEL -302	; disable warning (Bankswitching)
	ERRORLEVEL -306	; disable warning (Pageswitching)
ENDINC102

;***************************************************
; 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

BEGININC101
	ERRORLEVEL +306	; enable warning (Pageswitching)
	ERRORLEVEL +302	; enable warning (Bankswitching)

	INCLUDE MAIN.INC

	ERRORLEVEL -302	; disable warning (Bankswitching)
	ERRORLEVEL -306	; disable warning (Pageswitching)
ENDINC101

;***************************************************
; UND - Gatter -> LG1
;***************************************************

LABEL_LG1_1
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,0
	GOTO LABEL_LG1_FALSE

LABEL_LG1_TRUE
	BSF M0,1
	GOTO LABEL_LG1_ENDE
LABEL_LG1_FALSE
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF M0,1
LABEL_LG1_ENDE
;***************************************************
; UND - Gatter -> LG2
;***************************************************

LABEL_LG2_1
	BTFSS S55,3
	GOTO LABEL_LG2_FALSE

LABEL_LG2_TRUE
	BSF M0,0
	GOTO LABEL_LG2_ENDE
LABEL_LG2_FALSE
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF M0,0
LABEL_LG2_ENDE
;***************************************************
; One Shot -> OS1
;***************************************************


	BTFSS S55,1
	GOTO LABEL_OS1_1
	BTFSC OS1_FD,0
	GOTO LABEL_OS1_1
	BSF OS1_FD,0
	BSF S55,2
	GOTO LABEL_OS1_2
LABEL_OS1_1
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF S55,2
	BTFSC S55,1
	GOTO LABEL_OS1_2
	BCF OS1_FD,0
LABEL_OS1_2
;***************************************************
; Timer -> TR1
;***************************************************

	MOVLW 1	; 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 135
	SUBWF TR1,W	;F-W -> W
LABEL_TR1_CHECK
	BTFSS STATUS,CARRY
	GOTO LABEL_TR1_ENDE

LABEL_TR1_RESET
	MOVLW 1	; Test auf >=
	SUBWF TR1_HI,F	;F-W -> F
	MOVLW 135
	SUBWF TR1,F	;F-W -> F
	BTFSS STATUS,CARRY
	DECF TR1_HI,F

LABEL_TR1_SET	; toggel output
	BTFSC S55,1
	GOTO LABEL_TR1_CLR
	BSF S55,1
	GOTO LABEL_TR1_ENDE
LABEL_TR1_CLR
	BCF S55,1
LABEL_TR1_ENDE

;***************************************************
; UND - Gatter -> LG3
;***************************************************

LABEL_LG3_1
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,2
	GOTO LABEL_LG3_FALSE
LABEL_LG3_2
	BTFSC S55,3
	GOTO LABEL_LG3_FALSE

LABEL_LG3_TRUE
	BSF S55,0
	GOTO LABEL_LG3_ENDE
LABEL_LG3_FALSE
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF S55,0
LABEL_LG3_ENDE
;***************************************************
; LCD -> LT1
;***************************************************

; test of positiv edge

	BTFSC LT1_FD,0
	GOTO LABEL_LT1_SETFD
	BTFSS S55,4
	GOTO LABEL_LT1_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 ASEC_Z
	MOVWF SYS_TMP4
	CLRF SYS_TMP5

	BSF SYS_TMP10,0
	MOVLW 3
	MOVWF SYS_TMP9
	MOVLW HIGH LCD_LB1_DEZO100	; set page
	MOVWF PCLATH
	CALL LCD_LB1_DEZO100
	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
LABEL_LT1_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,4
	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 S55,4
	GOTO LABEL_LT2_SETFD


	MOVLW 3
	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 AMIN_Z
	MOVWF SYS_TMP4
	CLRF SYS_TMP5

	BSF SYS_TMP10,0
	MOVLW 3
	MOVWF SYS_TMP9
	MOVLW HIGH LCD_LB1_DEZO100	; set page
	MOVWF PCLATH
	CALL LCD_LB1_DEZO100
	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
LABEL_LT2_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,4
	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 S55,4
	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

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	MOVFW AHOUR_Z
	MOVWF SYS_TMP4
	CLRF SYS_TMP5

	BCF SYS_TMP10,0
	MOVLW 3
	MOVWF SYS_TMP9
	MOVLW HIGH LCD_LB1_DEZO100	; set page
	MOVWF PCLATH
	CALL LCD_LB1_DEZO100
	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
LABEL_LT3_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,4
	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 S55,4
	GOTO LABEL_LT4_SETFD


	MOVLW 7
	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 ASEC_E
	MOVWF SYS_TMP4
	CLRF SYS_TMP5

	BSF SYS_TMP10,0
	MOVLW 3
	MOVWF SYS_TMP9
	MOVLW HIGH LCD_LB1_DEZO100	; set page
	MOVWF PCLATH
	CALL LCD_LB1_DEZO100
	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
LABEL_LT4_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,4
	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 S55,4
	GOTO LABEL_LT5_SETFD


	MOVLW 4
	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 AMIN_E
	MOVWF SYS_TMP4
	CLRF SYS_TMP5

	BSF SYS_TMP10,0
	MOVLW 3
	MOVWF SYS_TMP9
	MOVLW HIGH LCD_LB1_DEZO100	; set page
	MOVWF PCLATH
	CALL LCD_LB1_DEZO100
	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
LABEL_LT5_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,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 S55,4
	GOTO LABEL_LT6_SETFD


	MOVLW 1
	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 AHOUR_E
	MOVWF SYS_TMP4
	CLRF SYS_TMP5

	BSF SYS_TMP10,0
	MOVLW 3
	MOVWF SYS_TMP9
	MOVLW HIGH LCD_LB1_DEZO100	; set page
	MOVWF PCLATH
	CALL LCD_LB1_DEZO100
	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
LABEL_LT6_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,4
	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 S55,5
	GOTO LABEL_LT7_SETFD


	MOVLW 3
	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 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV9
	MOVWF SYS_TMP4
	CLRF SYS_TMP5

	BSF SYS_TMP10,0
	MOVLW 3
	MOVWF SYS_TMP9
	MOVLW HIGH LCD_LB1_DEZO100	; set page
	MOVWF PCLATH
	CALL LCD_LB1_DEZO100
	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
LABEL_LT7_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,5
	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 S55,5
	GOTO LABEL_LT8_SETFD


	MOVLW 4
	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 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV10
	MOVWF SYS_TMP4
	CLRF SYS_TMP5

	BSF SYS_TMP10,0
	MOVLW 3
	MOVWF SYS_TMP9
	MOVLW HIGH LCD_LB1_DEZO100	; set page
	MOVWF PCLATH
	CALL LCD_LB1_DEZO100
	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
LABEL_LT8_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,5
	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

	BSF PCLATH,3	; Page 1
	GOTO 2048
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP

;***************************************************
; LCD -> LT9
;***************************************************

; test of positiv edge

	BTFSC LT9_FD,0
	GOTO LABEL_LT9_SETFD
	BTFSS S55,5
	GOTO LABEL_LT9_SETFD


	MOVLW 0
	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 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV11
	MOVWF SYS_TMP4
	CLRF SYS_TMP5

	BCF SYS_TMP10,0
	MOVLW 3
	MOVWF SYS_TMP9
	MOVLW HIGH LCD_LB1_DEZO100	; set page
	MOVWF PCLATH
	CALL LCD_LB1_DEZO100
	BSF PCLATH,3	; Page 1
	BCF PCLATH,4	; Page 1
LABEL_LT9_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,5
	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 S55,5
	GOTO LABEL_LT10_SETFD


	MOVLW 1
	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 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV12
	MOVWF SYS_TMP4
	CLRF SYS_TMP5

	BSF SYS_TMP10,0
	MOVLW 3
	MOVWF SYS_TMP9
	MOVLW HIGH LCD_LB1_DEZO100	; set page
	MOVWF PCLATH
	CALL LCD_LB1_DEZO100
	BSF PCLATH,3	; Page 1
	BCF PCLATH,4	; Page 1
LABEL_LT10_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,5
	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

;***************************************************
; UND - Gatter -> LG4
;***************************************************

LABEL_LG4_1
	BTFSS S55,1
	GOTO LABEL_LG4_FALSE
LABEL_LG4_2
	BTFSS S55,6
	GOTO LABEL_LG4_FALSE

LABEL_LG4_TRUE
	BSF S55,5
	GOTO LABEL_LG4_ENDE
LABEL_LG4_FALSE
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF S55,5
LABEL_LG4_ENDE
;***************************************************
; UND - Gatter -> LG5
;***************************************************

LABEL_LG5_1
	BTFSS S55,1
	GOTO LABEL_LG5_FALSE
LABEL_LG5_2
	BTFSC S55,6
	GOTO LABEL_LG5_FALSE

LABEL_LG5_TRUE
	BSF S55,4
	GOTO LABEL_LG5_ENDE
LABEL_LG5_FALSE
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF S55,4
LABEL_LG5_ENDE
;***************************************************
; LCD -> LT11
;***************************************************

; test of positiv edge

	BTFSC LT11_FD,0
	GOTO LABEL_LT11_SETFD
	BTFSS S55,4
	GOTO LABEL_LT11_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_LT11
	MOVWF SYS_TMP4
	MOVLW HIGH TAB_LT11
	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_LT11_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,4
	GOTO LABEL_LT11_SETFD2
	BSF LT11_FD,0
	GOTO LABEL_LT11_END
LABEL_LT11_SETFD2
	BCF LT11_FD,0
LABEL_LT11_END

;***************************************************
; LCD -> LT12
;***************************************************

; test of positiv edge

	BTFSC LT12_FD,0
	GOTO LABEL_LT12_SETFD
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,5
	GOTO LABEL_LT12_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_LT12
	MOVWF SYS_TMP4
	MOVLW HIGH TAB_LT12
	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_LT12_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,5
	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

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC LT13_FD,0
	GOTO LABEL_LT13_SETFD
	BCF STATUS,RP0	; Bank 0
	BTFSS S55,5
	GOTO LABEL_LT13_SETFD


	MOVLW 2
	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 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV14
	MOVWF SYS_TMP4
	CLRF SYS_TMP5

	BCF SYS_TMP10,0
	MOVLW 3
	MOVWF SYS_TMP9
	MOVLW HIGH LCD_LB1_DEZO100	; set page
	MOVWF PCLATH
	CALL LCD_LB1_DEZO100
	BSF PCLATH,3	; Page 1
	BCF PCLATH,4	; Page 1
LABEL_LT13_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,5
	GOTO LABEL_LT13_SETFD2
	BSF STATUS,RP0	; Bank 1
	BSF LT13_FD,0
	GOTO LABEL_LT13_END
LABEL_LT13_SETFD2
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF LT13_FD,0
LABEL_LT13_END

;***************************************************
; LCD -> LT14
;***************************************************

; test of positiv edge

	BTFSC LT14_FD,0
	GOTO LABEL_LT14_SETFD
	BCF STATUS,RP0	; Bank 0
	BTFSS S55,4
	GOTO LABEL_LT14_SETFD


	MOVLW 2
	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

	BSF PCLATH,3	; Page 1
	BCF PCLATH,4	; Page 1
LABEL_LT14_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,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

;***************************************************
; UND - Gatter -> LG6
;***************************************************

LABEL_LG6_1
	BCF STATUS,RP0	; Bank 0
	BTFSS S55,7
	GOTO LABEL_LG6_FALSE
LABEL_LG6_2
	BSF STATUS,RP0	; Bank 1
	BTFSS S56,1
	GOTO LABEL_LG6_FALSE

LABEL_LG6_TRUE
	BSF S56,0
	GOTO LABEL_LG6_ENDE
LABEL_LG6_FALSE
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF S56,0
LABEL_LG6_ENDE
;***************************************************
; UND - Gatter -> LG7
;***************************************************

LABEL_LG7_1
	BCF STATUS,RP0	; Bank 0
	BTFSS S55,1
	GOTO LABEL_LG7_FALSE
LABEL_LG7_2
	BSF STATUS,RP0	; Bank 1
	BTFSS S56,2
	GOTO LABEL_LG7_FALSE
LABEL_LG7_3
	BTFSS S57,3
	GOTO LABEL_LG7_FALSE

LABEL_LG7_TRUE
	BSF S56,3
	GOTO LABEL_LG7_ENDE
LABEL_LG7_FALSE
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF S56,3
LABEL_LG7_ENDE
;***************************************************
; UND - Gatter -> LG8
;***************************************************

LABEL_LG8_1
	BTFSS S56,3
	GOTO LABEL_LG8_FALSE
LABEL_LG8_2
	BTFSS S57,4
	GOTO LABEL_LG8_FALSE

LABEL_LG8_TRUE
	BSF S57,5
	GOTO LABEL_LG8_ENDE
LABEL_LG8_FALSE
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF S57,5
LABEL_LG8_ENDE
;***************************************************
; UND - Gatter -> LG9
;***************************************************

LABEL_LG9_1
	BTFSS S56,3
	GOTO LABEL_LG9_FALSE
LABEL_LG9_2
	BTFSS S56,4
	GOTO LABEL_LG9_FALSE

LABEL_LG9_TRUE
	BSF S57,0
	GOTO LABEL_LG9_ENDE
LABEL_LG9_FALSE
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF S57,0
LABEL_LG9_ENDE
;***************************************************
; UND - Gatter -> LG10
;***************************************************

LABEL_LG10_1
	BTFSS S56,3
	GOTO LABEL_LG10_FALSE
LABEL_LG10_2
	BTFSS S56,5
	GOTO LABEL_LG10_FALSE

LABEL_LG10_TRUE
	BSF S57,6
	GOTO LABEL_LG10_ENDE
LABEL_LG10_FALSE
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF S57,6
LABEL_LG10_ENDE
;***************************************************
; UND - Gatter -> LG11
;***************************************************

LABEL_LG11_1
	BCF STATUS,RP0	; Bank 0
	BTFSC PORTA,0
	GOTO LABEL_LG11_FALSE

LABEL_LG11_TRUE
	BSF STATUS,RP0	; Bank 1
	BSF S56,2
	GOTO LABEL_LG11_ENDE
LABEL_LG11_FALSE
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF S56,2
LABEL_LG11_ENDE
;***************************************************
; UND - Gatter -> LG12
;***************************************************

LABEL_LG12_1
	BCF STATUS,RP0	; Bank 0
	BTFSC PORTA,3
	GOTO LABEL_LG12_FALSE

LABEL_LG12_TRUE
	BSF STATUS,RP0	; Bank 1
	BSF S57,4
	GOTO LABEL_LG12_ENDE
LABEL_LG12_FALSE
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF S57,4
LABEL_LG12_ENDE
;***************************************************
; UND - Gatter -> LG13
;***************************************************

LABEL_LG13_1
	BCF STATUS,RP0	; Bank 0
	BTFSC PORTA,4
	GOTO LABEL_LG13_FALSE

LABEL_LG13_TRUE
	BSF STATUS,RP0	; Bank 1
	BSF S56,4
	GOTO LABEL_LG13_ENDE
LABEL_LG13_FALSE
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF S56,4
LABEL_LG13_ENDE
;***************************************************
; UND - Gatter -> LG14
;***************************************************

LABEL_LG14_1
	BCF STATUS,RP0	; Bank 0
	BTFSC PORTA,5
	GOTO LABEL_LG14_FALSE

LABEL_LG14_TRUE
	BSF STATUS,RP0	; Bank 1
	BSF S56,5
	GOTO LABEL_LG14_ENDE
LABEL_LG14_FALSE
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF S56,5
LABEL_LG14_ENDE
;***************************************************
; UND - Gatter -> LG15
;***************************************************

LABEL_LG15_1
	BCF STATUS,RP0	; Bank 0
	BTFSC PORTA,1
	GOTO LABEL_LG15_FALSE

LABEL_LG15_TRUE
	BSF STATUS,RP0	; Bank 1
	BSF S56,6
	GOTO LABEL_LG15_ENDE
LABEL_LG15_FALSE
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF S56,6
LABEL_LG15_ENDE
;***************************************************
;AF1
;***************************************************

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW T0
	MOVWF SYS_TMP1
	MOVFW T0_HI
	MOVWF SYS_TMP2
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW S3
	MOVWF SYS_TMP3
	MOVFW S3_HI
	MOVWF SYS_TMP4
	MOVLW HIGH SYSDIV16
	MOVWF PCLATH
	CALL SYSDIV16
	MOVLW HIGH LABEL_AF1
	MOVWF PCLATH
LABEL_AF1
	MOVFW SYS_TMP5
	MOVWF S0
	MOVFW SYS_TMP6
	MOVWF S0_HI

LABEL_AF1_EXIT
;***************************************************
;AF2
;***************************************************

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW T1
	MOVWF SYS_TMP1
	MOVFW T1_HI
	MOVWF SYS_TMP2
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW S3
	MOVWF SYS_TMP3
	MOVFW S3_HI
	MOVWF SYS_TMP4
	MOVLW HIGH SYSDIV16
	MOVWF PCLATH
	CALL SYSDIV16
	MOVLW HIGH LABEL_AF2
	MOVWF PCLATH
LABEL_AF2
	MOVFW SYS_TMP5
	MOVWF S1
	MOVFW SYS_TMP6
	MOVWF S1_HI

LABEL_AF2_EXIT
;***************************************************
;AF3
;***************************************************

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW T2
	MOVWF SYS_TMP1
	MOVFW T2_HI
	MOVWF SYS_TMP2
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW S3
	MOVWF SYS_TMP3
	MOVFW S3_HI
	MOVWF SYS_TMP4
	MOVLW HIGH SYSDIV16
	MOVWF PCLATH
	CALL SYSDIV16
	MOVLW HIGH LABEL_AF3
	MOVWF PCLATH
LABEL_AF3
	MOVFW SYS_TMP5
	MOVWF S2
	MOVFW SYS_TMP6
	MOVWF S2_HI

LABEL_AF3_EXIT
;***************************************************
; Zähler -> ZV1
;***************************************************

	BTFSS S58,6	; Reset ?
	GOTO LABEL_ZV1_COUNT
	CLRF ZV1
	CLRF ZV1_HI
	GOTO LABEL_ZV1_SETOUT

LABEL_ZV1_COUNT

; Test auf positive Flanke

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSS S56,7
	GOTO LABEL_ZV1_SETFD
	BTFSC ZV1_FD,0
	GOTO LABEL_ZV1_SETFD

	BSF ZV1_FD,0


	BTFSC S58,0	; 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
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	DECF ZV1,F
	INCFSZ ZV1,W
	GOTO LABEL_ZV1_SETOUT
	DECF ZV1_HI,F

LABEL_ZV1_SETOUT


LABEL_ZV1_SETFD

; Test auf negative Flanke

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC S56,7
	GOTO LABEL_ZV1_EXIT
	BCF ZV1_FD,0

LABEL_ZV1_EXIT

;***************************************************
;AF4
;***************************************************

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW T0_HI
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	ADDWF S17_HI,W
	MOVWF S5_HI
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW T0
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	ADDWF S17,W
	MOVWF S5
	BTFSC STATUS,CARRY
	INCF S5_HI,F

LABEL_AF4_EXIT
;***************************************************
; Vergleich -> IF1
;***************************************************

	MOVLW HIGH 1
	SUBWF ZV1_HI,W	; F - W -> W

	BTFSS STATUS,ZERO	; Wenn ZERO gesetzt LOW-Byte testen
	GOTO LABEL_IF1_CHECK
	MOVLW LOW 1
	SUBWF ZV1,W	; F - W -> W

LABEL_IF1_CHECK
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC STATUS,CARRY	; Test auf -> <
	GOTO LABEL_IF1_FALSE

LABEL_IF1_TRUE
	BSF S57,1
	GOTO LABEL_IF1_EXIT

LABEL_IF1_FALSE
	BCF S57,1

LABEL_IF1_EXIT
;***************************************************
; Multiplexer -> MX1
;***************************************************

	CLRF SYS_TMP1
	MOVFW S53
	BTFSS STATUS,ZERO
	GOTO LABEL_MX1_CHECKCONTROL1

	MOVFW ZV1
	MOVWF S3
	MOVFW ZV1_HI
	MOVWF S3_HI
	GOTO LABEL_MX1_END

LABEL_MX1_CHECKCONTROL1
	INCF SYS_TMP1,F
	MOVFW S53
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX1_CHECKCONTROL2

	MOVLW LOW 1
	MOVWF S3
	MOVLW HIGH 1
	MOVWF S3_HI
	GOTO LABEL_MX1_END

LABEL_MX1_CHECKCONTROL2

LABEL_MX1_END

;***************************************************
; Verteiler -> BV1
;***************************************************

	MOVLW 0 
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC S57,1	; IN0
	IORLW 1
	MOVWF S53	; OUT

;***************************************************
; GND
;***************************************************

	BCF S58,0	; immer Low

;***************************************************
;AF5
;***************************************************

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW T1_HI
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	ADDWF S16_HI,W
	MOVWF S4_HI
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW T1
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	ADDWF S16,W
	MOVWF S4
	BTFSC STATUS,CARRY
	INCF S4_HI,F

LABEL_AF5_EXIT
;***************************************************
;AF6
;***************************************************

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW T2_HI
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	ADDWF S15_HI,W
	MOVWF S6_HI
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW T2
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	ADDWF S15,W
	MOVWF S6
	BTFSC STATUS,CARRY
	INCF S6_HI,F

LABEL_AF6_EXIT
;***************************************************
; UND - Gatter -> LG16
;***************************************************

LABEL_LG16_1
	BCF STATUS,RP0	; Bank 0
	BTFSC PORTA,2
	GOTO LABEL_LG16_FALSE

LABEL_LG16_TRUE
	BSF STATUS,RP0	; Bank 1
	BSF S57,2
	GOTO LABEL_LG16_ENDE
LABEL_LG16_FALSE
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF S57,2
LABEL_LG16_ENDE
;***************************************************
; ODER - Gatter -> LG17
;***************************************************

LABEL_LG17_1
	BTFSC S56,6
	GOTO LABEL_LG17_TRUE
LABEL_LG17_2
	BTFSC S57,2
	GOTO LABEL_LG17_TRUE

LABEL_LG17_FALSE
	BCF S57,3
	GOTO LABEL_LG17_ENDE
LABEL_LG17_TRUE
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BSF S57,3
LABEL_LG17_ENDE
;***************************************************
; LCD -> LT15
;***************************************************

; test of positiv edge

	BTFSC LT15_FD,0
	GOTO LABEL_LT15_SETFD
	BCF STATUS,RP0	; Bank 0
	BTFSS S55,1
	GOTO LABEL_LT15_SETFD


	MOVLW 17
	MOVWF SYS_TMP1
	MOVLW 1
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW S0
	MOVWF SYS_TMP4
	MOVFW S0_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
	BSF PCLATH,3	; Page 1
	BCF PCLATH,4	; Page 1
LABEL_LT15_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,1
	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 S55,1
	GOTO LABEL_LT16_SETFD


	MOVLW 17
	MOVWF SYS_TMP1
	MOVLW 2
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW S1
	MOVWF SYS_TMP4
	MOVFW S1_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
	BSF PCLATH,3	; Page 1
	BCF PCLATH,4	; Page 1
LABEL_LT16_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,1
	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 S55,1
	GOTO LABEL_LT17_SETFD


	MOVLW 17
	MOVWF SYS_TMP1
	MOVLW 3
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	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
	BSF PCLATH,3	; Page 1
	BCF PCLATH,4	; Page 1
LABEL_LT17_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,1
	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 S55,1
	GOTO LABEL_LT18_SETFD


	MOVLW 17
	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

	BSF PCLATH,3	; Page 1
	BCF PCLATH,4	; Page 1
LABEL_LT18_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,1
	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

;***************************************************
; UND - Gatter -> LG18
;***************************************************

LABEL_LG18_1
	BCF STATUS,RP0	; Bank 0
	BTFSS S55,1
	GOTO LABEL_LG18_FALSE

LABEL_LG18_TRUE
	BSF PORTC,0
	GOTO LABEL_LG18_ENDE
LABEL_LG18_FALSE
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF PORTC,0
LABEL_LG18_ENDE
;***************************************************
; LCD -> LT19
;***************************************************

; test of positiv edge

	BSF STATUS,RP0	; Bank 1
	BTFSC LT19_FD,0
	GOTO LABEL_LT19_SETFD
	BCF STATUS,RP0	; Bank 0
	BTFSS S55,1
	GOTO LABEL_LT19_SETFD


	MOVLW 13
	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 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S24
	MOVWF SYS_TMP4
	CLRF SYS_TMP5

	BCF SYS_TMP10,0
	MOVLW 1
	MOVWF SYS_TMP9
	MOVLW HIGH LCD_LB1_DEZO100	; set page
	MOVWF PCLATH
	CALL LCD_LB1_DEZO100
	BSF PCLATH,3	; Page 1
	BCF PCLATH,4	; Page 1
LABEL_LT19_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,1
	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 S55,1
	GOTO LABEL_LT20_SETFD


	MOVLW 13
	MOVWF SYS_TMP1
	MOVLW 2
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S25
	MOVWF SYS_TMP4
	CLRF SYS_TMP5

	BCF SYS_TMP10,0
	MOVLW 1
	MOVWF SYS_TMP9
	MOVLW HIGH LCD_LB1_DEZO100	; set page
	MOVWF PCLATH
	CALL LCD_LB1_DEZO100
	BSF PCLATH,3	; Page 1
	BCF PCLATH,4	; Page 1
LABEL_LT20_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,1
	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 S55,1
	GOTO LABEL_LT21_SETFD


	MOVLW 13
	MOVWF SYS_TMP1
	MOVLW 3
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S26
	MOVWF SYS_TMP4
	CLRF SYS_TMP5

	BCF SYS_TMP10,0
	MOVLW 1
	MOVWF SYS_TMP9
	MOVLW HIGH LCD_LB1_DEZO100	; set page
	MOVWF PCLATH
	CALL LCD_LB1_DEZO100
	BSF PCLATH,3	; Page 1
	BCF PCLATH,4	; Page 1
LABEL_LT21_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,1
	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 S55,1
	GOTO LABEL_LT22_SETFD


	MOVLW 13
	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

	BSF PCLATH,3	; Page 1
	BCF PCLATH,4	; Page 1
LABEL_LT22_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,1
	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

;***************************************************
;AF7
;***************************************************

	MOVFW S12
	MOVWF SYS_TMP1
	MOVFW S12_HI
	MOVWF SYS_TMP2
	MOVFW S10
	MOVWF SYS_TMP3
	MOVFW S10_HI
	MOVWF SYS_TMP4
	MOVLW HIGH SYSDIV16
	MOVWF PCLATH
	CALL SYSDIV16
	MOVLW HIGH LABEL_AF7
	MOVWF PCLATH
LABEL_AF7
	MOVFW SYS_TMP5
	MOVWF S7
	MOVFW SYS_TMP6
	MOVWF S7_HI

LABEL_AF7_EXIT
;***************************************************
;AF8
;***************************************************

	MOVFW S11
	MOVWF SYS_TMP1
	MOVFW S11_HI
	MOVWF SYS_TMP2
	MOVFW S10
	MOVWF SYS_TMP3
	MOVFW S10_HI
	MOVWF SYS_TMP4
	MOVLW HIGH SYSDIV16
	MOVWF PCLATH
	CALL SYSDIV16
	MOVLW HIGH LABEL_AF8
	MOVWF PCLATH
LABEL_AF8
	MOVFW SYS_TMP5
	MOVWF S8
	MOVFW SYS_TMP6
	MOVWF S8_HI

LABEL_AF8_EXIT
;***************************************************
;AF9
;***************************************************

	MOVFW S14
	MOVWF SYS_TMP1
	MOVFW S14_HI
	MOVWF SYS_TMP2
	MOVFW S10
	MOVWF SYS_TMP3
	MOVFW S10_HI
	MOVWF SYS_TMP4
	MOVLW HIGH SYSDIV16
	MOVWF PCLATH
	CALL SYSDIV16
	MOVLW HIGH LABEL_AF9
	MOVWF PCLATH
LABEL_AF9
	MOVFW SYS_TMP5
	MOVWF S9
	MOVFW SYS_TMP6
	MOVWF S9_HI

LABEL_AF9_EXIT
;***************************************************
; Zähler -> ZV2
;***************************************************

	BTFSS S58,1	; Reset ?
	GOTO LABEL_ZV2_COUNT
	CLRF ZV2
	CLRF ZV2_HI
	GOTO LABEL_ZV2_SETOUT

LABEL_ZV2_COUNT

; Test auf positive Flanke

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSS S57,5
	GOTO LABEL_ZV2_SETFD
	BTFSC ZV2_FD,0
	GOTO LABEL_ZV2_SETFD

	BSF ZV2_FD,0


	BTFSC S58,0	; 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
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	DECF ZV2,F
	INCFSZ ZV2,W
	GOTO LABEL_ZV2_SETOUT
	DECF ZV2_HI,F

LABEL_ZV2_SETOUT


LABEL_ZV2_SETFD

; Test auf negative Flanke

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC S57,5
	GOTO LABEL_ZV2_EXIT
	BCF ZV2_FD,0

LABEL_ZV2_EXIT

;***************************************************
; Zähler -> ZV3
;***************************************************

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSS S58,1	; Reset ?
	GOTO LABEL_ZV3_COUNT
	CLRF ZV3
	CLRF ZV3_HI
	GOTO LABEL_ZV3_SETOUT

LABEL_ZV3_COUNT

; Test auf positive Flanke

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSS S57,0
	GOTO LABEL_ZV3_SETFD
	BTFSC ZV3_FD,0
	GOTO LABEL_ZV3_SETFD

	BSF ZV3_FD,0


	BTFSC S58,0	; 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
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	DECF ZV3,F
	INCFSZ ZV3,W
	GOTO LABEL_ZV3_SETOUT
	DECF ZV3_HI,F

LABEL_ZV3_SETOUT


LABEL_ZV3_SETFD

; Test auf negative Flanke

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC S57,0
	GOTO LABEL_ZV3_EXIT
	BCF ZV3_FD,0

LABEL_ZV3_EXIT

;***************************************************
; Zähler -> ZV4
;***************************************************

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSS S58,1	; Reset ?
	GOTO LABEL_ZV4_COUNT
	CLRF ZV4
	CLRF ZV4_HI
	GOTO LABEL_ZV4_SETOUT

LABEL_ZV4_COUNT

; Test auf positive Flanke

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSS S57,6
	GOTO LABEL_ZV4_SETFD
	BTFSC ZV4_FD,0
	GOTO LABEL_ZV4_SETFD

	BSF ZV4_FD,0


	BTFSC S58,0	; 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
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	DECF ZV4,F
	INCFSZ ZV4,W
	GOTO LABEL_ZV4_SETOUT
	DECF ZV4_HI,F

LABEL_ZV4_SETOUT


LABEL_ZV4_SETFD

; Test auf negative Flanke

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC S57,6
	GOTO LABEL_ZV4_EXIT
	BCF ZV4_FD,0

LABEL_ZV4_EXIT

;***************************************************
; Zähler -> ZV5
;***************************************************

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSS S58,1	; Reset ?
	GOTO LABEL_ZV5_COUNT
	CLRF ZV5
	CLRF ZV5_HI
	GOTO LABEL_ZV5_SETOUT

LABEL_ZV5_COUNT

; Test auf positive Flanke

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSS S56,3
	GOTO LABEL_ZV5_SETFD
	BTFSC ZV5_FD,0
	GOTO LABEL_ZV5_SETFD

	BSF ZV5_FD,0


	BTFSC S58,0	; 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


LABEL_ZV5_SETFD

; Test auf negative Flanke

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC S56,3
	GOTO LABEL_ZV5_EXIT
	BCF ZV5_FD,0

LABEL_ZV5_EXIT

;***************************************************
;AF10
;***************************************************

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW ZV2
	MOVWF SYS_TMP1
	MOVFW ZV2_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_AF10
	MOVWF PCLATH
LABEL_AF10
	MOVFW SYS_TMP5
	MOVWF S12
	MOVFW SYS_TMP6
	MOVWF S12_HI

LABEL_AF10_EXIT
;***************************************************
; Vergleich -> IF2
;***************************************************

	MOVLW HIGH 1
	SUBWF ZV5_HI,W	; F - W -> W

	BTFSS STATUS,ZERO	; Wenn ZERO gesetzt LOW-Byte testen
	GOTO LABEL_IF2_CHECK
	MOVLW LOW 1
	SUBWF ZV5,W	; F - W -> W

LABEL_IF2_CHECK
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC STATUS,CARRY	; Test auf -> <
	GOTO LABEL_IF2_FALSE

LABEL_IF2_TRUE
	BSF S57,7
	GOTO LABEL_IF2_EXIT

LABEL_IF2_FALSE
	BCF S57,7

LABEL_IF2_EXIT
;***************************************************
; Multiplexer -> MX2
;***************************************************

	CLRF SYS_TMP1
	MOVFW S13
	BTFSS STATUS,ZERO
	GOTO LABEL_MX2_CHECKCONTROL1

	MOVFW ZV5
	MOVWF S10
	MOVFW ZV5_HI
	MOVWF S10_HI
	GOTO LABEL_MX2_END

LABEL_MX2_CHECKCONTROL1
	INCF SYS_TMP1,F
	MOVFW S13
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX2_CHECKCONTROL2

	MOVLW LOW 1
	MOVWF S10
	MOVLW HIGH 1
	MOVWF S10_HI
	GOTO LABEL_MX2_END

LABEL_MX2_CHECKCONTROL2

LABEL_MX2_END

;***************************************************
; Verteiler -> BV2
;***************************************************

	MOVLW 0 
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC S57,7	; IN0
	IORLW 1
	MOVWF S13	; OUT

;***************************************************
;AF11
;***************************************************

	MOVFW ZV3
	MOVWF SYS_TMP1
	MOVFW ZV3_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_AF11
	MOVWF PCLATH
LABEL_AF11
	MOVFW SYS_TMP5
	MOVWF S11
	MOVFW SYS_TMP6
	MOVWF S11_HI

LABEL_AF11_EXIT
;***************************************************
;AF12
;***************************************************

	MOVFW ZV4
	MOVWF SYS_TMP1
	MOVFW ZV4_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_AF12
	MOVWF PCLATH
LABEL_AF12
	MOVFW SYS_TMP5
	MOVWF S14
	MOVFW SYS_TMP6
	MOVWF S14_HI

LABEL_AF12_EXIT
;***************************************************
; Multiplexer -> MX3
;***************************************************

	CLRF SYS_TMP1
	BSF STATUS,RP1	; Bank 3
	MOVFW S18
	BTFSS STATUS,ZERO
	GOTO LABEL_MX3_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 1
	MOVFW S17
	MOVWF S17
	MOVFW S17_HI
	MOVWF S17_HI
	GOTO LABEL_MX3_END

LABEL_MX3_CHECKCONTROL1
	INCF SYS_TMP1,F
	BSF STATUS,RP1	; Bank 3
	MOVFW S18
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX3_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 1
	MOVFW S7
	MOVWF S17
	MOVFW S7_HI
	MOVWF S17_HI
	GOTO LABEL_MX3_END

LABEL_MX3_CHECKCONTROL2

LABEL_MX3_END

;***************************************************
; Multiplexer -> MX4
;***************************************************

	CLRF SYS_TMP1
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	MOVFW S18
	BTFSS STATUS,ZERO
	GOTO LABEL_MX4_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 1
	MOVFW S16
	MOVWF S16
	MOVFW S16_HI
	MOVWF S16_HI
	GOTO LABEL_MX4_END

LABEL_MX4_CHECKCONTROL1
	INCF SYS_TMP1,F
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	MOVFW S18
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX4_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 1
	MOVFW S8
	MOVWF S16
	MOVFW S8_HI
	MOVWF S16_HI
	GOTO LABEL_MX4_END

LABEL_MX4_CHECKCONTROL2

LABEL_MX4_END

;***************************************************
; Multiplexer -> MX5
;***************************************************

	CLRF SYS_TMP1
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	MOVFW S18
	BTFSS STATUS,ZERO
	GOTO LABEL_MX5_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 1
	MOVFW S15
	MOVWF S15
	MOVFW S15_HI
	MOVWF S15_HI
	GOTO LABEL_MX5_END

LABEL_MX5_CHECKCONTROL1
	INCF SYS_TMP1,F
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	MOVFW S18
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX5_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 1
	MOVFW S9
	MOVWF S15
	MOVFW S9_HI
	MOVWF S15_HI
	GOTO LABEL_MX5_END

LABEL_MX5_CHECKCONTROL2

LABEL_MX5_END

;***************************************************
; Anzug-Verzögerung -> MF1
;***************************************************

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC S57,3	; Eingang auf High ?
	GOTO LABEL_MF1_CHKTIME	; Ja

; RESET

	CLRF MF1
	CLRF MF1_HI
	BCF S58,2
	GOTO LABEL_MF1_EXIT	; raus

LABEL_MF1_CHKTIME

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC S58,2	; Ausgang schon auf High ?
	GOTO LABEL_MF1_EXIT	; Ja

	MOVLW 7
	SUBWF MF1_HI,W
	BTFSS STATUS,CARRY
	GOTO LABEL_MF1_EXIT

	MOVLW 161
	SUBWF MF1,W
	BTFSS STATUS,CARRY
	GOTO LABEL_MF1_EXIT

	BSF S58,2
LABEL_MF1_EXIT

;***************************************************
; One Shot -> OS2
;***************************************************


	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC S58,2
	GOTO LABEL_OS2_1
	BTFSC OS2_FD,0
	GOTO LABEL_OS2_1
	BSF OS2_FD,0
	BSF S58,3
	GOTO LABEL_OS2_2
LABEL_OS2_1
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF S58,3
	BTFSS S58,2
	GOTO LABEL_OS2_2
	BCF OS2_FD,0
LABEL_OS2_2
;***************************************************
; One Shot -> OS3
;***************************************************


	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC S58,3
	GOTO LABEL_OS3_1
	BTFSC OS3_FD,0
	GOTO LABEL_OS3_1
	BSF OS3_FD,0
	BSF S58,4
	GOTO LABEL_OS3_2
LABEL_OS3_1
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF S58,4
	BTFSS S58,3
	GOTO LABEL_OS3_2
	BCF OS3_FD,0
LABEL_OS3_2
;***************************************************
; One Shot -> OS4
;***************************************************


	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC S58,4
	GOTO LABEL_OS4_1
	BTFSC OS4_FD,0
	GOTO LABEL_OS4_1
	BSF OS4_FD,0
	BSF S56,7
	GOTO LABEL_OS4_2
LABEL_OS4_1
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF S56,7
	BTFSS S58,4
	GOTO LABEL_OS4_2
	BCF OS4_FD,0
LABEL_OS4_2
;***************************************************
; One Shot -> OS5
;***************************************************


	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC S56,7
	GOTO LABEL_OS5_1
	BTFSC OS5_FD,0
	GOTO LABEL_OS5_1
	BSF OS5_FD,0
	BSF S58,5
	GOTO LABEL_OS5_2
LABEL_OS5_1
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF S58,5
	BTFSS S56,7
	GOTO LABEL_OS5_2
	BCF OS5_FD,0
LABEL_OS5_2
;***************************************************
; ODER - Gatter -> LG19
;***************************************************

LABEL_LG19_1
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC S57,4
	GOTO LABEL_LG19_TRUE
LABEL_LG19_2
	BTFSC S56,4
	GOTO LABEL_LG19_TRUE
LABEL_LG19_3
	BTFSC S56,5
	GOTO LABEL_LG19_TRUE

LABEL_LG19_FALSE
	BCF S59,4
	GOTO LABEL_LG19_ENDE
LABEL_LG19_TRUE
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BSF S59,4
LABEL_LG19_ENDE
;***************************************************
; RS-FLIP-FLOP -> RS1
;***************************************************

	BTFSC S59,7
	GOTO LABEL_RS1_RESET
	BTFSS S58,7
	GOTO LABEL_RS1_ENDE
	BSF S59,0	; Ausgang setzen
	GOTO LABEL_RS1_ENDE
LABEL_RS1_RESET
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF S59,0	; Ausgang zurücksetzen
LABEL_RS1_ENDE

;***************************************************
; One Shot -> OS6
;***************************************************


	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSS S58,2
	GOTO LABEL_OS6_1
	BTFSC OS6_FD,0
	GOTO LABEL_OS6_1
	BSF OS6_FD,0
	BSF S58,7
	GOTO LABEL_OS6_2
LABEL_OS6_1
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF S58,7
	BTFSC S58,2
	GOTO LABEL_OS6_2
	BCF OS6_FD,0
LABEL_OS6_2
;***************************************************
; UND - Gatter -> LG20
;***************************************************

LABEL_LG20_1
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSS S59,0
	GOTO LABEL_LG20_FALSE
LABEL_LG20_2
	BTFSS S59,3
	GOTO LABEL_LG20_FALSE
LABEL_LG20_3
	BTFSC S59,6
	GOTO LABEL_LG20_FALSE

LABEL_LG20_TRUE
	BSF S59,2
	GOTO LABEL_LG20_ENDE
LABEL_LG20_FALSE
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF S59,2
LABEL_LG20_ENDE
;***************************************************
; One Shot -> OS7
;***************************************************


	BTFSS S59,4
	GOTO LABEL_OS7_1
	BTFSC OS7_FD,0
	GOTO LABEL_OS7_1
	BSF OS7_FD,0
	BSF S59,5
	GOTO LABEL_OS7_2
LABEL_OS7_1
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF S59,5
	BTFSC S59,4
	GOTO LABEL_OS7_2
	BCF OS7_FD,0
LABEL_OS7_2
;***************************************************
; Anzug-Verzögerung -> MF2
;***************************************************

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSS S57,3	; Eingang auf Low ?
	GOTO LABEL_MF2_CHKTIME	; Ja

; RESET

	CLRF MF2
	CLRF MF2_HI
	BCF S59,1
	GOTO LABEL_MF2_EXIT	; raus

LABEL_MF2_CHKTIME

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC S59,1	; Ausgang schon auf High ?
	GOTO LABEL_MF2_EXIT	; Ja

	MOVLW 4
	SUBWF MF2_HI,W
	BTFSS STATUS,CARRY
	GOTO LABEL_MF2_EXIT

	MOVLW 148
	SUBWF MF2,W
	BTFSS STATUS,CARRY
	GOTO LABEL_MF2_EXIT

	BSF S59,1
LABEL_MF2_EXIT

;***************************************************
; One Shot -> OS8
;***************************************************


	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSS S59,1
	GOTO LABEL_OS8_1
	BTFSC OS8_FD,0
	GOTO LABEL_OS8_1
	BSF OS8_FD,0
	BSF S59,3
	GOTO LABEL_OS8_2
LABEL_OS8_1
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF S59,3
	BTFSC S59,1
	GOTO LABEL_OS8_2
	BCF OS8_FD,0
LABEL_OS8_2
;***************************************************
; Zähler -> ZV6
;***************************************************

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSS S58,6	; Reset ?
	GOTO LABEL_ZV6_COUNT
	CLRF ZV6
	GOTO LABEL_ZV6_SETOUT

LABEL_ZV6_COUNT

; Test auf positive Flanke

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSS S59,2
	GOTO LABEL_ZV6_SETFD
	BTFSC ZV6_FD,0
	GOTO LABEL_ZV6_SETFD

	BSF ZV6_FD,0


	BTFSC S58,0	; Vorwärts oder Rückwärts ?
	GOTO LABEL_ZV6_BACKWARD

	INCF ZV6,F
	GOTO LABEL_ZV6_SETOUT

LABEL_ZV6_BACKWARD
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	DECF ZV6,F

LABEL_ZV6_SETOUT


LABEL_ZV6_SETFD

; Test auf negative Flanke

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC S59,2
	GOTO LABEL_ZV6_EXIT
	BCF ZV6_FD,0

LABEL_ZV6_EXIT

;***************************************************
; One Shot -> OS9
;***************************************************


	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC S59,3
	GOTO LABEL_OS9_1
	BTFSC OS9_FD,0
	GOTO LABEL_OS9_1
	BSF OS9_FD,0
	BSF S59,7
	GOTO LABEL_OS9_2
LABEL_OS9_1
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF S59,7
	BTFSS S59,3
	GOTO LABEL_OS9_2
	BCF OS9_FD,0
LABEL_OS9_2
;***************************************************
; RS-FLIP-FLOP -> RS2
;***************************************************

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC S59,7
	GOTO LABEL_RS2_RESET
	BTFSS S59,5
	GOTO LABEL_RS2_ENDE
	BSF S59,6	; Ausgang setzen
	GOTO LABEL_RS2_ENDE
LABEL_RS2_RESET
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF S59,6	; Ausgang zurücksetzen
LABEL_RS2_ENDE

;***************************************************
; LCD -> LT23
;***************************************************

; test of positiv edge

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC LT23_FD,0
	GOTO LABEL_LT23_SETFD
	BCF STATUS,RP0	; Bank 0
	BTFSS S55,1
	GOTO LABEL_LT23_SETFD


	MOVLW 11
	MOVWF SYS_TMP1
	MOVLW 2
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S21
	MOVWF SYS_TMP4
	CLRF SYS_TMP5

	BSF SYS_TMP10,0
	MOVLW 3
	MOVWF SYS_TMP9
	MOVLW HIGH LCD_LB1_DEZO100	; set page
	MOVWF PCLATH
	CALL LCD_LB1_DEZO100
	BSF PCLATH,3	; Page 1
	BCF PCLATH,4	; Page 1
LABEL_LT23_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,1
	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

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC LT24_FD,0
	GOTO LABEL_LT24_SETFD
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,1
	GOTO LABEL_LT24_SETFD


	MOVLW 9
	MOVWF SYS_TMP1
	MOVLW 3
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S23
	MOVWF SYS_TMP4
	CLRF SYS_TMP5

	BCF SYS_TMP10,0
	CLRF SYS_TMP9
	MOVLW HIGH LCD_LB1_DEZO100	; set page
	MOVWF PCLATH
	CALL LCD_LB1_DEZO100
	BSF PCLATH,3	; Page 1
	BCF PCLATH,4	; Page 1
LABEL_LT24_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,1
	GOTO LABEL_LT24_SETFD2
	BSF STATUS,RP1	; Bank 2
	BSF LT24_FD,0
	GOTO LABEL_LT24_END
LABEL_LT24_SETFD2
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF LT24_FD,0
LABEL_LT24_END

;***************************************************
; LCD -> LT25
;***************************************************

; test of positiv edge

	BTFSC LT25_FD,0
	GOTO LABEL_LT25_SETFD
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,1
	GOTO LABEL_LT25_SETFD


	MOVLW 5
	MOVWF SYS_TMP1
	MOVLW 1
	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 S55,1
	GOTO LABEL_LT25_SETFD2
	BSF STATUS,RP1	; Bank 2
	BSF LT25_FD,0
	GOTO LABEL_LT25_END
LABEL_LT25_SETFD2
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF LT25_FD,0
LABEL_LT25_END

;***************************************************
; LCD -> LT26
;***************************************************

; test of positiv edge

	BTFSC LT26_FD,0
	GOTO LABEL_LT26_SETFD
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,1
	GOTO LABEL_LT26_SETFD


	MOVLW 5
	MOVWF SYS_TMP1
	MOVLW 2
	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 S55,1
	GOTO LABEL_LT26_SETFD2
	BSF STATUS,RP1	; Bank 2
	BSF LT26_FD,0
	GOTO LABEL_LT26_END
LABEL_LT26_SETFD2
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF LT26_FD,0
LABEL_LT26_END

;***************************************************
; LCD -> LT27
;***************************************************

; test of positiv edge

	BTFSC LT27_FD,0
	GOTO LABEL_LT27_SETFD
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,1
	GOTO LABEL_LT27_SETFD


	MOVLW 5
	MOVWF SYS_TMP1
	MOVLW 3
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	MOVLW LOW TAB_LT27
	MOVWF SYS_TMP4
	MOVLW HIGH TAB_LT27
	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_LT27_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,1
	GOTO LABEL_LT27_SETFD2
	BSF STATUS,RP1	; Bank 2
	BSF LT27_FD,0
	GOTO LABEL_LT27_END
LABEL_LT27_SETFD2
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF LT27_FD,0
LABEL_LT27_END

;***************************************************
; Vergleich -> IF3
;***************************************************

	MOVLW 0
	SUBWF ZV8,W	; F - W -> W

LABEL_IF3_CHECK
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS STATUS,ZERO	; Test auf -> =
	GOTO LABEL_IF3_FALSE

LABEL_IF3_TRUE
	BSF S60,2
	GOTO LABEL_IF3_EXIT

LABEL_IF3_FALSE
	BCF S60,2

LABEL_IF3_EXIT
;***************************************************
; LCD -> LT28
;***************************************************

; test of positiv edge

	BTFSC LT28_FD,0
	GOTO LABEL_LT28_SETFD
	BTFSS S60,0
	GOTO LABEL_LT28_SETFD


	MOVLW 0
	MOVWF SYS_TMP1
	MOVLW 2
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	MOVLW LOW TAB_LT28
	MOVWF SYS_TMP4
	MOVLW HIGH TAB_LT28
	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_LT28_SETFD

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS S60,0
	GOTO LABEL_LT28_SETFD2
	BSF LT28_FD,0
	GOTO LABEL_LT28_END
LABEL_LT28_SETFD2
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF LT28_FD,0
LABEL_LT28_END

;***************************************************
; LCD -> LT29
;***************************************************

; test of positiv edge

	BTFSC LT29_FD,0
	GOTO LABEL_LT29_SETFD
	BTFSS S60,1
	GOTO LABEL_LT29_SETFD


	MOVLW 0
	MOVWF SYS_TMP1
	MOVLW 2
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	MOVLW LOW TAB_LT29
	MOVWF SYS_TMP4
	MOVLW HIGH TAB_LT29
	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_LT29_SETFD

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS S60,1
	GOTO LABEL_LT29_SETFD2
	BSF LT29_FD,0
	GOTO LABEL_LT29_END
LABEL_LT29_SETFD2
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF LT29_FD,0
LABEL_LT29_END

;***************************************************
; LCD -> LT30
;***************************************************

; test of positiv edge

	BTFSC LT30_FD,0
	GOTO LABEL_LT30_SETFD
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,1
	GOTO LABEL_LT30_SETFD


	MOVLW 11
	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 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S22
	MOVWF SYS_TMP4
	CLRF SYS_TMP5

	BCF SYS_TMP10,0
	MOVLW 3
	MOVWF SYS_TMP9
	MOVLW HIGH LCD_LB1_DEZO100	; set page
	MOVWF PCLATH
	CALL LCD_LB1_DEZO100
	BSF PCLATH,3	; Page 1
	BCF PCLATH,4	; Page 1
LABEL_LT30_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,1
	GOTO LABEL_LT30_SETFD2
	BSF STATUS,RP1	; Bank 2
	BSF LT30_FD,0
	GOTO LABEL_LT30_END
LABEL_LT30_SETFD2
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF LT30_FD,0
LABEL_LT30_END

;***************************************************
; UND - Gatter -> LG21
;***************************************************

LABEL_LG21_1
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,1
	GOTO LABEL_LG21_FALSE
LABEL_LG21_2
	BSF STATUS,RP1	; Bank 2
	BTFSC S60,2
	GOTO LABEL_LG21_FALSE

LABEL_LG21_TRUE
	BSF S60,0
	GOTO LABEL_LG21_ENDE
LABEL_LG21_FALSE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S60,0
LABEL_LG21_ENDE
;***************************************************
; UND - Gatter -> LG22
;***************************************************

LABEL_LG22_1
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,1
	GOTO LABEL_LG22_FALSE
LABEL_LG22_2
	BSF STATUS,RP1	; Bank 2
	BTFSS S60,2
	GOTO LABEL_LG22_FALSE

LABEL_LG22_TRUE
	BSF S60,1
	GOTO LABEL_LG22_ENDE
LABEL_LG22_FALSE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S60,1
LABEL_LG22_ENDE
;***************************************************
; RS-FLIP-FLOP -> RS3
;***************************************************

	BTFSC S60,6
	GOTO LABEL_RS3_RESET
	BTFSS S60,3
	GOTO LABEL_RS3_ENDE
	BSF S60,4	; Ausgang setzen
	GOTO LABEL_RS3_ENDE
LABEL_RS3_RESET
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S60,4	; Ausgang zurücksetzen
LABEL_RS3_ENDE

;***************************************************
; UND - Gatter -> LG23
;***************************************************

LABEL_LG23_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS S60,4
	GOTO LABEL_LG23_FALSE
LABEL_LG23_2
	BTFSS S60,3
	GOTO LABEL_LG23_FALSE

LABEL_LG23_TRUE
	BSF S61,1
	GOTO LABEL_LG23_ENDE
LABEL_LG23_FALSE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S61,1
LABEL_LG23_ENDE
;***************************************************
; Zähler -> ZV7
;***************************************************

	BTFSS S60,6	; Reset ?
	GOTO LABEL_ZV7_COUNT
	CLRF ZV7
	GOTO LABEL_ZV7_SETOUT

LABEL_ZV7_COUNT

; Test auf positive Flanke

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS S60,7
	GOTO LABEL_ZV7_SETFD
	BTFSC ZV7_FD,0
	GOTO LABEL_ZV7_SETFD

	BSF ZV7_FD,0


	BTFSC S61,0	; Vorwärts oder Rückwärts ?
	GOTO LABEL_ZV7_BACKWARD

	INCF ZV7,F
	GOTO LABEL_ZV7_SETOUT

LABEL_ZV7_BACKWARD
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	DECF ZV7,F

LABEL_ZV7_SETOUT


LABEL_ZV7_SETFD

; Test auf negative Flanke

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S60,7
	GOTO LABEL_ZV7_EXIT
	BCF ZV7_FD,0

LABEL_ZV7_EXIT

;***************************************************
; Zähler -> ZV8
;***************************************************

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS S61,3	; Reset ?
	GOTO LABEL_ZV8_COUNT
	CLRF ZV8
	GOTO LABEL_ZV8_SETOUT

LABEL_ZV8_COUNT

; Test auf positive Flanke

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS S61,1
	GOTO LABEL_ZV8_SETFD
	BTFSC ZV8_FD,0
	GOTO LABEL_ZV8_SETFD

	BSF ZV8_FD,0


	BTFSC S61,0	; Vorwärts oder Rückwärts ?
	GOTO LABEL_ZV8_BACKWARD

	INCF ZV8,F
	GOTO LABEL_ZV8_SETOUT

LABEL_ZV8_BACKWARD
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	DECF ZV8,F

LABEL_ZV8_SETOUT


LABEL_ZV8_SETFD

; Test auf negative Flanke

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S61,1
	GOTO LABEL_ZV8_EXIT
	BCF ZV8_FD,0

LABEL_ZV8_EXIT

;***************************************************
; Schmitt-Trigger 8-Bit -> ST1
;***************************************************

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S60,5	; Ausgang gesetzt ?
	GOTO LABEL_ST1_MH	; dann mit Hysterese ?

	MOVLW 180
	GOTO LABEL_ST1_TEST

LABEL_ST1_MH

	MOVLW 180
LABEL_ST1_TEST

	SUBWF ZV7,W
	BTFSS STATUS,CARRY
	GOTO LABEL_ST1_RESET

	BSF S60,5	; if greater or equal
	GOTO LABEL_ST1_ENDE

LABEL_ST1_RESET
	BCF S60,5	; if less
LABEL_ST1_ENDE

;***************************************************
; Schmitt-Trigger 8-Bit -> ST2
;***************************************************

	BTFSC S61,2	; Ausgang gesetzt ?
	GOTO LABEL_ST2_MH	; dann mit Hysterese ?

	MOVLW 8
	GOTO LABEL_ST2_TEST

LABEL_ST2_MH

	MOVLW 8
LABEL_ST2_TEST

	SUBWF ZV8,W
	BTFSS STATUS,CARRY
	GOTO LABEL_ST2_RESET

	BSF S61,2	; if greater or equal
	GOTO LABEL_ST2_ENDE

LABEL_ST2_RESET
	BCF S61,2	; if less
LABEL_ST2_ENDE

;***************************************************
; ODER - Gatter -> LG24
;***************************************************

LABEL_LG24_1
	BTFSC S60,5
	GOTO LABEL_LG24_TRUE
LABEL_LG24_2
	BTFSC S61,4
	GOTO LABEL_LG24_TRUE

LABEL_LG24_FALSE
	BCF S60,6
	GOTO LABEL_LG24_ENDE
LABEL_LG24_TRUE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BSF S60,6
LABEL_LG24_ENDE
;***************************************************
; ODER - Gatter -> LG25
;***************************************************

LABEL_LG25_1
	BTFSC S61,2
	GOTO LABEL_LG25_TRUE
LABEL_LG25_2
	BTFSC S60,6
	GOTO LABEL_LG25_TRUE

LABEL_LG25_FALSE
	BCF S61,3
	GOTO LABEL_LG25_ENDE
LABEL_LG25_TRUE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BSF S61,3
LABEL_LG25_ENDE
;***************************************************
; UND - Gatter -> LG26
;***************************************************

LABEL_LG26_1
	BTFSS S60,4
	GOTO LABEL_LG26_FALSE
LABEL_LG26_2
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,1
	GOTO LABEL_LG26_FALSE

LABEL_LG26_TRUE
	BSF STATUS,RP1	; Bank 2
	BSF S60,7
	GOTO LABEL_LG26_ENDE
LABEL_LG26_FALSE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S60,7
LABEL_LG26_ENDE
;***************************************************
; Multiplexer -> MX6
;***************************************************

	CLRF SYS_TMP1
	MOVFW ZV8
	BTFSS STATUS,ZERO
	GOTO LABEL_MX6_CHECKCONTROL1

	BSF STATUS,RP0	; Bank 3
	MOVFW S32
	BCF STATUS,RP0	; Bank 2
	MOVWF S21
	GOTO LABEL_MX6_END

LABEL_MX6_CHECKCONTROL1
	INCF SYS_TMP1,F
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX6_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW MU0
	BSF STATUS,RP1	; Bank 2
	MOVWF S21
	GOTO LABEL_MX6_END

LABEL_MX6_CHECKCONTROL2
	INCF SYS_TMP1,F
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX6_CHECKCONTROL3

	BCF STATUS,RP1	; Bank 0
	MOVFW MU1
	BSF STATUS,RP1	; Bank 2
	MOVWF S21
	GOTO LABEL_MX6_END

LABEL_MX6_CHECKCONTROL3
	INCF SYS_TMP1,F
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX6_CHECKCONTROL4

	BCF STATUS,RP1	; Bank 0
	MOVFW MU2
	BSF STATUS,RP1	; Bank 2
	MOVWF S21
	GOTO LABEL_MX6_END

LABEL_MX6_CHECKCONTROL4
	INCF SYS_TMP1,F
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX6_CHECKCONTROL5

	BCF STATUS,RP1	; Bank 0
	MOVFW MU3
	BSF STATUS,RP1	; Bank 2
	MOVWF S21
	GOTO LABEL_MX6_END

LABEL_MX6_CHECKCONTROL5
	INCF SYS_TMP1,F
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX6_CHECKCONTROL6

	BCF STATUS,RP1	; Bank 0
	MOVFW MU4
	BSF STATUS,RP1	; Bank 2
	MOVWF S21
	GOTO LABEL_MX6_END

LABEL_MX6_CHECKCONTROL6
	INCF SYS_TMP1,F
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX6_CHECKCONTROL7

	BCF STATUS,RP1	; Bank 0
	MOVFW MU5
	BSF STATUS,RP1	; Bank 2
	MOVWF S21
	GOTO LABEL_MX6_END

LABEL_MX6_CHECKCONTROL7
	INCF SYS_TMP1,F
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX6_CHECKCONTROL8

	BCF STATUS,RP1	; Bank 0
	MOVFW MU6
	BSF STATUS,RP1	; Bank 2
	MOVWF S21
	GOTO LABEL_MX6_END

LABEL_MX6_CHECKCONTROL8

LABEL_MX6_END

;***************************************************
; Multiplexer -> MX7
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	BTFSS STATUS,ZERO
	GOTO LABEL_MX7_CHECKCONTROL1

	MOVFW S19
	MOVWF S22
	GOTO LABEL_MX7_END

LABEL_MX7_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX7_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW HE0
	BSF STATUS,RP1	; Bank 2
	MOVWF S22
	GOTO LABEL_MX7_END

LABEL_MX7_CHECKCONTROL2
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX7_CHECKCONTROL3

	BCF STATUS,RP1	; Bank 0
	MOVFW HE1
	BSF STATUS,RP1	; Bank 2
	MOVWF S22
	GOTO LABEL_MX7_END

LABEL_MX7_CHECKCONTROL3
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX7_CHECKCONTROL4

	BCF STATUS,RP1	; Bank 0
	MOVFW HE2
	BSF STATUS,RP1	; Bank 2
	MOVWF S22
	GOTO LABEL_MX7_END

LABEL_MX7_CHECKCONTROL4
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX7_CHECKCONTROL5

	BCF STATUS,RP1	; Bank 0
	MOVFW HE3
	BSF STATUS,RP1	; Bank 2
	MOVWF S22
	GOTO LABEL_MX7_END

LABEL_MX7_CHECKCONTROL5
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX7_CHECKCONTROL6

	BCF STATUS,RP1	; Bank 0
	MOVFW HE4
	BSF STATUS,RP1	; Bank 2
	MOVWF S22
	GOTO LABEL_MX7_END

LABEL_MX7_CHECKCONTROL6
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX7_CHECKCONTROL7

	BCF STATUS,RP1	; Bank 0
	MOVFW HE5
	BSF STATUS,RP1	; Bank 2
	MOVWF S22
	GOTO LABEL_MX7_END

LABEL_MX7_CHECKCONTROL7
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX7_CHECKCONTROL8

	BCF STATUS,RP1	; Bank 0
	MOVFW HE6
	BSF STATUS,RP1	; Bank 2
	MOVWF S22
	GOTO LABEL_MX7_END

LABEL_MX7_CHECKCONTROL8

LABEL_MX7_END

;***************************************************
; Multiplexer -> MX8
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	BTFSS STATUS,ZERO
	GOTO LABEL_MX8_CHECKCONTROL1

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW ZV6
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVWF S23
	GOTO LABEL_MX8_END

LABEL_MX8_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX8_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW U0
	BSF STATUS,RP1	; Bank 2
	MOVWF S23
	GOTO LABEL_MX8_END

LABEL_MX8_CHECKCONTROL2
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX8_CHECKCONTROL3

	BCF STATUS,RP1	; Bank 0
	MOVFW U1
	BSF STATUS,RP1	; Bank 2
	MOVWF S23
	GOTO LABEL_MX8_END

LABEL_MX8_CHECKCONTROL3
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX8_CHECKCONTROL4

	BCF STATUS,RP1	; Bank 0
	MOVFW U2
	BSF STATUS,RP1	; Bank 2
	MOVWF S23
	GOTO LABEL_MX8_END

LABEL_MX8_CHECKCONTROL4
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX8_CHECKCONTROL5

	BCF STATUS,RP1	; Bank 0
	MOVFW U3
	BSF STATUS,RP1	; Bank 2
	MOVWF S23
	GOTO LABEL_MX8_END

LABEL_MX8_CHECKCONTROL5
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX8_CHECKCONTROL6

	BCF STATUS,RP1	; Bank 0
	MOVFW U4
	BSF STATUS,RP1	; Bank 2
	MOVWF S23
	GOTO LABEL_MX8_END

LABEL_MX8_CHECKCONTROL6
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX8_CHECKCONTROL7

	BCF STATUS,RP1	; Bank 0
	MOVFW U5
	BSF STATUS,RP1	; Bank 2
	MOVWF S23
	GOTO LABEL_MX8_END

LABEL_MX8_CHECKCONTROL7
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX8_CHECKCONTROL8

	BCF STATUS,RP1	; Bank 0
	MOVFW U6
	BSF STATUS,RP1	; Bank 2
	MOVWF S23
	GOTO LABEL_MX8_END

LABEL_MX8_CHECKCONTROL8

LABEL_MX8_END

	BCF PCLATH,3	; Page 2
	BSF PCLATH,4	; Page 2
	GOTO 4096
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP

;***************************************************
; Multiplexer -> MX9
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	BTFSS STATUS,ZERO
	GOTO LABEL_MX9_CHECKCONTROL1

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW S17
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVWF S24
	GOTO LABEL_MX9_END

LABEL_MX9_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX9_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW N10
	BSF STATUS,RP1	; Bank 2
	MOVWF S24
	GOTO LABEL_MX9_END

LABEL_MX9_CHECKCONTROL2
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX9_CHECKCONTROL3

	BCF STATUS,RP1	; Bank 0
	MOVFW N11
	BSF STATUS,RP1	; Bank 2
	MOVWF S24
	GOTO LABEL_MX9_END

LABEL_MX9_CHECKCONTROL3
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX9_CHECKCONTROL4

	BCF STATUS,RP1	; Bank 0
	MOVFW N12
	BSF STATUS,RP1	; Bank 2
	MOVWF S24
	GOTO LABEL_MX9_END

LABEL_MX9_CHECKCONTROL4
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX9_CHECKCONTROL5

	BCF STATUS,RP1	; Bank 0
	MOVFW N13
	BSF STATUS,RP1	; Bank 2
	MOVWF S24
	GOTO LABEL_MX9_END

LABEL_MX9_CHECKCONTROL5
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX9_CHECKCONTROL6

	BCF STATUS,RP1	; Bank 0
	MOVFW N14
	BSF STATUS,RP1	; Bank 2
	MOVWF S24
	GOTO LABEL_MX9_END

LABEL_MX9_CHECKCONTROL6
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX9_CHECKCONTROL7

	BCF STATUS,RP1	; Bank 0
	MOVFW N15
	BSF STATUS,RP1	; Bank 2
	MOVWF S24
	GOTO LABEL_MX9_END

LABEL_MX9_CHECKCONTROL7
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX9_CHECKCONTROL8

	BCF STATUS,RP1	; Bank 0
	MOVFW N16
	BSF STATUS,RP1	; Bank 2
	MOVWF S24
	GOTO LABEL_MX9_END

LABEL_MX9_CHECKCONTROL8

LABEL_MX9_END

;***************************************************
; Multiplexer -> MX10
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	BTFSS STATUS,ZERO
	GOTO LABEL_MX10_CHECKCONTROL1

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW S16
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVWF S25
	GOTO LABEL_MX10_END

LABEL_MX10_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX10_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW N20
	BSF STATUS,RP1	; Bank 2
	MOVWF S25
	GOTO LABEL_MX10_END

LABEL_MX10_CHECKCONTROL2
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX10_CHECKCONTROL3

	BCF STATUS,RP1	; Bank 0
	MOVFW N21
	BSF STATUS,RP1	; Bank 2
	MOVWF S25
	GOTO LABEL_MX10_END

LABEL_MX10_CHECKCONTROL3
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX10_CHECKCONTROL4

	BCF STATUS,RP1	; Bank 0
	MOVFW N22
	BSF STATUS,RP1	; Bank 2
	MOVWF S25
	GOTO LABEL_MX10_END

LABEL_MX10_CHECKCONTROL4
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX10_CHECKCONTROL5

	BCF STATUS,RP1	; Bank 0
	MOVFW N23
	BSF STATUS,RP1	; Bank 2
	MOVWF S25
	GOTO LABEL_MX10_END

LABEL_MX10_CHECKCONTROL5
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX10_CHECKCONTROL6

	BCF STATUS,RP1	; Bank 0
	MOVFW N24
	BSF STATUS,RP1	; Bank 2
	MOVWF S25
	GOTO LABEL_MX10_END

LABEL_MX10_CHECKCONTROL6
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX10_CHECKCONTROL7

	BCF STATUS,RP1	; Bank 0
	MOVFW N25
	BSF STATUS,RP1	; Bank 2
	MOVWF S25
	GOTO LABEL_MX10_END

LABEL_MX10_CHECKCONTROL7
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX10_CHECKCONTROL8

	BCF STATUS,RP1	; Bank 0
	MOVFW N26
	BSF STATUS,RP1	; Bank 2
	MOVWF S25
	GOTO LABEL_MX10_END

LABEL_MX10_CHECKCONTROL8

LABEL_MX10_END

;***************************************************
; Multiplexer -> MX11
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	BTFSS STATUS,ZERO
	GOTO LABEL_MX11_CHECKCONTROL1

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW S15
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVWF S26
	GOTO LABEL_MX11_END

LABEL_MX11_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX11_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW N30
	BSF STATUS,RP1	; Bank 2
	MOVWF S26
	GOTO LABEL_MX11_END

LABEL_MX11_CHECKCONTROL2
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX11_CHECKCONTROL3

	BCF STATUS,RP1	; Bank 0
	MOVFW N31
	BSF STATUS,RP1	; Bank 2
	MOVWF S26
	GOTO LABEL_MX11_END

LABEL_MX11_CHECKCONTROL3
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX11_CHECKCONTROL4

	BCF STATUS,RP1	; Bank 0
	MOVFW N32
	BSF STATUS,RP1	; Bank 2
	MOVWF S26
	GOTO LABEL_MX11_END

LABEL_MX11_CHECKCONTROL4
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX11_CHECKCONTROL5

	BCF STATUS,RP1	; Bank 0
	MOVFW N33
	BSF STATUS,RP1	; Bank 2
	MOVWF S26
	GOTO LABEL_MX11_END

LABEL_MX11_CHECKCONTROL5
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX11_CHECKCONTROL6

	BCF STATUS,RP1	; Bank 0
	MOVFW N34
	BSF STATUS,RP1	; Bank 2
	MOVWF S26
	GOTO LABEL_MX11_END

LABEL_MX11_CHECKCONTROL6
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX11_CHECKCONTROL7

	BCF STATUS,RP1	; Bank 0
	MOVFW N35
	BSF STATUS,RP1	; Bank 2
	MOVWF S26
	GOTO LABEL_MX11_END

LABEL_MX11_CHECKCONTROL7
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX11_CHECKCONTROL8

	BCF STATUS,RP1	; Bank 0
	MOVFW N36
	BSF STATUS,RP1	; Bank 2
	MOVWF S26
	GOTO LABEL_MX11_END

LABEL_MX11_CHECKCONTROL8

LABEL_MX11_END

;***************************************************
; Multiplexer -> MX12
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S20
	BTFSS STATUS,ZERO
	GOTO LABEL_MX12_CHECKCONTROL1

	BSF STATUS,RP0	; Bank 3
	MOVFW S36
	BCF STATUS,RP0	; Bank 2
	MOVWF S19
	GOTO LABEL_MX12_END

LABEL_MX12_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S20
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX12_CHECKCONTROL2

	MOVFW ZV13
	MOVWF S19
	GOTO LABEL_MX12_END

LABEL_MX12_CHECKCONTROL2

LABEL_MX12_END

;***************************************************
; Verteiler -> BV3
;***************************************************

	MOVLW 0 
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSC S55,6	; IN0
	IORLW 1
	BSF STATUS,RP1	; Bank 2
	MOVWF S20	; OUT

;***************************************************
; Multiplexer -> MX13
;***************************************************

	CLRF SYS_TMP1
	MOVFW S28
	BTFSS STATUS,ZERO
	GOTO LABEL_MX13_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW N10
	MOVWF N10
	GOTO LABEL_MX13_END

LABEL_MX13_CHECKCONTROL1
	INCF SYS_TMP1,F
	MOVFW S28
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX13_CHECKCONTROL2

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW S0
	BCF STATUS,RP0	; Bank 0
	MOVWF N10
	GOTO LABEL_MX13_END

LABEL_MX13_CHECKCONTROL2

LABEL_MX13_END

;***************************************************
; Multiplexer -> MX14
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S28
	BTFSS STATUS,ZERO
	GOTO LABEL_MX14_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW N20
	MOVWF N20
	GOTO LABEL_MX14_END

LABEL_MX14_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S28
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX14_CHECKCONTROL2

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW S1
	BCF STATUS,RP0	; Bank 0
	MOVWF N20
	GOTO LABEL_MX14_END

LABEL_MX14_CHECKCONTROL2

LABEL_MX14_END

;***************************************************
; Multiplexer -> MX15
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S28
	BTFSS STATUS,ZERO
	GOTO LABEL_MX15_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW N30
	MOVWF N30
	GOTO LABEL_MX15_END

LABEL_MX15_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S28
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX15_CHECKCONTROL2

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW S2
	BCF STATUS,RP0	; Bank 0
	MOVWF N30
	GOTO LABEL_MX15_END

LABEL_MX15_CHECKCONTROL2

LABEL_MX15_END

;***************************************************
; Verteiler -> BV4
;***************************************************

	MOVLW 0 
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S63,1	; IN0
	IORLW 1
	MOVWF S28	; OUT

;***************************************************
; Verteiler -> BV5
;***************************************************

	MOVLW 0 
	BTFSC S61,6	; IN0
	IORLW 1
	MOVWF S27	; OUT

;***************************************************
; UND - Gatter -> LG27
;***************************************************

LABEL_LG27_1
	BTFSS S62,1
	GOTO LABEL_LG27_FALSE

LABEL_LG27_TRUE
	BCF STATUS,RP1	; Bank 0
	BSF M0,2
	GOTO LABEL_LG27_ENDE
LABEL_LG27_FALSE
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF M0,2
LABEL_LG27_ENDE
;***************************************************
; UND - Gatter -> LG28
;***************************************************

LABEL_LG28_1
	BSF STATUS,RP1	; Bank 2
	BTFSS S62,2
	GOTO LABEL_LG28_FALSE

LABEL_LG28_TRUE
	BCF STATUS,RP1	; Bank 0
	BSF M0,3
	GOTO LABEL_LG28_ENDE
LABEL_LG28_FALSE
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF M0,3
LABEL_LG28_ENDE
;***************************************************
; UND - Gatter -> LG29
;***************************************************

LABEL_LG29_1
	BTFSS S55,7
	GOTO LABEL_LG29_FALSE
LABEL_LG29_2
	BSF STATUS,RP1	; Bank 2
	BTFSS S63,4
	GOTO LABEL_LG29_FALSE

LABEL_LG29_TRUE
	BSF S62,1
	GOTO LABEL_LG29_ENDE
LABEL_LG29_FALSE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S62,1
LABEL_LG29_ENDE
;***************************************************
; UND - Gatter -> LG30
;***************************************************

LABEL_LG30_1
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,7
	GOTO LABEL_LG30_FALSE
LABEL_LG30_2
	BSF STATUS,RP1	; Bank 2
	BTFSS S62,0
	GOTO LABEL_LG30_FALSE

LABEL_LG30_TRUE
	BSF S62,2
	GOTO LABEL_LG30_ENDE
LABEL_LG30_FALSE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S62,2
LABEL_LG30_ENDE
;***************************************************
; UND - Gatter -> LG31
;***************************************************

LABEL_LG31_1
	BTFSS S62,3
	GOTO LABEL_LG31_FALSE
LABEL_LG31_2
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,7
	GOTO LABEL_LG31_FALSE

LABEL_LG31_TRUE
	BSF STATUS,RP1	; Bank 2
	BSF S61,5
	GOTO LABEL_LG31_ENDE
LABEL_LG31_FALSE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S61,5
LABEL_LG31_ENDE
;***************************************************
; UND - Gatter -> LG32
;***************************************************

LABEL_LG32_1
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,7
	GOTO LABEL_LG32_FALSE
LABEL_LG32_2
	BSF STATUS,RP1	; Bank 2
	BTFSS S62,4
	GOTO LABEL_LG32_FALSE

LABEL_LG32_TRUE
	BSF S61,6
	GOTO LABEL_LG32_ENDE
LABEL_LG32_FALSE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S61,6
LABEL_LG32_ENDE
;***************************************************
; Multiplexer -> MX16
;***************************************************

	CLRF SYS_TMP1
	MOVFW S29
	BTFSS STATUS,ZERO
	GOTO LABEL_MX16_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW N11
	MOVWF N11
	GOTO LABEL_MX16_END

LABEL_MX16_CHECKCONTROL1
	INCF SYS_TMP1,F
	MOVFW S29
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX16_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW N10
	MOVWF N11
	GOTO LABEL_MX16_END

LABEL_MX16_CHECKCONTROL2

LABEL_MX16_END

;***************************************************
; Multiplexer -> MX17
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S29
	BTFSS STATUS,ZERO
	GOTO LABEL_MX17_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW N21
	MOVWF N21
	GOTO LABEL_MX17_END

LABEL_MX17_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S29
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX17_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW N20
	MOVWF N21
	GOTO LABEL_MX17_END

LABEL_MX17_CHECKCONTROL2

LABEL_MX17_END

;***************************************************
; Multiplexer -> MX18
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S29
	BTFSS STATUS,ZERO
	GOTO LABEL_MX18_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW N31
	MOVWF N31
	GOTO LABEL_MX18_END

LABEL_MX18_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S29
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX18_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW N30
	MOVWF N31
	GOTO LABEL_MX18_END

LABEL_MX18_CHECKCONTROL2

LABEL_MX18_END

;***************************************************
; Multiplexer -> MX19
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S30
	BTFSS STATUS,ZERO
	GOTO LABEL_MX19_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW N12
	MOVWF N12
	GOTO LABEL_MX19_END

LABEL_MX19_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S30
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX19_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW N11
	MOVWF N12
	GOTO LABEL_MX19_END

LABEL_MX19_CHECKCONTROL2

LABEL_MX19_END

;***************************************************
; Multiplexer -> MX20
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S30
	BTFSS STATUS,ZERO
	GOTO LABEL_MX20_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW N22
	MOVWF N22
	GOTO LABEL_MX20_END

LABEL_MX20_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S30
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX20_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW N21
	MOVWF N22
	GOTO LABEL_MX20_END

LABEL_MX20_CHECKCONTROL2

LABEL_MX20_END

;***************************************************
; Multiplexer -> MX21
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S30
	BTFSS STATUS,ZERO
	GOTO LABEL_MX21_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW N32
	MOVWF N32
	GOTO LABEL_MX21_END

LABEL_MX21_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S30
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX21_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW N31
	MOVWF N32
	GOTO LABEL_MX21_END

LABEL_MX21_CHECKCONTROL2

LABEL_MX21_END

;***************************************************
; Multiplexer -> MX22
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S31
	BTFSS STATUS,ZERO
	GOTO LABEL_MX22_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW N13
	MOVWF N13
	GOTO LABEL_MX22_END

LABEL_MX22_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S31
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX22_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW N12
	MOVWF N13
	GOTO LABEL_MX22_END

LABEL_MX22_CHECKCONTROL2

LABEL_MX22_END

;***************************************************
; Multiplexer -> MX23
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S31
	BTFSS STATUS,ZERO
	GOTO LABEL_MX23_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW N23
	MOVWF N23
	GOTO LABEL_MX23_END

LABEL_MX23_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S31
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX23_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW N22
	MOVWF N23
	GOTO LABEL_MX23_END

LABEL_MX23_CHECKCONTROL2

LABEL_MX23_END

;***************************************************
; Multiplexer -> MX24
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S31
	BTFSS STATUS,ZERO
	GOTO LABEL_MX24_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW N33
	MOVWF N33
	GOTO LABEL_MX24_END

LABEL_MX24_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S31
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX24_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW N32
	MOVWF N33
	GOTO LABEL_MX24_END

LABEL_MX24_CHECKCONTROL2

LABEL_MX24_END

;***************************************************
; Verteiler -> BV6
;***************************************************

	MOVLW 0 
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S62,5	; IN0
	IORLW 1
	MOVWF S29	; OUT

;***************************************************
; Verteiler -> BV7
;***************************************************

	MOVLW 0 
	BTFSC S62,6	; IN0
	IORLW 1
	MOVWF S30	; OUT

;***************************************************
; Verteiler -> BV8
;***************************************************

	MOVLW 0 
	BTFSC S62,7	; IN0
	IORLW 1
	MOVWF S31	; OUT

;***************************************************
; Multiplexer -> MX25
;***************************************************

	CLRF SYS_TMP1
	MOVFW S29
	BTFSS STATUS,ZERO
	GOTO LABEL_MX25_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW HE1
	MOVWF HE1
	GOTO LABEL_MX25_END

LABEL_MX25_CHECKCONTROL1
	INCF SYS_TMP1,F
	MOVFW S29
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX25_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW HE0
	MOVWF HE1
	GOTO LABEL_MX25_END

LABEL_MX25_CHECKCONTROL2

LABEL_MX25_END

;***************************************************
; Multiplexer -> MX26
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S30
	BTFSS STATUS,ZERO
	GOTO LABEL_MX26_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW HE2
	MOVWF HE2
	GOTO LABEL_MX26_END

LABEL_MX26_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S30
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX26_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW HE1
	MOVWF HE2
	GOTO LABEL_MX26_END

LABEL_MX26_CHECKCONTROL2

LABEL_MX26_END

;***************************************************
; Multiplexer -> MX27
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S31
	BTFSS STATUS,ZERO
	GOTO LABEL_MX27_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW HE3
	MOVWF HE3
	GOTO LABEL_MX27_END

LABEL_MX27_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S31
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX27_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW HE2
	MOVWF HE3
	GOTO LABEL_MX27_END

LABEL_MX27_CHECKCONTROL2

LABEL_MX27_END

;***************************************************
; ODER - Gatter -> LG33
;***************************************************

LABEL_LG33_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S63,0
	GOTO LABEL_LG33_TRUE
LABEL_LG33_2
	BTFSC S61,5
	GOTO LABEL_LG33_TRUE

LABEL_LG33_FALSE
	BCF S63,1
	GOTO LABEL_LG33_ENDE
LABEL_LG33_TRUE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BSF S63,1
LABEL_LG33_ENDE
;***************************************************
; ODER - Gatter -> LG34
;***************************************************

LABEL_LG34_1
	BTFSC S75,3
	GOTO LABEL_LG34_TRUE
LABEL_LG34_2
	BTFSC S61,7
	GOTO LABEL_LG34_TRUE

LABEL_LG34_FALSE
	BCF S63,4
	GOTO LABEL_LG34_ENDE
LABEL_LG34_TRUE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BSF S63,4
LABEL_LG34_ENDE
;***************************************************
; One Shot -> OS10
;***************************************************


	BTFSC S63,0
	GOTO LABEL_OS10_1
	BTFSC OS10_FD,0
	GOTO LABEL_OS10_1
	BSF OS10_FD,0
	BSF S63,3
	GOTO LABEL_OS10_2
LABEL_OS10_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S63,3
	BTFSS S63,0
	GOTO LABEL_OS10_2
	BCF OS10_FD,0
LABEL_OS10_2
;***************************************************
; Multiplexer -> MX28
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S29
	BTFSS STATUS,ZERO
	GOTO LABEL_MX28_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW MU1
	MOVWF MU1
	GOTO LABEL_MX28_END

LABEL_MX28_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S29
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX28_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW MU0
	MOVWF MU1
	GOTO LABEL_MX28_END

LABEL_MX28_CHECKCONTROL2

LABEL_MX28_END

;***************************************************
; Multiplexer -> MX29
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S30
	BTFSS STATUS,ZERO
	GOTO LABEL_MX29_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW MU2
	MOVWF MU2
	GOTO LABEL_MX29_END

LABEL_MX29_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S30
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX29_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW MU1
	MOVWF MU2
	GOTO LABEL_MX29_END

LABEL_MX29_CHECKCONTROL2

LABEL_MX29_END

;***************************************************
; Multiplexer -> MX30
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S31
	BTFSS STATUS,ZERO
	GOTO LABEL_MX30_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW MU3
	MOVWF MU3
	GOTO LABEL_MX30_END

LABEL_MX30_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S31
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX30_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW MU2
	MOVWF MU3
	GOTO LABEL_MX30_END

LABEL_MX30_CHECKCONTROL2

LABEL_MX30_END

;***************************************************
; Multiplexer -> MX31
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S28
	BTFSS STATUS,ZERO
	GOTO LABEL_MX31_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW HE0
	MOVWF HE0
	GOTO LABEL_MX31_END

LABEL_MX31_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S28
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX31_CHECKCONTROL2

	BSF STATUS,RP0	; Bank 3
	MOVFW S36
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	MOVWF HE0
	GOTO LABEL_MX31_END

LABEL_MX31_CHECKCONTROL2

LABEL_MX31_END

;***************************************************
; Multiplexer -> MX32
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S28
	BTFSS STATUS,ZERO
	GOTO LABEL_MX32_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW MU0
	MOVWF MU0
	GOTO LABEL_MX32_END

LABEL_MX32_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S28
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX32_CHECKCONTROL2

	BSF STATUS,RP0	; Bank 3
	MOVFW S32
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	MOVWF MU0
	GOTO LABEL_MX32_END

LABEL_MX32_CHECKCONTROL2

LABEL_MX32_END

;***************************************************
; ODER - Gatter -> LG35
;***************************************************

LABEL_LG35_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S63,7
	GOTO LABEL_LG35_TRUE
LABEL_LG35_2
	BTFSC S63,5
	GOTO LABEL_LG35_TRUE

LABEL_LG35_FALSE
	BCF S62,4
	GOTO LABEL_LG35_ENDE
LABEL_LG35_TRUE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BSF S62,4
LABEL_LG35_ENDE
;***************************************************
; One Shot -> OS11
;***************************************************


	BTFSS S63,6
	GOTO LABEL_OS11_1
	BTFSC OS11_FD,0
	GOTO LABEL_OS11_1
	BSF OS11_FD,0
	BSF S63,7
	GOTO LABEL_OS11_2
LABEL_OS11_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S63,7
	BTFSC S63,6
	GOTO LABEL_OS11_2
	BCF OS11_FD,0
LABEL_OS11_2
;***************************************************
; ODER - Gatter -> LG36
;***************************************************

LABEL_LG36_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S64,0
	GOTO LABEL_LG36_TRUE
LABEL_LG36_2
	BTFSC S64,1
	GOTO LABEL_LG36_TRUE

LABEL_LG36_FALSE
	BCF S63,2
	GOTO LABEL_LG36_ENDE
LABEL_LG36_TRUE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BSF S63,2
LABEL_LG36_ENDE
;***************************************************
; UND - Gatter -> LG37
;***************************************************

LABEL_LG37_1
	BTFSS S75,7
	GOTO LABEL_LG37_FALSE
LABEL_LG37_2
	BTFSS S64,2
	GOTO LABEL_LG37_FALSE

LABEL_LG37_TRUE
	BSF S64,0
	GOTO LABEL_LG37_ENDE
LABEL_LG37_FALSE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S64,0
LABEL_LG37_ENDE
;***************************************************
; One Shot -> OS12
;***************************************************


	BTFSC S62,0
	GOTO LABEL_OS12_1
	BTFSC OS12_FD,0
	GOTO LABEL_OS12_1
	BSF OS12_FD,0
	BSF S75,5
	GOTO LABEL_OS12_2
LABEL_OS12_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S75,5
	BTFSS S62,0
	GOTO LABEL_OS12_2
	BCF OS12_FD,0
LABEL_OS12_2
;***************************************************
; RS-FLIP-FLOP -> RS4
;***************************************************

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S64,5
	GOTO LABEL_RS4_RESET
	BTFSS S75,7
	GOTO LABEL_RS4_ENDE
	BSF S64,3	; Ausgang setzen
	GOTO LABEL_RS4_ENDE
LABEL_RS4_RESET
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S64,3	; Ausgang zurücksetzen
LABEL_RS4_ENDE

;***************************************************
; Anzug-Verzögerung -> MF3
;***************************************************

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S64,3	; Eingang auf High ?
	GOTO LABEL_MF3_CHKTIME	; Ja

; RESET

	CLRF MF3
	CLRF MF3_HI
	BCF S64,4
	GOTO LABEL_MF3_EXIT	; raus

LABEL_MF3_CHKTIME

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S64,4	; Ausgang schon auf High ?
	GOTO LABEL_MF3_EXIT	; Ja

	MOVLW 0
	SUBWF MF3_HI,W
	BTFSS STATUS,CARRY
	GOTO LABEL_MF3_EXIT

	MOVLW 117
	SUBWF MF3,W
	BTFSS STATUS,CARRY
	GOTO LABEL_MF3_EXIT

	BSF S64,4
LABEL_MF3_EXIT

;***************************************************
; One Shot -> OS13
;***************************************************


	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS S64,4
	GOTO LABEL_OS13_1
	BTFSC OS13_FD,0
	GOTO LABEL_OS13_1
	BSF OS13_FD,0
	BSF S63,5
	GOTO LABEL_OS13_2
LABEL_OS13_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S63,5
	BTFSC S64,4
	GOTO LABEL_OS13_2
	BCF OS13_FD,0
LABEL_OS13_2
;***************************************************
; One Shot -> OS14
;***************************************************


	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S63,5
	GOTO LABEL_OS14_1
	BTFSC OS14_FD,0
	GOTO LABEL_OS14_1
	BSF OS14_FD,0
	BSF S64,5
	GOTO LABEL_OS14_2
LABEL_OS14_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S64,5
	BTFSS S63,5
	GOTO LABEL_OS14_2
	BCF OS14_FD,0
LABEL_OS14_2
;***************************************************
; Multiplexer -> MX33
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S33
	BTFSS STATUS,ZERO
	GOTO LABEL_MX33_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW N14
	MOVWF N14
	GOTO LABEL_MX33_END

LABEL_MX33_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S33
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX33_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW N13
	MOVWF N14
	GOTO LABEL_MX33_END

LABEL_MX33_CHECKCONTROL2

LABEL_MX33_END

;***************************************************
; Multiplexer -> MX34
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S34
	BTFSS STATUS,ZERO
	GOTO LABEL_MX34_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW N15
	MOVWF N15
	GOTO LABEL_MX34_END

LABEL_MX34_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S34
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX34_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW N14
	MOVWF N15
	GOTO LABEL_MX34_END

LABEL_MX34_CHECKCONTROL2

LABEL_MX34_END

;***************************************************
; Multiplexer -> MX35
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S35
	BTFSS STATUS,ZERO
	GOTO LABEL_MX35_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW N16
	MOVWF N16
	GOTO LABEL_MX35_END

LABEL_MX35_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S35
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX35_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW N15
	MOVWF N16
	GOTO LABEL_MX35_END

LABEL_MX35_CHECKCONTROL2

LABEL_MX35_END

;***************************************************
; Multiplexer -> MX36
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S27
	BTFSS STATUS,ZERO
	GOTO LABEL_MX36_CHECKCONTROL1

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW ZV6
	MOVWF ZV6
	GOTO LABEL_MX36_END

LABEL_MX36_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S27
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX36_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW U0
	BSF STATUS,RP0	; Bank 1
	MOVWF ZV6
	GOTO LABEL_MX36_END

LABEL_MX36_CHECKCONTROL2

LABEL_MX36_END

;***************************************************
; Multiplexer -> MX37
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S28
	BTFSS STATUS,ZERO
	GOTO LABEL_MX37_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW U0
	MOVWF U0
	GOTO LABEL_MX37_END

LABEL_MX37_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S28
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX37_CHECKCONTROL2

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW ZV6
	BCF STATUS,RP0	; Bank 0
	MOVWF U0
	GOTO LABEL_MX37_END

LABEL_MX37_CHECKCONTROL2

LABEL_MX37_END

;***************************************************
; Multiplexer -> MX38
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S33
	BTFSS STATUS,ZERO
	GOTO LABEL_MX38_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW N24
	MOVWF N24
	GOTO LABEL_MX38_END

LABEL_MX38_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S33
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX38_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW N23
	MOVWF N24
	GOTO LABEL_MX38_END

LABEL_MX38_CHECKCONTROL2

LABEL_MX38_END

;***************************************************
; Multiplexer -> MX39
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S34
	BTFSS STATUS,ZERO
	GOTO LABEL_MX39_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW N25
	MOVWF N25
	GOTO LABEL_MX39_END

LABEL_MX39_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S34
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX39_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW N24
	MOVWF N25
	GOTO LABEL_MX39_END

LABEL_MX39_CHECKCONTROL2

LABEL_MX39_END

;***************************************************
; Multiplexer -> MX40
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S35
	BTFSS STATUS,ZERO
	GOTO LABEL_MX40_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW N26
	MOVWF N26
	GOTO LABEL_MX40_END

LABEL_MX40_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S35
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX40_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW N25
	MOVWF N26
	GOTO LABEL_MX40_END

LABEL_MX40_CHECKCONTROL2

LABEL_MX40_END

;***************************************************
; Multiplexer -> MX41
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S27
	BTFSS STATUS,ZERO
	GOTO LABEL_MX41_CHECKCONTROL1

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW ZV1
	MOVWF ZV1
	MOVFW ZV1_HI
	MOVWF ZV1_HI
	GOTO LABEL_MX41_END

LABEL_MX41_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S27
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX41_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW ZX1
	BSF STATUS,RP0	; Bank 1
	MOVWF ZV1
	BCF STATUS,RP0	; Bank 0
	MOVFW ZX1_HI
	BSF STATUS,RP0	; Bank 1
	MOVWF ZV1_HI
	GOTO LABEL_MX41_END

LABEL_MX41_CHECKCONTROL2

LABEL_MX41_END

;***************************************************
; Multiplexer -> MX42
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S28
	BTFSS STATUS,ZERO
	GOTO LABEL_MX42_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW ZX1
	MOVWF ZX1
	MOVFW ZX1_HI
	MOVWF ZX1_HI
	GOTO LABEL_MX42_END

LABEL_MX42_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S28
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX42_CHECKCONTROL2

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW ZV1
	BCF STATUS,RP0	; Bank 0
	MOVWF ZX1
	BSF STATUS,RP0	; Bank 1
	MOVFW ZV1_HI
	BCF STATUS,RP0	; Bank 0
	MOVWF ZX1_HI
	GOTO LABEL_MX42_END

LABEL_MX42_CHECKCONTROL2

LABEL_MX42_END

;***************************************************
; Multiplexer -> MX43
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S33
	BTFSS STATUS,ZERO
	GOTO LABEL_MX43_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW N34
	MOVWF N34
	GOTO LABEL_MX43_END

LABEL_MX43_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S33
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX43_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW N33
	MOVWF N34
	GOTO LABEL_MX43_END

LABEL_MX43_CHECKCONTROL2

LABEL_MX43_END

;***************************************************
; Multiplexer -> MX44
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S34
	BTFSS STATUS,ZERO
	GOTO LABEL_MX44_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW N35
	MOVWF N35
	GOTO LABEL_MX44_END

LABEL_MX44_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S34
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX44_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW N34
	MOVWF N35
	GOTO LABEL_MX44_END

LABEL_MX44_CHECKCONTROL2

LABEL_MX44_END

;***************************************************
; Multiplexer -> MX45
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S35
	BTFSS STATUS,ZERO
	GOTO LABEL_MX45_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW N36
	MOVWF N36
	GOTO LABEL_MX45_END

LABEL_MX45_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S35
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX45_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW N35
	MOVWF N36
	GOTO LABEL_MX45_END

LABEL_MX45_CHECKCONTROL2

LABEL_MX45_END

;***************************************************
; Multiplexer -> MX46
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S27
	BTFSS STATUS,ZERO
	GOTO LABEL_MX46_CHECKCONTROL1

	MOVFW T0
	MOVWF T0
	MOVFW T0_HI
	MOVWF T0_HI
	GOTO LABEL_MX46_END

LABEL_MX46_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S27
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX46_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW ZX2
	BSF STATUS,RP1	; Bank 2
	MOVWF T0
	BCF STATUS,RP1	; Bank 0
	MOVFW ZX2_HI
	BSF STATUS,RP1	; Bank 2
	MOVWF T0_HI
	GOTO LABEL_MX46_END

LABEL_MX46_CHECKCONTROL2

LABEL_MX46_END

;***************************************************
; Multiplexer -> MX47
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S28
	BTFSS STATUS,ZERO
	GOTO LABEL_MX47_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW ZX2
	MOVWF ZX2
	MOVFW ZX2_HI
	MOVWF ZX2_HI
	GOTO LABEL_MX47_END

LABEL_MX47_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S28
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX47_CHECKCONTROL2

	MOVFW T0
	BCF STATUS,RP1	; Bank 0
	MOVWF ZX2
	BSF STATUS,RP1	; Bank 2
	MOVFW T0_HI
	BCF STATUS,RP1	; Bank 0
	MOVWF ZX2_HI
	GOTO LABEL_MX47_END

LABEL_MX47_CHECKCONTROL2

LABEL_MX47_END

;***************************************************
; Multiplexer -> MX48
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S33
	BTFSS STATUS,ZERO
	GOTO LABEL_MX48_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW HE4
	MOVWF HE4
	GOTO LABEL_MX48_END

LABEL_MX48_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S33
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX48_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW HE3
	MOVWF HE4
	GOTO LABEL_MX48_END

LABEL_MX48_CHECKCONTROL2

LABEL_MX48_END

;***************************************************
; Multiplexer -> MX49
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S34
	BTFSS STATUS,ZERO
	GOTO LABEL_MX49_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW HE5
	MOVWF HE5
	GOTO LABEL_MX49_END

LABEL_MX49_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S34
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX49_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW HE4
	MOVWF HE5
	GOTO LABEL_MX49_END

LABEL_MX49_CHECKCONTROL2

LABEL_MX49_END

;***************************************************
; Multiplexer -> MX50
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S35
	BTFSS STATUS,ZERO
	GOTO LABEL_MX50_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW HE6
	MOVWF HE6
	GOTO LABEL_MX50_END

LABEL_MX50_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S35
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX50_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW HE5
	MOVWF HE6
	GOTO LABEL_MX50_END

LABEL_MX50_CHECKCONTROL2

LABEL_MX50_END

;***************************************************
; Multiplexer -> MX51
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S27
	BTFSS STATUS,ZERO
	GOTO LABEL_MX51_CHECKCONTROL1

	MOVFW T1
	MOVWF T1
	MOVFW T1_HI
	MOVWF T1_HI
	GOTO LABEL_MX51_END

LABEL_MX51_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S27
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX51_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW ZX3
	BSF STATUS,RP1	; Bank 2
	MOVWF T1
	BCF STATUS,RP1	; Bank 0
	MOVFW ZX3_HI
	BSF STATUS,RP1	; Bank 2
	MOVWF T1_HI
	GOTO LABEL_MX51_END

LABEL_MX51_CHECKCONTROL2

LABEL_MX51_END

;***************************************************
; Multiplexer -> MX52
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S28
	BTFSS STATUS,ZERO
	GOTO LABEL_MX52_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW ZX3
	MOVWF ZX3
	MOVFW ZX3_HI
	MOVWF ZX3_HI
	GOTO LABEL_MX52_END

LABEL_MX52_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S28
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX52_CHECKCONTROL2

	MOVFW T1
	BCF STATUS,RP1	; Bank 0
	MOVWF ZX3
	BSF STATUS,RP1	; Bank 2
	MOVFW T1_HI
	BCF STATUS,RP1	; Bank 0
	MOVWF ZX3_HI
	GOTO LABEL_MX52_END

LABEL_MX52_CHECKCONTROL2

LABEL_MX52_END

;***************************************************
; Multiplexer -> MX53
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S33
	BTFSS STATUS,ZERO
	GOTO LABEL_MX53_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW MU4
	MOVWF MU4
	GOTO LABEL_MX53_END

LABEL_MX53_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S33
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX53_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW MU3
	MOVWF MU4
	GOTO LABEL_MX53_END

LABEL_MX53_CHECKCONTROL2

LABEL_MX53_END

;***************************************************
; Multiplexer -> MX54
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S34
	BTFSS STATUS,ZERO
	GOTO LABEL_MX54_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW MU5
	MOVWF MU5
	GOTO LABEL_MX54_END

LABEL_MX54_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S34
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX54_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW MU4
	MOVWF MU5
	GOTO LABEL_MX54_END

LABEL_MX54_CHECKCONTROL2

LABEL_MX54_END

;***************************************************
; Multiplexer -> MX55
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S35
	BTFSS STATUS,ZERO
	GOTO LABEL_MX55_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW MU6
	MOVWF MU6
	GOTO LABEL_MX55_END

LABEL_MX55_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S35
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX55_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW MU5
	MOVWF MU6
	GOTO LABEL_MX55_END

LABEL_MX55_CHECKCONTROL2

LABEL_MX55_END

;***************************************************
; Multiplexer -> MX56
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S27
	BTFSS STATUS,ZERO
	GOTO LABEL_MX56_CHECKCONTROL1

	MOVFW T2
	MOVWF T2
	MOVFW T2_HI
	MOVWF T2_HI
	GOTO LABEL_MX56_END

LABEL_MX56_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S27
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX56_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW ZX4
	BSF STATUS,RP1	; Bank 2
	MOVWF T2
	BCF STATUS,RP1	; Bank 0
	MOVFW ZX4_HI
	BSF STATUS,RP1	; Bank 2
	MOVWF T2_HI
	GOTO LABEL_MX56_END

LABEL_MX56_CHECKCONTROL2

LABEL_MX56_END

;***************************************************
; Multiplexer -> MX57
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S28
	BTFSS STATUS,ZERO
	GOTO LABEL_MX57_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW ZX4
	MOVWF ZX4
	MOVFW ZX4_HI
	MOVWF ZX4_HI
	GOTO LABEL_MX57_END

LABEL_MX57_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S28
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX57_CHECKCONTROL2

	MOVFW T2
	BCF STATUS,RP1	; Bank 0
	MOVWF ZX4
	BSF STATUS,RP1	; Bank 2
	MOVFW T2_HI
	BCF STATUS,RP1	; Bank 0
	MOVWF ZX4_HI
	GOTO LABEL_MX57_END

LABEL_MX57_CHECKCONTROL2

LABEL_MX57_END

;***************************************************
; Verteiler -> BV9
;***************************************************

	MOVLW 0 
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S65,1	; IN0
	IORLW 1
	MOVWF S33	; OUT

;***************************************************
; Verteiler -> BV10
;***************************************************

	MOVLW 0 
	BTFSC S64,7	; IN0
	IORLW 1
	MOVWF S34	; OUT

;***************************************************
; Verteiler -> BV11
;***************************************************

	MOVLW 0 
	BTFSC S63,2	; IN0
	IORLW 1
	MOVWF S35	; OUT

;***************************************************
; One Shot -> OS15
;***************************************************


	BTFSC S63,2
	GOTO LABEL_OS15_1
	BTFSC OS15_FD,0
	GOTO LABEL_OS15_1
	BSF OS15_FD,0
	BSF S64,6
	GOTO LABEL_OS15_2
LABEL_OS15_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S64,6
	BTFSS S63,2
	GOTO LABEL_OS15_2
	BCF OS15_FD,0
LABEL_OS15_2
;***************************************************
; One Shot -> OS16
;***************************************************


	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S64,6
	GOTO LABEL_OS16_1
	BTFSC OS16_FD,0
	GOTO LABEL_OS16_1
	BSF OS16_FD,0
	BSF S64,7
	GOTO LABEL_OS16_2
LABEL_OS16_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S64,7
	BTFSS S64,6
	GOTO LABEL_OS16_2
	BCF OS16_FD,0
LABEL_OS16_2
;***************************************************
; One Shot -> OS17
;***************************************************


	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S64,7
	GOTO LABEL_OS17_1
	BTFSC OS17_FD,0
	GOTO LABEL_OS17_1
	BSF OS17_FD,0
	BSF S65,0
	GOTO LABEL_OS17_2
LABEL_OS17_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S65,0
	BTFSS S64,7
	GOTO LABEL_OS17_2
	BCF OS17_FD,0
LABEL_OS17_2
;***************************************************
; One Shot -> OS18
;***************************************************


	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S65,0
	GOTO LABEL_OS18_1
	BTFSC OS18_FD,0
	GOTO LABEL_OS18_1
	BSF OS18_FD,0
	BSF S65,1
	GOTO LABEL_OS18_2
LABEL_OS18_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S65,1
	BTFSS S65,0
	GOTO LABEL_OS18_2
	BCF OS18_FD,0
LABEL_OS18_2
;***************************************************
; One Shot -> OS19
;***************************************************


	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S65,1
	GOTO LABEL_OS19_1
	BTFSC OS19_FD,0
	GOTO LABEL_OS19_1
	BSF OS19_FD,0
	BSF S65,2
	GOTO LABEL_OS19_2
LABEL_OS19_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S65,2
	BTFSS S65,1
	GOTO LABEL_OS19_2
	BCF OS19_FD,0
LABEL_OS19_2
;***************************************************
; One Shot -> OS20
;***************************************************


	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S65,2
	GOTO LABEL_OS20_1
	BTFSC OS20_FD,0
	GOTO LABEL_OS20_1
	BSF OS20_FD,0
	BSF S62,7
	GOTO LABEL_OS20_2
LABEL_OS20_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S62,7
	BTFSS S65,2
	GOTO LABEL_OS20_2
	BCF OS20_FD,0
LABEL_OS20_2
;***************************************************
; One Shot -> OS21
;***************************************************


	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S62,7
	GOTO LABEL_OS21_1
	BTFSC OS21_FD,0
	GOTO LABEL_OS21_1
	BSF OS21_FD,0
	BSF S65,3
	GOTO LABEL_OS21_2
LABEL_OS21_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S65,3
	BTFSS S62,7
	GOTO LABEL_OS21_2
	BCF OS21_FD,0
LABEL_OS21_2
;***************************************************
; One Shot -> OS22
;***************************************************


	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S65,3
	GOTO LABEL_OS22_1
	BTFSC OS22_FD,0
	GOTO LABEL_OS22_1
	BSF OS22_FD,0
	BSF S62,6
	GOTO LABEL_OS22_2
LABEL_OS22_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S62,6
	BTFSS S65,3
	GOTO LABEL_OS22_2
	BCF OS22_FD,0
LABEL_OS22_2
;***************************************************
; One Shot -> OS23
;***************************************************


	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S62,6
	GOTO LABEL_OS23_1
	BTFSC OS23_FD,0
	GOTO LABEL_OS23_1
	BSF OS23_FD,0
	BSF S65,4
	GOTO LABEL_OS23_2
LABEL_OS23_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S65,4
	BTFSS S62,6
	GOTO LABEL_OS23_2
	BCF OS23_FD,0
LABEL_OS23_2
;***************************************************
; One Shot -> OS24
;***************************************************


	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S65,4
	GOTO LABEL_OS24_1
	BTFSC OS24_FD,0
	GOTO LABEL_OS24_1
	BSF OS24_FD,0
	BSF S62,5
	GOTO LABEL_OS24_2
LABEL_OS24_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S62,5
	BTFSS S65,4
	GOTO LABEL_OS24_2
	BCF OS24_FD,0
LABEL_OS24_2
;***************************************************
; One Shot -> OS25
;***************************************************


	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S62,5
	GOTO LABEL_OS25_1
	BTFSC OS25_FD,0
	GOTO LABEL_OS25_1
	BSF OS25_FD,0
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BSF S56,1
	GOTO LABEL_OS25_2
LABEL_OS25_1
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF S56,1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS S62,5
	GOTO LABEL_OS25_2
	BCF OS25_FD,0
LABEL_OS25_2
;***************************************************
; One Shot -> OS26
;***************************************************


	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC S56,1
	GOTO LABEL_OS26_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC OS26_FD,0
	GOTO LABEL_OS26_1
	BSF OS26_FD,0
	BSF S63,0
	GOTO LABEL_OS26_2
LABEL_OS26_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S63,0
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSS S56,1
	GOTO LABEL_OS26_2
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF OS26_FD,0
LABEL_OS26_2
;***************************************************
; Multiplexer -> MX58
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S29
	BTFSS STATUS,ZERO
	GOTO LABEL_MX58_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW U1
	MOVWF U1
	GOTO LABEL_MX58_END

LABEL_MX58_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S29
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX58_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW U0
	MOVWF U1
	GOTO LABEL_MX58_END

LABEL_MX58_CHECKCONTROL2

LABEL_MX58_END

;***************************************************
; Multiplexer -> MX59
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S30
	BTFSS STATUS,ZERO
	GOTO LABEL_MX59_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW U2
	MOVWF U2
	GOTO LABEL_MX59_END

LABEL_MX59_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S30
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX59_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW U1
	MOVWF U2
	GOTO LABEL_MX59_END

LABEL_MX59_CHECKCONTROL2

LABEL_MX59_END

;***************************************************
; Multiplexer -> MX60
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S31
	BTFSS STATUS,ZERO
	GOTO LABEL_MX60_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW U3
	MOVWF U3
	GOTO LABEL_MX60_END

LABEL_MX60_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S31
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX60_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW U2
	MOVWF U3
	GOTO LABEL_MX60_END

LABEL_MX60_CHECKCONTROL2

LABEL_MX60_END

;***************************************************
; Multiplexer -> MX61
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S33
	BTFSS STATUS,ZERO
	GOTO LABEL_MX61_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW U4
	MOVWF U4
	GOTO LABEL_MX61_END

LABEL_MX61_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S33
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX61_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW U3
	MOVWF U4
	GOTO LABEL_MX61_END

LABEL_MX61_CHECKCONTROL2

LABEL_MX61_END

;***************************************************
; Multiplexer -> MX62
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S34
	BTFSS STATUS,ZERO
	GOTO LABEL_MX62_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW U5
	MOVWF U5
	GOTO LABEL_MX62_END

LABEL_MX62_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S34
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX62_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW U4
	MOVWF U5
	GOTO LABEL_MX62_END

LABEL_MX62_CHECKCONTROL2

LABEL_MX62_END

;***************************************************
; Multiplexer -> MX63
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S35
	BTFSS STATUS,ZERO
	GOTO LABEL_MX63_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW U6
	MOVWF U6
	GOTO LABEL_MX63_END

LABEL_MX63_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S35
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX63_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW U5
	MOVWF U6
	GOTO LABEL_MX63_END

LABEL_MX63_CHECKCONTROL2

LABEL_MX63_END

;***************************************************
; Multiplexer -> MX64
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S37
	BTFSS STATUS,ZERO
	GOTO LABEL_MX64_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW AMIN_Z
	MOVWF AMIN_Z
	GOTO LABEL_MX64_END

LABEL_MX64_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S37
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX64_CHECKCONTROL2

	MOVFW ZV9
	BCF STATUS,RP1	; Bank 0
	MOVWF AMIN_Z
	GOTO LABEL_MX64_END

LABEL_MX64_CHECKCONTROL2

LABEL_MX64_END

;***************************************************
; Multiplexer -> MX65
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S37
	BTFSS STATUS,ZERO
	GOTO LABEL_MX65_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW AMIN_E
	MOVWF AMIN_E
	GOTO LABEL_MX65_END

LABEL_MX65_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S37
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX65_CHECKCONTROL2

	MOVFW ZV10
	BCF STATUS,RP1	; Bank 0
	MOVWF AMIN_E
	GOTO LABEL_MX65_END

LABEL_MX65_CHECKCONTROL2

LABEL_MX65_END

;***************************************************
; Zähler -> ZV9
;***************************************************

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS S65,6	; Reset ?
	GOTO LABEL_ZV9_COUNT
	CLRF ZV9
	GOTO LABEL_ZV9_SETOUT

LABEL_ZV9_COUNT

; Test auf positive Flanke

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS S65,7
	GOTO LABEL_ZV9_SETFD
	BTFSC ZV9_FD,0
	GOTO LABEL_ZV9_SETFD

	BSF ZV9_FD,0


	BTFSC S65,5	; Vorwärts oder Rückwärts ?
	GOTO LABEL_ZV9_BACKWARD

	INCF ZV9,F
	GOTO LABEL_ZV9_SETOUT

LABEL_ZV9_BACKWARD
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	DECF ZV9,F

LABEL_ZV9_SETOUT


LABEL_ZV9_SETFD

; Test auf negative Flanke

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S65,7
	GOTO LABEL_ZV9_EXIT
	BCF ZV9_FD,0

LABEL_ZV9_EXIT

;***************************************************
; Zähler -> ZV10
;***************************************************

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS S65,7	; Reset ?
	GOTO LABEL_ZV10_COUNT
	CLRF ZV10
	GOTO LABEL_ZV10_SETOUT

LABEL_ZV10_COUNT

; Test auf positive Flanke

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS S66,4
	GOTO LABEL_ZV10_SETFD
	BTFSC ZV10_FD,0
	GOTO LABEL_ZV10_SETFD

	BSF ZV10_FD,0


	BTFSC S65,5	; Vorwärts oder Rückwärts ?
	GOTO LABEL_ZV10_BACKWARD

	INCF ZV10,F
	GOTO LABEL_ZV10_SETOUT

LABEL_ZV10_BACKWARD
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	DECF ZV10,F

LABEL_ZV10_SETOUT


LABEL_ZV10_SETFD

; Test auf negative Flanke

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S66,4
	GOTO LABEL_ZV10_EXIT
	BCF ZV10_FD,0

LABEL_ZV10_EXIT

;***************************************************
; Zähler -> ZV11
;***************************************************

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS S66,3	; Reset ?
	GOTO LABEL_ZV11_COUNT
	CLRF ZV11
	GOTO LABEL_ZV11_SETOUT

LABEL_ZV11_COUNT

; Test auf positive Flanke

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS S66,0
	GOTO LABEL_ZV11_SETFD
	BTFSC ZV11_FD,0
	GOTO LABEL_ZV11_SETFD

	BSF ZV11_FD,0


	BTFSC S65,5	; Vorwärts oder Rückwärts ?
	GOTO LABEL_ZV11_BACKWARD

	INCF ZV11,F
	GOTO LABEL_ZV11_SETOUT

LABEL_ZV11_BACKWARD
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	DECF ZV11,F

LABEL_ZV11_SETOUT


LABEL_ZV11_SETFD

; Test auf negative Flanke

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S66,0
	GOTO LABEL_ZV11_EXIT
	BCF ZV11_FD,0

LABEL_ZV11_EXIT

;***************************************************
; Zähler -> ZV12
;***************************************************

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS S66,1	; Reset ?
	GOTO LABEL_ZV12_COUNT
	CLRF ZV12
	GOTO LABEL_ZV12_SETOUT

LABEL_ZV12_COUNT

; Test auf positive Flanke

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS S66,5
	GOTO LABEL_ZV12_SETFD
	BTFSC ZV12_FD,0
	GOTO LABEL_ZV12_SETFD

	BSF ZV12_FD,0


	BTFSC S65,5	; Vorwärts oder Rückwärts ?
	GOTO LABEL_ZV12_BACKWARD

	INCF ZV12,F
	GOTO LABEL_ZV12_SETOUT

LABEL_ZV12_BACKWARD
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	DECF ZV12,F

LABEL_ZV12_SETOUT


LABEL_ZV12_SETFD

; Test auf negative Flanke

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S66,5
	GOTO LABEL_ZV12_EXIT
	BCF ZV12_FD,0

LABEL_ZV12_EXIT

;***************************************************
; Multiplexer -> MX66
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S37
	BTFSS STATUS,ZERO
	GOTO LABEL_MX66_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW AHOUR_Z
	MOVWF AHOUR_Z
	GOTO LABEL_MX66_END

LABEL_MX66_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S37
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX66_CHECKCONTROL2

	MOVFW ZV11
	BCF STATUS,RP1	; Bank 0
	MOVWF AHOUR_Z
	GOTO LABEL_MX66_END

LABEL_MX66_CHECKCONTROL2

LABEL_MX66_END

	BSF PCLATH,3	; Page 3
	GOTO 6144
	NOP

;***************************************************
; Multiplexer -> MX67
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S37
	BTFSS STATUS,ZERO
	GOTO LABEL_MX67_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW AHOUR_E
	MOVWF AHOUR_E
	GOTO LABEL_MX67_END

LABEL_MX67_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S37
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX67_CHECKCONTROL2

	MOVFW ZV12
	BCF STATUS,RP1	; Bank 0
	MOVWF AHOUR_E
	GOTO LABEL_MX67_END

LABEL_MX67_CHECKCONTROL2

LABEL_MX67_END

;***************************************************
; Schmitt-Trigger 8-Bit -> ST3
;***************************************************

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S65,6	; Ausgang gesetzt ?
	GOTO LABEL_ST3_MH	; dann mit Hysterese ?

	MOVLW 6
	GOTO LABEL_ST3_TEST

LABEL_ST3_MH

	MOVLW 6
LABEL_ST3_TEST

	SUBWF ZV9,W
	BTFSS STATUS,CARRY
	GOTO LABEL_ST3_RESET

	BSF S65,6	; if greater or equal
	GOTO LABEL_ST3_ENDE

LABEL_ST3_RESET
	BCF S65,6	; if less
LABEL_ST3_ENDE

;***************************************************
; Schmitt-Trigger 8-Bit -> ST4
;***************************************************

	BTFSC S65,7	; Ausgang gesetzt ?
	GOTO LABEL_ST4_MH	; dann mit Hysterese ?

	MOVLW 10
	GOTO LABEL_ST4_TEST

LABEL_ST4_MH

	MOVLW 10
LABEL_ST4_TEST

	SUBWF ZV10,W
	BTFSS STATUS,CARRY
	GOTO LABEL_ST4_RESET

	BSF S65,7	; if greater or equal
	GOTO LABEL_ST4_ENDE

LABEL_ST4_RESET
	BCF S65,7	; if less
LABEL_ST4_ENDE

;***************************************************
; Schmitt-Trigger 8-Bit -> ST5
;***************************************************

	BTFSC S66,2	; Ausgang gesetzt ?
	GOTO LABEL_ST5_MH	; dann mit Hysterese ?

	MOVLW 3
	GOTO LABEL_ST5_TEST

LABEL_ST5_MH

	MOVLW 3
LABEL_ST5_TEST

	SUBWF ZV11,W
	BTFSS STATUS,CARRY
	GOTO LABEL_ST5_RESET

	BSF S66,2	; if greater or equal
	GOTO LABEL_ST5_ENDE

LABEL_ST5_RESET
	BCF S66,2	; if less
LABEL_ST5_ENDE

;***************************************************
; Schmitt-Trigger 8-Bit -> ST6
;***************************************************

	BTFSC S66,0	; Ausgang gesetzt ?
	GOTO LABEL_ST6_MH	; dann mit Hysterese ?

	MOVLW 10
	GOTO LABEL_ST6_TEST

LABEL_ST6_MH

	MOVLW 10
LABEL_ST6_TEST

	SUBWF ZV12,W
	BTFSS STATUS,CARRY
	GOTO LABEL_ST6_RESET

	BSF S66,0	; if greater or equal
	GOTO LABEL_ST6_ENDE

LABEL_ST6_RESET
	BCF S66,0	; if less
LABEL_ST6_ENDE

;***************************************************
; Verteiler -> BV12
;***************************************************

	MOVLW 0 
	BTFSC S66,6	; IN0
	IORLW 1
	MOVWF S37	; OUT

;***************************************************
; UND - Gatter -> LG38
;***************************************************

LABEL_LG38_1
	BTFSS S66,7
	GOTO LABEL_LG38_FALSE
LABEL_LG38_2
	BTFSS S67,0
	GOTO LABEL_LG38_FALSE

LABEL_LG38_TRUE
	BSF S66,4
	GOTO LABEL_LG38_ENDE
LABEL_LG38_FALSE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S66,4
LABEL_LG38_ENDE
;***************************************************
; UND - Gatter -> LG39
;***************************************************

LABEL_LG39_1
	BTFSS S66,7
	GOTO LABEL_LG39_FALSE
LABEL_LG39_2
	BTFSS S67,1
	GOTO LABEL_LG39_FALSE

LABEL_LG39_TRUE
	BSF S66,5
	GOTO LABEL_LG39_ENDE
LABEL_LG39_FALSE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S66,5
LABEL_LG39_ENDE
;***************************************************
; Multiplexer -> MX68
;***************************************************

	CLRF SYS_TMP1
	MOVFW S38
	BTFSS STATUS,ZERO
	GOTO LABEL_MX68_CHECKCONTROL1

	MOVFW ZV9
	MOVWF ZV9
	GOTO LABEL_MX68_END

LABEL_MX68_CHECKCONTROL1
	INCF SYS_TMP1,F
	MOVFW S38
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX68_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW AMIN_Z
	BSF STATUS,RP1	; Bank 2
	MOVWF ZV9
	GOTO LABEL_MX68_END

LABEL_MX68_CHECKCONTROL2

LABEL_MX68_END

;***************************************************
; Multiplexer -> MX69
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S38
	BTFSS STATUS,ZERO
	GOTO LABEL_MX69_CHECKCONTROL1

	MOVFW ZV11
	MOVWF ZV11
	GOTO LABEL_MX69_END

LABEL_MX69_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S38
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX69_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW AHOUR_Z
	BSF STATUS,RP1	; Bank 2
	MOVWF ZV11
	GOTO LABEL_MX69_END

LABEL_MX69_CHECKCONTROL2

LABEL_MX69_END

;***************************************************
; Verteiler -> BV13
;***************************************************

	MOVLW 0 
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S67,2	; IN0
	IORLW 1
	MOVWF S38	; OUT

;***************************************************
;AF13
;***************************************************

	MOVFW ZV11
	MOVWF SYS_TMP1
	MOVLW 10
	MOVWF SYS_TMP2
	MOVLW HIGH SYSMUL8
	MOVWF PCLATH
	CALL SYSMUL8
	MOVLW HIGH LABEL_AF13
	MOVWF PCLATH
LABEL_AF13
	MOVFW SYS_TMP3
	MOVWF S39

LABEL_AF13_EXIT
;***************************************************
;AF14
;***************************************************

	MOVFW ZV12
	ADDWF S39,W
	MOVWF S40

LABEL_AF14_EXIT
;***************************************************
; Vergleich -> IF4
;***************************************************

	MOVLW 23
	SUBWF S40,W	; F - W -> W

LABEL_IF4_CHECK
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS STATUS,CARRY	; Test auf -> >
	GOTO LABEL_IF4_FALSE
	BTFSC STATUS,ZERO
	GOTO LABEL_IF4_FALSE

LABEL_IF4_TRUE
	BSF S67,3
	GOTO LABEL_IF4_EXIT

LABEL_IF4_FALSE
	BCF S67,3

LABEL_IF4_EXIT
;***************************************************
; Multiplexer -> MX70
;***************************************************

	CLRF SYS_TMP1
	MOVFW S38
	BTFSS STATUS,ZERO
	GOTO LABEL_MX70_CHECKCONTROL1

	MOVFW ZV10
	MOVWF ZV10
	GOTO LABEL_MX70_END

LABEL_MX70_CHECKCONTROL1
	INCF SYS_TMP1,F
	MOVFW S38
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX70_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW AMIN_E
	BSF STATUS,RP1	; Bank 2
	MOVWF ZV10
	GOTO LABEL_MX70_END

LABEL_MX70_CHECKCONTROL2

LABEL_MX70_END

;***************************************************
; Multiplexer -> MX71
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S38
	BTFSS STATUS,ZERO
	GOTO LABEL_MX71_CHECKCONTROL1

	MOVFW ZV12
	MOVWF ZV12
	GOTO LABEL_MX71_END

LABEL_MX71_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S38
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX71_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW AHOUR_E
	BSF STATUS,RP1	; Bank 2
	MOVWF ZV12
	GOTO LABEL_MX71_END

LABEL_MX71_CHECKCONTROL2

LABEL_MX71_END

;***************************************************
; Zähler -> ZV13
;***************************************************

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS S67,4	; Reset ?
	GOTO LABEL_ZV13_COUNT
	CLRF ZV13
	GOTO LABEL_ZV13_SETOUT

LABEL_ZV13_COUNT

; Test auf positive Flanke

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS S67,5
	GOTO LABEL_ZV13_SETFD
	BTFSC ZV13_FD,0
	GOTO LABEL_ZV13_SETFD

	BSF ZV13_FD,0


	BTFSC S65,5	; Vorwärts oder Rückwärts ?
	GOTO LABEL_ZV13_BACKWARD

	INCF ZV13,F
	GOTO LABEL_ZV13_SETOUT

LABEL_ZV13_BACKWARD
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	DECF ZV13,F

LABEL_ZV13_SETOUT


LABEL_ZV13_SETFD

; Test auf negative Flanke

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S67,5
	GOTO LABEL_ZV13_EXIT
	BCF ZV13_FD,0

LABEL_ZV13_EXIT

;***************************************************
; Multiplexer -> MX72
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S38
	BTFSS STATUS,ZERO
	GOTO LABEL_MX72_CHECKCONTROL1

	MOVFW ZV13
	MOVWF ZV13
	GOTO LABEL_MX72_END

LABEL_MX72_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S38
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX72_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 0
	MOVFW ADAYOFWEEK
	BSF STATUS,RP1	; Bank 2
	MOVWF ZV13
	GOTO LABEL_MX72_END

LABEL_MX72_CHECKCONTROL2

LABEL_MX72_END

;***************************************************
; Multiplexer -> MX73
;***************************************************

	CLRF SYS_TMP1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S37
	BTFSS STATUS,ZERO
	GOTO LABEL_MX73_CHECKCONTROL1

	BCF STATUS,RP1	; Bank 0
	MOVFW ADAYOFWEEK
	MOVWF ADAYOFWEEK
	GOTO LABEL_MX73_END

LABEL_MX73_CHECKCONTROL1
	INCF SYS_TMP1,F
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW S37
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX73_CHECKCONTROL2

	MOVFW ZV13
	BCF STATUS,RP1	; Bank 0
	MOVWF ADAYOFWEEK
	GOTO LABEL_MX73_END

LABEL_MX73_CHECKCONTROL2

LABEL_MX73_END

;***************************************************
; Schmitt-Trigger 8-Bit -> ST7
;***************************************************

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S67,4	; Ausgang gesetzt ?
	GOTO LABEL_ST7_MH	; dann mit Hysterese ?

	MOVLW 7
	GOTO LABEL_ST7_TEST

LABEL_ST7_MH

	MOVLW 7
LABEL_ST7_TEST

	SUBWF ZV13,W
	BTFSS STATUS,CARRY
	GOTO LABEL_ST7_RESET

	BSF S67,4	; if greater or equal
	GOTO LABEL_ST7_ENDE

LABEL_ST7_RESET
	BCF S67,4	; if less
LABEL_ST7_ENDE

;***************************************************
; UND - Gatter -> LG40
;***************************************************

LABEL_LG40_1
	BTFSS S66,7
	GOTO LABEL_LG40_FALSE
LABEL_LG40_2
	BTFSS S67,6
	GOTO LABEL_LG40_FALSE

LABEL_LG40_TRUE
	BSF S67,5
	GOTO LABEL_LG40_ENDE
LABEL_LG40_FALSE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S67,5
LABEL_LG40_ENDE
;***************************************************
; One Shot -> OS27
;***************************************************


	BTFSS S67,3
	GOTO LABEL_OS27_1
	BTFSC OS27_FD,0
	GOTO LABEL_OS27_1
	BSF OS27_FD,0
	BSF S67,7
	GOTO LABEL_OS27_2
LABEL_OS27_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S67,7
	BTFSC S67,3
	GOTO LABEL_OS27_2
	BCF OS27_FD,0
LABEL_OS27_2
;***************************************************
; ODER - Gatter -> LG41
;***************************************************

LABEL_LG41_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S66,0
	GOTO LABEL_LG41_TRUE
LABEL_LG41_2
	BTFSC S67,7
	GOTO LABEL_LG41_TRUE

LABEL_LG41_FALSE
	BCF S66,1
	GOTO LABEL_LG41_ENDE
LABEL_LG41_TRUE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BSF S66,1
LABEL_LG41_ENDE
;***************************************************
; ODER - Gatter -> LG42
;***************************************************

LABEL_LG42_1
	BTFSC S66,2
	GOTO LABEL_LG42_TRUE
LABEL_LG42_2
	BTFSC S67,7
	GOTO LABEL_LG42_TRUE

LABEL_LG42_FALSE
	BCF S66,3
	GOTO LABEL_LG42_ENDE
LABEL_LG42_TRUE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BSF S66,3
LABEL_LG42_ENDE
;***************************************************
; GND
;***************************************************

	BCF S65,5	; immer Low

;***************************************************
; One Shot -> OS28
;***************************************************


	BCF STATUS,RP1	; Bank 0
	BTFSC PORTC,1
	GOTO LABEL_OS28_1
	BSF STATUS,RP1	; Bank 2
	BTFSC OS28_FD,0
	GOTO LABEL_OS28_1
	BSF OS28_FD,0
	BSF S68,0
	GOTO LABEL_OS28_2
LABEL_OS28_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S68,0
	BCF STATUS,RP1	; Bank 0
	BTFSS PORTC,1
	GOTO LABEL_OS28_2
	BSF STATUS,RP1	; Bank 2
	BCF OS28_FD,0
LABEL_OS28_2
;***************************************************
; One Shot -> OS29
;***************************************************


	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSC PORTC,2
	GOTO LABEL_OS29_1
	BSF STATUS,RP1	; Bank 2
	BTFSC OS29_FD,0
	GOTO LABEL_OS29_1
	BSF OS29_FD,0
	BSF S69,4
	GOTO LABEL_OS29_2
LABEL_OS29_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S69,4
	BCF STATUS,RP1	; Bank 0
	BTFSS PORTC,2
	GOTO LABEL_OS29_2
	BSF STATUS,RP1	; Bank 2
	BCF OS29_FD,0
LABEL_OS29_2
;***************************************************
; One Shot -> OS30
;***************************************************


	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSC PORTC,7
	GOTO LABEL_OS30_1
	BSF STATUS,RP1	; Bank 2
	BTFSC OS30_FD,0
	GOTO LABEL_OS30_1
	BSF OS30_FD,0
	BSF S68,1
	GOTO LABEL_OS30_2
LABEL_OS30_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S68,1
	BCF STATUS,RP1	; Bank 0
	BTFSS PORTC,7
	GOTO LABEL_OS30_2
	BSF STATUS,RP1	; Bank 2
	BCF OS30_FD,0
LABEL_OS30_2
;***************************************************
; One Shot -> OS31
;***************************************************


	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSC PORTC,6
	GOTO LABEL_OS31_1
	BSF STATUS,RP1	; Bank 2
	BTFSC OS31_FD,0
	GOTO LABEL_OS31_1
	BSF OS31_FD,0
	BSF S61,4
	GOTO LABEL_OS31_2
LABEL_OS31_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S61,4
	BCF STATUS,RP1	; Bank 0
	BTFSS PORTC,6
	GOTO LABEL_OS31_2
	BSF STATUS,RP1	; Bank 2
	BCF OS31_FD,0
LABEL_OS31_2
;***************************************************
; UND - Gatter -> LG43
;***************************************************

LABEL_LG43_1
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSC S55,7
	GOTO LABEL_LG43_FALSE
LABEL_LG43_2
	BSF STATUS,RP1	; Bank 2
	BTFSS S68,0
	GOTO LABEL_LG43_FALSE

LABEL_LG43_TRUE
	BSF S68,2
	GOTO LABEL_LG43_ENDE
LABEL_LG43_FALSE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S68,2
LABEL_LG43_ENDE
;***************************************************
; RS-FLIP-FLOP -> RS5
;***************************************************

	BTFSC S69,1
	GOTO LABEL_RS5_RESET
	BTFSS S68,2
	GOTO LABEL_RS5_ENDE
	BCF STATUS,RP1	; Bank 0
	BSF S55,6	; Ausgang setzen
	GOTO LABEL_RS5_ENDE
LABEL_RS5_RESET
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF S55,6	; Ausgang zurücksetzen
LABEL_RS5_ENDE

;***************************************************
; Zähler -> ZV14
;***************************************************

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS S68,6	; Reset ?
	GOTO LABEL_ZV14_COUNT
	CLRF ZV14
	GOTO LABEL_ZV14_SETOUT

LABEL_ZV14_COUNT

; Test auf positive Flanke

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS S68,7
	GOTO LABEL_ZV14_SETFD
	BTFSC ZV14_FD,0
	GOTO LABEL_ZV14_SETFD

	BSF ZV14_FD,0


	BTFSC S69,0	; Vorwärts oder Rückwärts ?
	GOTO LABEL_ZV14_BACKWARD

	INCF ZV14,F
	GOTO LABEL_ZV14_SETOUT

LABEL_ZV14_BACKWARD
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	DECF ZV14,F

LABEL_ZV14_SETOUT


LABEL_ZV14_SETFD

; Test auf negative Flanke

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S68,7
	GOTO LABEL_ZV14_EXIT
	BCF ZV14_FD,0

LABEL_ZV14_EXIT

;***************************************************
; Call subroutine T04
;***************************************************


	MOVLW LOW T04
	MOVWF SYS_TMP1
	MOVLW HIGH T04
	MOVWF SYS_TMP2

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV14
	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 S41

	BSF INTCON,GIE
	BSF PCLATH,3	; Page 3
	BSF PCLATH,4	; Page 3
;***************************************************
; Verteiler -> BV14
;***************************************************

	BTFSC S41,0
	GOTO LABEL_BV14_0
	BCF S68,3
	GOTO LABEL_BV14_0_END
LABEL_BV14_0
	BSF S68,3
LABEL_BV14_0_END

;**********************************************

	BTFSC S41,1
	GOTO LABEL_BV14_1
	BCF S68,4
	GOTO LABEL_BV14_1_END
LABEL_BV14_1
	BSF S68,4
LABEL_BV14_1_END

;**********************************************

	BTFSC S41,2
	GOTO LABEL_BV14_2
	BCF S68,5
	GOTO LABEL_BV14_2_END
LABEL_BV14_2
	BSF S68,5
LABEL_BV14_2_END

;**********************************************


;***************************************************
; Schmitt-Trigger 8-Bit -> ST8
;***************************************************

	BTFSC S68,6	; Ausgang gesetzt ?
	GOTO LABEL_ST8_MH	; dann mit Hysterese ?

	MOVLW 3
	GOTO LABEL_ST8_TEST

LABEL_ST8_MH

	MOVLW 3
LABEL_ST8_TEST

	SUBWF ZV14,W
	BTFSS STATUS,CARRY
	GOTO LABEL_ST8_RESET

	BSF S68,6	; if greater or equal
	GOTO LABEL_ST8_ENDE

LABEL_ST8_RESET
	BCF S68,6	; if less
LABEL_ST8_ENDE

;***************************************************
; UND - Gatter -> LG44
;***************************************************

LABEL_LG44_1
	BTFSS S68,0
	GOTO LABEL_LG44_FALSE
LABEL_LG44_2
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,6
	GOTO LABEL_LG44_FALSE

LABEL_LG44_TRUE
	BSF STATUS,RP1	; Bank 2
	BSF S68,7
	GOTO LABEL_LG44_ENDE
LABEL_LG44_FALSE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S68,7
LABEL_LG44_ENDE
;***************************************************
; UND - Gatter -> LG45
;***************************************************

LABEL_LG45_1
	BTFSS S68,3
	GOTO LABEL_LG45_FALSE
LABEL_LG45_2
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,6
	GOTO LABEL_LG45_FALSE

LABEL_LG45_TRUE
	BSF STATUS,RP1	; Bank 2
	BSF S67,0
	GOTO LABEL_LG45_ENDE
LABEL_LG45_FALSE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S67,0
LABEL_LG45_ENDE
;***************************************************
; UND - Gatter -> LG46
;***************************************************

LABEL_LG46_1
	BTFSS S68,4
	GOTO LABEL_LG46_FALSE
LABEL_LG46_2
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,6
	GOTO LABEL_LG46_FALSE

LABEL_LG46_TRUE
	BSF STATUS,RP1	; Bank 2
	BSF S67,1
	GOTO LABEL_LG46_ENDE
LABEL_LG46_FALSE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S67,1
LABEL_LG46_ENDE
;***************************************************
; UND - Gatter -> LG47
;***************************************************

LABEL_LG47_1
	BTFSS S68,5
	GOTO LABEL_LG47_FALSE
LABEL_LG47_2
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,6
	GOTO LABEL_LG47_FALSE

LABEL_LG47_TRUE
	BSF STATUS,RP1	; Bank 2
	BSF S67,6
	GOTO LABEL_LG47_ENDE
LABEL_LG47_FALSE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S67,6
LABEL_LG47_ENDE
;***************************************************
; GND
;***************************************************

	BCF S69,0	; immer Low

;***************************************************
; One Shot -> OS32
;***************************************************


	BCF STATUS,RP1	; Bank 0
	BTFSS S55,6
	GOTO LABEL_OS32_1
	BSF STATUS,RP1	; Bank 2
	BTFSC OS32_FD,0
	GOTO LABEL_OS32_1
	BSF OS32_FD,0
	BSF S67,2
	GOTO LABEL_OS32_2
LABEL_OS32_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S67,2
	BCF STATUS,RP1	; Bank 0
	BTFSC S55,6
	GOTO LABEL_OS32_2
	BSF STATUS,RP1	; Bank 2
	BCF OS32_FD,0
LABEL_OS32_2
;***************************************************
; UND - Gatter -> LG48
;***************************************************

LABEL_LG48_1
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,6
	GOTO LABEL_LG48_FALSE
LABEL_LG48_2
	BSF STATUS,RP1	; Bank 2
	BTFSS S68,1
	GOTO LABEL_LG48_FALSE

LABEL_LG48_TRUE
	BSF S66,7
	GOTO LABEL_LG48_ENDE
LABEL_LG48_FALSE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S66,7
LABEL_LG48_ENDE
;***************************************************
; Zähler -> ZV15
;***************************************************

	BTFSS S69,6	; Reset ?
	GOTO LABEL_ZV15_COUNT
	CLRF ZV15
	GOTO LABEL_ZV15_SETOUT

LABEL_ZV15_COUNT

; Test auf positive Flanke

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS S69,3
	GOTO LABEL_ZV15_SETFD
	BTFSC ZV15_FD,0
	GOTO LABEL_ZV15_SETFD

	BSF ZV15_FD,0


	BTFSC S69,0	; Vorwärts oder Rückwärts ?
	GOTO LABEL_ZV15_BACKWARD

	INCF ZV15,F
	GOTO LABEL_ZV15_SETOUT

LABEL_ZV15_BACKWARD
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	DECF ZV15,F

LABEL_ZV15_SETOUT


LABEL_ZV15_SETFD

; Test auf negative Flanke

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S69,3
	GOTO LABEL_ZV15_EXIT
	BCF ZV15_FD,0

LABEL_ZV15_EXIT

;***************************************************
; UND - Gatter -> LG49
;***************************************************

LABEL_LG49_1
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,1
	GOTO LABEL_LG49_FALSE
LABEL_LG49_2
	BTFSS S55,6
	GOTO LABEL_LG49_FALSE

LABEL_LG49_TRUE
	BSF STATUS,RP1	; Bank 2
	BSF S69,3
	GOTO LABEL_LG49_ENDE
LABEL_LG49_FALSE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S69,3
LABEL_LG49_ENDE
;***************************************************
; ODER - Gatter -> LG50
;***************************************************

LABEL_LG50_1
	BTFSC S69,2
	GOTO LABEL_LG50_TRUE
LABEL_LG50_2
	BTFSC S61,4
	GOTO LABEL_LG50_TRUE

LABEL_LG50_FALSE
	BCF S69,1
	GOTO LABEL_LG50_ENDE
LABEL_LG50_TRUE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BSF S69,1
LABEL_LG50_ENDE
;***************************************************
; ODER - Gatter -> LG51
;***************************************************

LABEL_LG51_1
	BTFSC S69,4
	GOTO LABEL_LG51_TRUE
LABEL_LG51_2
	BTFSC S68,0
	GOTO LABEL_LG51_TRUE
LABEL_LG51_3
	BTFSC S68,1
	GOTO LABEL_LG51_TRUE
LABEL_LG51_4
	BTFSC S61,4
	GOTO LABEL_LG51_TRUE

LABEL_LG51_FALSE
	BCF S69,5
	GOTO LABEL_LG51_ENDE
LABEL_LG51_TRUE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BSF S69,5
LABEL_LG51_ENDE
;***************************************************
; ODER - Gatter -> LG52
;***************************************************

LABEL_LG52_1
	BTFSC S69,2
	GOTO LABEL_LG52_TRUE
LABEL_LG52_2
	BTFSC S69,5
	GOTO LABEL_LG52_TRUE

LABEL_LG52_FALSE
	BCF S69,6
	GOTO LABEL_LG52_ENDE
LABEL_LG52_TRUE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BSF S69,6
LABEL_LG52_ENDE
;***************************************************
; UND - Gatter -> LG53
;***************************************************

LABEL_LG53_1
	BTFSS S69,7
	GOTO LABEL_LG53_FALSE
LABEL_LG53_2
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,7
	GOTO LABEL_LG53_FALSE

LABEL_LG53_TRUE
	BSF STATUS,RP1	; Bank 2
	BSF S66,6
	GOTO LABEL_LG53_ENDE
LABEL_LG53_FALSE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S66,6
LABEL_LG53_ENDE
;***************************************************
; One Shot -> OS33
;***************************************************


	BCF STATUS,RP1	; Bank 0
	BTFSC S55,6
	GOTO LABEL_OS33_1
	BSF STATUS,RP1	; Bank 2
	BTFSC OS33_FD,0
	GOTO LABEL_OS33_1
	BSF OS33_FD,0
	BSF S69,7
	GOTO LABEL_OS33_2
LABEL_OS33_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S69,7
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,6
	GOTO LABEL_OS33_2
	BSF STATUS,RP1	; Bank 2
	BCF OS33_FD,0
LABEL_OS33_2
;***************************************************
; One Shot -> OS34
;***************************************************


	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S66,6
	GOTO LABEL_OS34_1
	BTFSC OS34_FD,0
	GOTO LABEL_OS34_1
	BSF OS34_FD,0
	BCF STATUS,RP1	; Bank 0
	BSF S55,3
	GOTO LABEL_OS34_2
LABEL_OS34_1
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF S55,3
	BSF STATUS,RP1	; Bank 2
	BTFSS S66,6
	GOTO LABEL_OS34_2
	BCF OS34_FD,0
LABEL_OS34_2
;***************************************************
; UND - Gatter -> LG54
;***************************************************

LABEL_LG54_1
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSC S55,6
	GOTO LABEL_LG54_FALSE
LABEL_LG54_2
	BSF STATUS,RP1	; Bank 2
	BTFSS S68,1
	GOTO LABEL_LG54_FALSE

LABEL_LG54_TRUE
	BSF S60,3
	GOTO LABEL_LG54_ENDE
LABEL_LG54_FALSE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S60,3
LABEL_LG54_ENDE
;***************************************************
; Schmitt-Trigger 8-Bit -> ST9
;***************************************************

	BTFSC S69,2	; Ausgang gesetzt ?
	GOTO LABEL_ST9_MH	; dann mit Hysterese ?

	MOVLW 240
	GOTO LABEL_ST9_TEST

LABEL_ST9_MH

	MOVLW 240
LABEL_ST9_TEST

	SUBWF ZV15,W
	BTFSS STATUS,CARRY
	GOTO LABEL_ST9_RESET

	BSF S69,2	; if greater or equal
	GOTO LABEL_ST9_ENDE

LABEL_ST9_RESET
	BCF S69,2	; if less
LABEL_ST9_ENDE

;***************************************************
; Vergleich -> IF5
;***************************************************

	MOVLW 0
	BCF STATUS,RP1	; Bank 0
	SUBWF ASEC_E,W	; F - W -> W

LABEL_IF5_CHECK
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS STATUS,ZERO	; Test auf -> =
	GOTO LABEL_IF5_FALSE

LABEL_IF5_TRUE
	BSF S70,0
	GOTO LABEL_IF5_EXIT

LABEL_IF5_FALSE
	BCF S70,0

LABEL_IF5_EXIT
;***************************************************
; Vergleich -> IF6
;***************************************************

	MOVLW 0
	BCF STATUS,RP1	; Bank 0
	SUBWF ASEC_Z,W	; F - W -> W

LABEL_IF6_CHECK
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS STATUS,ZERO	; Test auf -> =
	GOTO LABEL_IF6_FALSE

LABEL_IF6_TRUE
	BSF S70,1
	GOTO LABEL_IF6_EXIT

LABEL_IF6_FALSE
	BCF S70,1

LABEL_IF6_EXIT
;***************************************************
; Vergleich -> IF7
;***************************************************

	MOVLW 0
	BCF STATUS,RP1	; Bank 0
	SUBWF AMIN_E,W	; F - W -> W

LABEL_IF7_CHECK
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS STATUS,ZERO	; Test auf -> =
	GOTO LABEL_IF7_FALSE

LABEL_IF7_TRUE
	BSF S70,2
	GOTO LABEL_IF7_EXIT

LABEL_IF7_FALSE
	BCF S70,2

LABEL_IF7_EXIT
;***************************************************
; Vergleich -> IF8
;***************************************************

	MOVLW 0
	BCF STATUS,RP1	; Bank 0
	SUBWF AMIN_Z,W	; F - W -> W

LABEL_IF8_CHECK
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS STATUS,ZERO	; Test auf -> =
	GOTO LABEL_IF8_FALSE

LABEL_IF8_TRUE
	BSF S70,3
	GOTO LABEL_IF8_EXIT

LABEL_IF8_FALSE
	BCF S70,3

LABEL_IF8_EXIT
;***************************************************
; Vergleich -> IF9
;***************************************************

	MOVLW 6
	BCF STATUS,RP1	; Bank 0
	SUBWF AHOUR_E,W	; F - W -> W

LABEL_IF9_CHECK
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS STATUS,ZERO	; Test auf -> =
	GOTO LABEL_IF9_FALSE

LABEL_IF9_TRUE
	BSF S70,5
	GOTO LABEL_IF9_EXIT

LABEL_IF9_FALSE
	BCF S70,5

LABEL_IF9_EXIT
;***************************************************
; Vergleich -> IF10
;***************************************************

	MOVLW 0
	BCF STATUS,RP1	; Bank 0
	SUBWF AHOUR_Z,W	; F - W -> W

LABEL_IF10_CHECK
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS STATUS,ZERO	; Test auf -> =
	GOTO LABEL_IF10_FALSE

LABEL_IF10_TRUE
	BSF S70,6
	GOTO LABEL_IF10_EXIT

LABEL_IF10_FALSE
	BCF S70,6

LABEL_IF10_EXIT
;***************************************************
; Vergleich -> IF11
;***************************************************

	MOVLW 4
	BCF STATUS,RP1	; Bank 0
	SUBWF AHOUR_E,W	; F - W -> W

LABEL_IF11_CHECK
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS STATUS,ZERO	; Test auf -> =
	GOTO LABEL_IF11_FALSE

LABEL_IF11_TRUE
	BSF S71,0
	GOTO LABEL_IF11_EXIT

LABEL_IF11_FALSE
	BCF S71,0

LABEL_IF11_EXIT
;***************************************************
; Vergleich -> IF12
;***************************************************

	MOVLW 1
	BCF STATUS,RP1	; Bank 0
	SUBWF AHOUR_Z,W	; F - W -> W

LABEL_IF12_CHECK
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS STATUS,ZERO	; Test auf -> =
	GOTO LABEL_IF12_FALSE

LABEL_IF12_TRUE
	BSF S71,1
	GOTO LABEL_IF12_EXIT

LABEL_IF12_FALSE
	BCF S71,1

LABEL_IF12_EXIT
;***************************************************
; Vergleich -> IF13
;***************************************************

	MOVLW 2
	BCF STATUS,RP1	; Bank 0
	SUBWF AHOUR_E,W	; F - W -> W

LABEL_IF13_CHECK
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS STATUS,ZERO	; Test auf -> =
	GOTO LABEL_IF13_FALSE

LABEL_IF13_TRUE
	BSF S71,3
	GOTO LABEL_IF13_EXIT

LABEL_IF13_FALSE
	BCF S71,3

LABEL_IF13_EXIT
;***************************************************
; Vergleich -> IF14
;***************************************************

	MOVLW 2
	BCF STATUS,RP1	; Bank 0
	SUBWF AHOUR_Z,W	; F - W -> W

LABEL_IF14_CHECK
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS STATUS,ZERO	; Test auf -> =
	GOTO LABEL_IF14_FALSE

LABEL_IF14_TRUE
	BSF S71,4
	GOTO LABEL_IF14_EXIT

LABEL_IF14_FALSE
	BCF S71,4

LABEL_IF14_EXIT
;***************************************************
; UND - Gatter -> LG55
;***************************************************

LABEL_LG55_1
	BTFSS S70,0
	GOTO LABEL_LG55_FALSE
LABEL_LG55_2
	BTFSS S70,1
	GOTO LABEL_LG55_FALSE
LABEL_LG55_3
	BTFSS S70,2
	GOTO LABEL_LG55_FALSE
LABEL_LG55_4
	BTFSS S70,3
	GOTO LABEL_LG55_FALSE

LABEL_LG55_TRUE
	BSF S70,4
	GOTO LABEL_LG55_ENDE
LABEL_LG55_FALSE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S70,4
LABEL_LG55_ENDE
;***************************************************
; UND - Gatter -> LG56
;***************************************************

LABEL_LG56_1
	BTFSS S70,4
	GOTO LABEL_LG56_FALSE
LABEL_LG56_2
	BTFSS S70,5
	GOTO LABEL_LG56_FALSE
LABEL_LG56_3
	BTFSS S70,6
	GOTO LABEL_LG56_FALSE

LABEL_LG56_TRUE
	BSF S70,7
	GOTO LABEL_LG56_ENDE
LABEL_LG56_FALSE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S70,7
LABEL_LG56_ENDE
;***************************************************
; UND - Gatter -> LG57
;***************************************************

LABEL_LG57_1
	BTFSS S70,4
	GOTO LABEL_LG57_FALSE
LABEL_LG57_2
	BTFSS S71,0
	GOTO LABEL_LG57_FALSE
LABEL_LG57_3
	BTFSS S71,1
	GOTO LABEL_LG57_FALSE

LABEL_LG57_TRUE
	BSF S71,2
	GOTO LABEL_LG57_ENDE
LABEL_LG57_FALSE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S71,2
LABEL_LG57_ENDE
;***************************************************
; UND - Gatter -> LG58
;***************************************************

LABEL_LG58_1
	BTFSS S70,4
	GOTO LABEL_LG58_FALSE
LABEL_LG58_2
	BTFSS S71,3
	GOTO LABEL_LG58_FALSE
LABEL_LG58_3
	BTFSS S71,4
	GOTO LABEL_LG58_FALSE

LABEL_LG58_TRUE
	BSF S71,5
	GOTO LABEL_LG58_ENDE
LABEL_LG58_FALSE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S71,5
LABEL_LG58_ENDE
;***************************************************
; ODER - Gatter -> LG59
;***************************************************

LABEL_LG59_1
	BTFSC S70,7
	GOTO LABEL_LG59_TRUE
LABEL_LG59_2
	BTFSC S71,2
	GOTO LABEL_LG59_TRUE
LABEL_LG59_3
	BTFSC S71,5
	GOTO LABEL_LG59_TRUE

LABEL_LG59_FALSE
	BCF S71,6
	GOTO LABEL_LG59_ENDE
LABEL_LG59_TRUE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BSF S71,6
LABEL_LG59_ENDE
;***************************************************
; UND - Gatter -> LG60
;***************************************************

LABEL_LG60_1
	BTFSS S71,6
	GOTO LABEL_LG60_FALSE
LABEL_LG60_2
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,7
	GOTO LABEL_LG60_FALSE

LABEL_LG60_TRUE
	BSF STATUS,RP1	; Bank 2
	BSF S71,7
	GOTO LABEL_LG60_ENDE
LABEL_LG60_FALSE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S71,7
LABEL_LG60_ENDE
;***************************************************
; Verteiler -> BV15
;***************************************************

	MOVLW 0 
	BTFSC S72,0	; IN0
	IORLW 1
	BTFSC S72,1	; IN1
	IORLW 2
	BTFSC S72,2	; IN2
	IORLW 4
	MOVWF S50	; OUT

;***************************************************
; RS-FLIP-FLOP -> RS6
;***************************************************

	BTFSC S72,5
	GOTO LABEL_RS6_RESET
	BTFSS S72,3
	GOTO LABEL_RS6_ENDE
	BSF S72,6	; Ausgang setzen
	GOTO LABEL_RS6_ENDE
LABEL_RS6_RESET
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S72,6	; Ausgang zurücksetzen
LABEL_RS6_ENDE

;***************************************************
; One Shot -> OS35
;***************************************************


	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS S71,7
	GOTO LABEL_OS35_1
	BTFSC OS35_FD,0
	GOTO LABEL_OS35_1
	BSF OS35_FD,0
	BSF S72,3
	GOTO LABEL_OS35_2
LABEL_OS35_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S72,3
	BTFSC S71,7
	GOTO LABEL_OS35_2
	BCF OS35_FD,0
LABEL_OS35_2
;***************************************************
; Vergleich -> IF15
;***************************************************

	MOVLW 2
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	SUBWF AMIN_E,W	; F - W -> W

LABEL_IF15_CHECK
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS STATUS,CARRY	; Test auf -> >=
	GOTO LABEL_IF15_FALSE

LABEL_IF15_TRUE
	BSF S72,4
	GOTO LABEL_IF15_EXIT

LABEL_IF15_FALSE
	BCF S72,4

LABEL_IF15_EXIT
;***************************************************
; One Shot -> OS36
;***************************************************


	BTFSS S72,4
	GOTO LABEL_OS36_1
	BTFSC OS36_FD,0
	GOTO LABEL_OS36_1
	BSF OS36_FD,0
	BSF S72,5
	GOTO LABEL_OS36_2
LABEL_OS36_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S72,5
	BTFSC S72,4
	GOTO LABEL_OS36_2
	BCF OS36_FD,0
LABEL_OS36_2
;***************************************************
; UND - Gatter -> LG61
;***************************************************

LABEL_LG61_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S72,6
	GOTO LABEL_LG61_FALSE
LABEL_LG61_2
	BTFSS S71,7
	GOTO LABEL_LG61_FALSE

LABEL_LG61_TRUE
	BSF STATUS,RP0	; Bank 3
	BSF S76,3
	GOTO LABEL_LG61_ENDE
LABEL_LG61_FALSE
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BCF S76,3
LABEL_LG61_ENDE
;***************************************************
;AF15
;***************************************************

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	MOVFW AHOUR_Z
	MOVWF SYS_TMP1
	MOVLW 10
	MOVWF SYS_TMP2
	MOVLW HIGH SYSMUL8
	MOVWF PCLATH
	CALL SYSMUL8
	MOVLW HIGH LABEL_AF15
	MOVWF PCLATH
LABEL_AF15
	MOVFW SYS_TMP3
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	MOVWF S42

LABEL_AF15_EXIT
;***************************************************
;AF16
;***************************************************

	MOVFW S42
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	ADDWF AHOUR_E,W
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	MOVWF S43

LABEL_AF16_EXIT
;***************************************************
; Vergleich -> IF16
;***************************************************

	MOVLW 6
	SUBWF S43,W	; F - W -> W

LABEL_IF16_CHECK
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS STATUS,CARRY	; Test auf -> >=
	GOTO LABEL_IF16_FALSE

LABEL_IF16_TRUE
	BSF S72,7
	GOTO LABEL_IF16_EXIT

LABEL_IF16_FALSE
	BCF S72,7

LABEL_IF16_EXIT
;***************************************************
; Vergleich -> IF17
;***************************************************

	MOVLW 14
	BSF STATUS,RP0	; Bank 3
	SUBWF S43,W	; F - W -> W

LABEL_IF17_CHECK
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BTFSC STATUS,CARRY	; Test auf -> <
	GOTO LABEL_IF17_FALSE

LABEL_IF17_TRUE
	BSF S73,0
	GOTO LABEL_IF17_EXIT

LABEL_IF17_FALSE
	BCF S73,0

LABEL_IF17_EXIT
;***************************************************
; UND - Gatter -> LG62
;***************************************************

LABEL_LG62_1
	BCF STATUS,RP0	; Bank 2
	BTFSS S72,7
	GOTO LABEL_LG62_FALSE
LABEL_LG62_2
	BSF STATUS,RP0	; Bank 3
	BTFSS S73,0
	GOTO LABEL_LG62_FALSE

LABEL_LG62_TRUE
	BCF STATUS,RP0	; Bank 2
	BSF S72,0
	GOTO LABEL_LG62_ENDE
LABEL_LG62_FALSE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S72,0
LABEL_LG62_ENDE
;***************************************************
;AF17
;***************************************************

	BCF STATUS,RP1	; Bank 0
	MOVFW AHOUR_Z
	MOVWF SYS_TMP1
	MOVLW 10
	MOVWF SYS_TMP2
	MOVLW HIGH SYSMUL8
	MOVWF PCLATH
	CALL SYSMUL8
	MOVLW HIGH LABEL_AF17
	MOVWF PCLATH
LABEL_AF17
	MOVFW SYS_TMP3
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	MOVWF S44

LABEL_AF17_EXIT
;***************************************************
;AF18
;***************************************************

	MOVFW S44
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	ADDWF AHOUR_E,W
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	MOVWF S45

LABEL_AF18_EXIT
;***************************************************
; Vergleich -> IF18
;***************************************************

	MOVLW 14
	SUBWF S45,W	; F - W -> W

LABEL_IF18_CHECK
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BTFSS STATUS,CARRY	; Test auf -> >=
	GOTO LABEL_IF18_FALSE

LABEL_IF18_TRUE
	BSF S73,1
	GOTO LABEL_IF18_EXIT

LABEL_IF18_FALSE
	BCF S73,1

LABEL_IF18_EXIT
;***************************************************
; Vergleich -> IF19
;***************************************************

	MOVLW 22
	SUBWF S45,W	; F - W -> W

LABEL_IF19_CHECK
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BTFSC STATUS,CARRY	; Test auf -> <
	GOTO LABEL_IF19_FALSE

LABEL_IF19_TRUE
	BSF S73,2
	GOTO LABEL_IF19_EXIT

LABEL_IF19_FALSE
	BCF S73,2

LABEL_IF19_EXIT
;***************************************************
; UND - Gatter -> LG63
;***************************************************

LABEL_LG63_1
	BTFSS S73,1
	GOTO LABEL_LG63_FALSE
LABEL_LG63_2
	BTFSS S73,2
	GOTO LABEL_LG63_FALSE

LABEL_LG63_TRUE
	BCF STATUS,RP0	; Bank 2
	BSF S72,1
	GOTO LABEL_LG63_ENDE
LABEL_LG63_FALSE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S72,1
LABEL_LG63_ENDE
;***************************************************
; Vergleich -> IF20
;***************************************************

	MOVLW 22
	BSF STATUS,RP0	; Bank 3
	SUBWF S47,W	; F - W -> W

LABEL_IF20_CHECK
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BTFSS STATUS,CARRY	; Test auf -> >=
	GOTO LABEL_IF20_FALSE

LABEL_IF20_TRUE
	BSF S73,3
	GOTO LABEL_IF20_EXIT

LABEL_IF20_FALSE
	BCF S73,3

LABEL_IF20_EXIT
;***************************************************
; Vergleich -> IF21
;***************************************************

	MOVLW 24
	SUBWF S47,W	; F - W -> W

LABEL_IF21_CHECK
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BTFSC STATUS,CARRY	; Test auf -> <
	GOTO LABEL_IF21_FALSE

LABEL_IF21_TRUE
	BSF S73,4
	GOTO LABEL_IF21_EXIT

LABEL_IF21_FALSE
	BCF S73,4

LABEL_IF21_EXIT
;***************************************************
;AF19
;***************************************************

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	MOVFW AHOUR_Z
	MOVWF SYS_TMP1
	MOVLW 10
	MOVWF SYS_TMP2
	MOVLW HIGH SYSMUL8
	MOVWF PCLATH
	CALL SYSMUL8
	MOVLW HIGH LABEL_AF19
	MOVWF PCLATH
LABEL_AF19
	MOVFW SYS_TMP3
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	MOVWF S46

LABEL_AF19_EXIT
;***************************************************
;AF20
;***************************************************

	MOVFW S46
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	ADDWF AHOUR_E,W
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	MOVWF S47

LABEL_AF20_EXIT
;***************************************************
; UND - Gatter -> LG64
;***************************************************

LABEL_LG64_1
	BTFSS S73,3
	GOTO LABEL_LG64_FALSE
LABEL_LG64_2
	BTFSS S73,4
	GOTO LABEL_LG64_FALSE

LABEL_LG64_TRUE
	BSF S73,5
	GOTO LABEL_LG64_ENDE
LABEL_LG64_FALSE
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BCF S73,5
LABEL_LG64_ENDE
;***************************************************
;AF21
;***************************************************

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	MOVFW AHOUR_Z
	MOVWF SYS_TMP1
	MOVLW 10
	MOVWF SYS_TMP2
	MOVLW HIGH SYSMUL8
	MOVWF PCLATH
	CALL SYSMUL8
	MOVLW HIGH LABEL_AF21
	MOVWF PCLATH
LABEL_AF21
	MOVFW SYS_TMP3
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	MOVWF S48

LABEL_AF21_EXIT
;***************************************************
;AF22
;***************************************************

	MOVFW S48
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	ADDWF AHOUR_E,W
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	MOVWF S49

LABEL_AF22_EXIT
;***************************************************
; Vergleich -> IF22
;***************************************************

	MOVLW 0
	SUBWF S49,W	; F - W -> W

LABEL_IF22_CHECK
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BTFSS STATUS,CARRY	; Test auf -> >=
	GOTO LABEL_IF22_FALSE

LABEL_IF22_TRUE
	BSF S73,6
	GOTO LABEL_IF22_EXIT

LABEL_IF22_FALSE
	BCF S73,6

LABEL_IF22_EXIT
;***************************************************
; Vergleich -> IF23
;***************************************************

	MOVLW 6
	SUBWF S49,W	; F - W -> W

LABEL_IF23_CHECK
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BTFSC STATUS,CARRY	; Test auf -> <
	GOTO LABEL_IF23_FALSE

LABEL_IF23_TRUE
	BSF S73,7
	GOTO LABEL_IF23_EXIT

LABEL_IF23_FALSE
	BCF S73,7

LABEL_IF23_EXIT
;***************************************************
; UND - Gatter -> LG65
;***************************************************

LABEL_LG65_1
	BTFSS S73,6
	GOTO LABEL_LG65_FALSE
LABEL_LG65_2
	BTFSS S73,7
	GOTO LABEL_LG65_FALSE

LABEL_LG65_TRUE
	BSF S74,0
	GOTO LABEL_LG65_ENDE
LABEL_LG65_FALSE
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BCF S74,0
LABEL_LG65_ENDE
;***************************************************
; ODER - Gatter -> LG66
;***************************************************

LABEL_LG66_1
	BTFSC S73,5
	GOTO LABEL_LG66_TRUE
LABEL_LG66_2
	BTFSC S74,0
	GOTO LABEL_LG66_TRUE
	BCF STATUS,RP0	; Bank 2

LABEL_LG66_FALSE
	BCF S72,2
	GOTO LABEL_LG66_ENDE
LABEL_LG66_TRUE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BSF S72,2
LABEL_LG66_ENDE
;***************************************************
; Call subroutine T05
;***************************************************


	MOVLW LOW T05
	MOVWF SYS_TMP1
	MOVLW HIGH T05
	MOVWF SYS_TMP2

	MOVFW S50
	ADDWF SYS_TMP1,F
	BTFSC STATUS,CARRY
	INCF SYS_TMP2,F

	MOVLW HIGH SYSTABJMP	; set page
	MOVWF PCLATH
	CALL SYSTABJMP

	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	MOVWF S32

	BSF INTCON,GIE
	BSF PCLATH,3	; Page 3
	BSF PCLATH,4	; Page 3
;***************************************************
; Vergleich -> IF24
;***************************************************

	MOVFW S36
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	SUBWF HE0,W	; F - W -> W

LABEL_IF24_CHECK
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BTFSC STATUS,ZERO	; Test auf -> <>
	GOTO LABEL_IF24_FALSE

LABEL_IF24_TRUE
	BSF S74,1
	GOTO LABEL_IF24_EXIT

LABEL_IF24_FALSE
	BCF S74,1

LABEL_IF24_EXIT
;***************************************************
; Vergleich -> IF25
;***************************************************

	MOVFW S32
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	SUBWF MU0,W	; F - W -> W

LABEL_IF25_CHECK
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BTFSC STATUS,ZERO	; Test auf -> <>
	GOTO LABEL_IF25_FALSE

LABEL_IF25_TRUE
	BSF S74,2
	GOTO LABEL_IF25_EXIT

LABEL_IF25_FALSE
	BCF S74,2

LABEL_IF25_EXIT
;***************************************************
; ODER - Gatter -> LG67
;***************************************************

LABEL_LG67_1
	BTFSC S74,1
	GOTO LABEL_LG67_TRUE
LABEL_LG67_2
	BTFSC S74,2
	GOTO LABEL_LG67_TRUE
	BCF STATUS,RP0	; Bank 2

LABEL_LG67_FALSE
	BCF S64,2
	GOTO LABEL_LG67_ENDE
LABEL_LG67_TRUE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BSF S64,2
LABEL_LG67_ENDE
;***************************************************
; Call subroutine TAB6
;***************************************************


	MOVLW LOW TAB6
	MOVWF SYS_TMP1
	MOVLW HIGH TAB6
	MOVWF SYS_TMP2

	BCF STATUS,RP1	; Bank 0
	MOVFW ADAYOFWEEK
	ADDWF SYS_TMP1,F
	BTFSC STATUS,CARRY
	INCF SYS_TMP2,F

	MOVLW HIGH SYSTABJMP	; set page
	MOVWF PCLATH
	CALL SYSTABJMP

	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	MOVWF S51

	BSF INTCON,GIE
	BSF PCLATH,3	; Page 3
	BSF PCLATH,4	; Page 3
;***************************************************
; Vergleich -> IF26
;***************************************************

	MOVLW 0
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	SUBWF AHOUR_Z,W	; F - W -> W

LABEL_IF26_CHECK
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BTFSS STATUS,ZERO	; Test auf -> =
	GOTO LABEL_IF26_FALSE

LABEL_IF26_TRUE
	BSF S74,3
	GOTO LABEL_IF26_EXIT

LABEL_IF26_FALSE
	BCF S74,3

LABEL_IF26_EXIT
;***************************************************
; Vergleich -> IF27
;***************************************************

	MOVLW 6
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	SUBWF AHOUR_E,W	; F - W -> W

LABEL_IF27_CHECK
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BTFSC STATUS,CARRY	; Test auf -> <
	GOTO LABEL_IF27_FALSE

LABEL_IF27_TRUE
	BSF S74,4
	GOTO LABEL_IF27_EXIT

LABEL_IF27_FALSE
	BCF S74,4

LABEL_IF27_EXIT
;***************************************************
; Vergleich -> IF28
;***************************************************

	MOVLW 6
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	SUBWF AHOUR_E,W	; F - W -> W

LABEL_IF28_CHECK
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BTFSC STATUS,CARRY	; Test auf -> <
	GOTO LABEL_IF28_FALSE

LABEL_IF28_TRUE
	BSF S74,5
	GOTO LABEL_IF28_EXIT

LABEL_IF28_FALSE
	BCF S74,5

LABEL_IF28_EXIT
;***************************************************
; UND - Gatter -> LG68
;***************************************************

LABEL_LG68_1
	BTFSS S74,3
	GOTO LABEL_LG68_FALSE
LABEL_LG68_2
	BTFSS S74,4
	GOTO LABEL_LG68_FALSE

LABEL_LG68_TRUE
	BSF S74,6
	GOTO LABEL_LG68_ENDE
LABEL_LG68_FALSE
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BCF S74,6
LABEL_LG68_ENDE
;***************************************************
; UND - Gatter -> LG69
;***************************************************

LABEL_LG69_1
	BTFSS S74,6
	GOTO LABEL_LG69_FALSE
LABEL_LG69_2
	BTFSS S74,5
	GOTO LABEL_LG69_FALSE

LABEL_LG69_TRUE
	BSF S74,7
	GOTO LABEL_LG69_ENDE
LABEL_LG69_FALSE
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BCF S74,7
LABEL_LG69_ENDE
;***************************************************
; Verteiler -> BV16
;***************************************************

	MOVLW 0 
	BTFSC S74,7	; IN0
	IORLW 1
	MOVWF S52	; OUT

;***************************************************
; Multiplexer -> MX74
;***************************************************

	CLRF SYS_TMP1
	MOVFW S52
	BTFSS STATUS,ZERO
	GOTO LABEL_MX74_CHECKCONTROL1

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	MOVFW ADAYOFWEEK
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	MOVWF S36
	GOTO LABEL_MX74_END

LABEL_MX74_CHECKCONTROL1
	INCF SYS_TMP1,F
	MOVFW S52
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX74_CHECKCONTROL2

	MOVFW S51
	MOVWF S36
	GOTO LABEL_MX74_END

LABEL_MX74_CHECKCONTROL2

LABEL_MX74_END

;***************************************************
; Zähler -> ZV16
;***************************************************

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS S75,0	; Reset ?
	GOTO LABEL_ZV16_COUNT
	BSF STATUS,RP0	; Bank 3
	CLRF ZV16
	GOTO LABEL_ZV16_SETOUT

LABEL_ZV16_COUNT

; Test auf positive Flanke

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,1
	GOTO LABEL_ZV16_SETFD
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BTFSC ZV16_FD,0
	GOTO LABEL_ZV16_SETFD

	BSF ZV16_FD,0


	BCF STATUS,RP0	; Bank 2
	BTFSC S75,1	; Vorwärts oder Rückwärts ?
	GOTO LABEL_ZV16_BACKWARD

	BSF STATUS,RP0	; Bank 3
	INCF ZV16,F
	GOTO LABEL_ZV16_SETOUT

LABEL_ZV16_BACKWARD
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	DECF ZV16,F

LABEL_ZV16_SETOUT


LABEL_ZV16_SETFD

; Test auf negative Flanke

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSC S55,1
	GOTO LABEL_ZV16_EXIT
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BCF ZV16_FD,0

LABEL_ZV16_EXIT

;***************************************************
; Schmitt-Trigger 8-Bit -> ST10
;***************************************************

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S75,0	; Ausgang gesetzt ?
	GOTO LABEL_ST10_MH	; dann mit Hysterese ?

	MOVLW 60
	GOTO LABEL_ST10_TEST

LABEL_ST10_MH

	MOVLW 60
LABEL_ST10_TEST

	BSF STATUS,RP0	; Bank 3
	SUBWF ZV16,W
	BCF STATUS,RP0	; Bank 2
	BTFSS STATUS,CARRY
	GOTO LABEL_ST10_RESET

	BSF S75,0	; if greater or equal
	GOTO LABEL_ST10_ENDE

LABEL_ST10_RESET
	BCF S75,0	; if less
LABEL_ST10_ENDE

;***************************************************
; RS-FLIP-FLOP -> RS7
;***************************************************

	BTFSC S75,1
	GOTO LABEL_RS7_RESET
	BTFSS S75,0
	GOTO LABEL_RS7_ENDE
	BCF STATUS,RP1	; Bank 0
	BSF S55,7	; Ausgang setzen
	GOTO LABEL_RS7_ENDE
LABEL_RS7_RESET
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BCF S55,7	; Ausgang zurücksetzen
LABEL_RS7_ENDE

;***************************************************
; GND
;***************************************************

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S75,1	; immer Low

;***************************************************
; One Shot -> OS37
;***************************************************


	BTFSC S75,2
	GOTO LABEL_OS37_1
	BSF STATUS,RP0	; Bank 3
	BTFSC OS37_FD,0
	GOTO LABEL_OS37_1
	BSF OS37_FD,0
	BCF STATUS,RP0	; Bank 2
	BSF S62,0
	GOTO LABEL_OS37_2
LABEL_OS37_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S62,0
	BTFSS S75,2
	GOTO LABEL_OS37_2
	BSF STATUS,RP0	; Bank 3
	BCF OS37_FD,0
LABEL_OS37_2
;***************************************************
; One Shot -> OS38
;***************************************************


	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,7
	GOTO LABEL_OS38_1
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BTFSC OS38_FD,0
	GOTO LABEL_OS38_1
	BSF OS38_FD,0
	BCF STATUS,RP0	; Bank 2
	BSF S75,2
	GOTO LABEL_OS38_2
LABEL_OS38_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S75,2
	BCF STATUS,RP1	; Bank 0
	BTFSC S55,7
	GOTO LABEL_OS38_2
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BCF OS38_FD,0
LABEL_OS38_2
;***************************************************
; One Shot -> OS39
;***************************************************


	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S75,6
	GOTO LABEL_OS39_1
	BSF STATUS,RP0	; Bank 3
	BTFSC OS39_FD,0
	GOTO LABEL_OS39_1
	BSF OS39_FD,0
	BCF STATUS,RP0	; Bank 2
	BSF S62,3
	GOTO LABEL_OS39_2
LABEL_OS39_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S62,3
	BTFSS S75,6
	GOTO LABEL_OS39_2
	BSF STATUS,RP0	; Bank 3
	BCF OS39_FD,0
LABEL_OS39_2
;***************************************************
; GND
;***************************************************

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S63,6	; immer Low

;***************************************************
; LCD -> LT31
;***************************************************

; test of positiv edge

	BSF STATUS,RP0	; Bank 3
	BTFSC LT31_FD,0
	GOTO LABEL_LT31_SETFD
	BCF STATUS,RP0	; Bank 2
	BTFSS S60,0
	GOTO LABEL_LT31_SETFD


	MOVLW 3
	MOVWF SYS_TMP1
	MOVLW 2
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVFW ZV8
	MOVWF SYS_TMP4
	CLRF SYS_TMP5

	BCF SYS_TMP10,0
	MOVLW 3
	MOVWF SYS_TMP9
	MOVLW HIGH LCD_LB1_DEZO100	; set page
	MOVWF PCLATH
	CALL LCD_LB1_DEZO100
	BSF PCLATH,3	; Page 3
	BSF PCLATH,4	; Page 3
LABEL_LT31_SETFD

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS S60,0
	GOTO LABEL_LT31_SETFD2
	BSF STATUS,RP0	; Bank 3
	BSF LT31_FD,0
	GOTO LABEL_LT31_END
LABEL_LT31_SETFD2
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BCF LT31_FD,0
LABEL_LT31_END

;***************************************************
; One Shot -> OS40
;***************************************************


	BCF STATUS,RP0	; Bank 2
	BTFSC S63,3
	GOTO LABEL_OS40_1
	BSF STATUS,RP0	; Bank 3
	BTFSC OS40_FD,0
	GOTO LABEL_OS40_1
	BSF OS40_FD,0
	BCF STATUS,RP0	; Bank 2
	BSF S75,3
	GOTO LABEL_OS40_2
LABEL_OS40_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S75,3
	BTFSS S63,3
	GOTO LABEL_OS40_2
	BSF STATUS,RP0	; Bank 3
	BCF OS40_FD,0
LABEL_OS40_2
;***************************************************
; One Shot -> OS41
;***************************************************


	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S62,3
	GOTO LABEL_OS41_1
	BSF STATUS,RP0	; Bank 3
	BTFSC OS41_FD,0
	GOTO LABEL_OS41_1
	BSF OS41_FD,0
	BCF STATUS,RP0	; Bank 2
	BSF S61,7
	GOTO LABEL_OS41_2
LABEL_OS41_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S61,7
	BTFSS S62,3
	GOTO LABEL_OS41_2
	BSF STATUS,RP0	; Bank 3
	BCF OS41_FD,0
LABEL_OS41_2
;***************************************************
; One Shot -> OS42
;***************************************************


	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC S56,0
	GOTO LABEL_OS42_1
	BSF STATUS,RP1	; Bank 3
	BTFSC OS42_FD,0
	GOTO LABEL_OS42_1
	BSF OS42_FD,0
	BCF STATUS,RP0	; Bank 2
	BSF S75,4
	GOTO LABEL_OS42_2
LABEL_OS42_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S75,4
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSS S56,0
	GOTO LABEL_OS42_2
	BSF STATUS,RP1	; Bank 3
	BCF OS42_FD,0
LABEL_OS42_2
;***************************************************
; One Shot -> OS43
;***************************************************


	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S75,4
	GOTO LABEL_OS43_1
	BSF STATUS,RP0	; Bank 3
	BTFSC OS43_FD,0
	GOTO LABEL_OS43_1
	BSF OS43_FD,0
	BCF STATUS,RP1	; Bank 1
	BSF S58,6
	GOTO LABEL_OS43_2
LABEL_OS43_1
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF S58,6
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSS S75,4
	GOTO LABEL_OS43_2
	BSF STATUS,RP0	; Bank 3
	BCF OS43_FD,0
LABEL_OS43_2
;***************************************************
; UND - Gatter -> LG70
;***************************************************

LABEL_LG70_1
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,7
	GOTO LABEL_LG70_FALSE
LABEL_LG70_2
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BTFSS S76,2
	GOTO LABEL_LG70_FALSE

LABEL_LG70_TRUE
	BCF STATUS,RP0	; Bank 2
	BSF S75,6
	GOTO LABEL_LG70_ENDE
LABEL_LG70_FALSE
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S75,6
LABEL_LG70_ENDE
;***************************************************
; Zähler -> ZV17
;***************************************************

	BSF STATUS,RP0	; Bank 3
	BTFSS S76,1	; Reset ?
	GOTO LABEL_ZV17_COUNT
	CLRF ZV17
	GOTO LABEL_ZV17_SETOUT

LABEL_ZV17_COUNT

; Test auf positive Flanke

	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BTFSS S76,0
	GOTO LABEL_ZV17_SETFD
	BTFSC ZV17_FD,0
	GOTO LABEL_ZV17_SETFD

	BSF ZV17_FD,0


	BCF STATUS,RP0	; Bank 2
	BTFSC S75,1	; Vorwärts oder Rückwärts ?
	GOTO LABEL_ZV17_BACKWARD

	BSF STATUS,RP0	; Bank 3
	INCF ZV17,F
	GOTO LABEL_ZV17_SETOUT

LABEL_ZV17_BACKWARD
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	DECF ZV17,F

LABEL_ZV17_SETOUT


LABEL_ZV17_SETFD

; Test auf negative Flanke

	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BTFSC S76,0
	GOTO LABEL_ZV17_EXIT
	BCF ZV17_FD,0

LABEL_ZV17_EXIT

;***************************************************
; Schmitt-Trigger 8-Bit -> ST11
;***************************************************

	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BTFSC S76,1	; Ausgang gesetzt ?
	GOTO LABEL_ST11_MH	; dann mit Hysterese ?

	MOVLW 70
	GOTO LABEL_ST11_TEST

LABEL_ST11_MH

	MOVLW 70
LABEL_ST11_TEST

	SUBWF ZV17,W
	BTFSS STATUS,CARRY
	GOTO LABEL_ST11_RESET

	BSF S76,1	; if greater or equal
	GOTO LABEL_ST11_ENDE

LABEL_ST11_RESET
	BCF S76,1	; if less
LABEL_ST11_ENDE

;***************************************************
; UND - Gatter -> LG71
;***************************************************

LABEL_LG71_1
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,7
	GOTO LABEL_LG71_FALSE
LABEL_LG71_2
	BTFSS S55,1
	GOTO LABEL_LG71_FALSE

LABEL_LG71_TRUE
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BSF S76,0
	GOTO LABEL_LG71_ENDE
LABEL_LG71_FALSE
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BCF S76,0
LABEL_LG71_ENDE
;***************************************************
; ODER - Gatter -> LG72
;***************************************************

LABEL_LG72_1
	BCF STATUS,RP1	; Bank 1
	BTFSC S59,3
	GOTO LABEL_LG72_TRUE
LABEL_LG72_2
	BSF STATUS,RP1	; Bank 3
	BTFSC S76,1
	GOTO LABEL_LG72_TRUE

LABEL_LG72_FALSE
	BCF S76,2
	GOTO LABEL_LG72_ENDE
LABEL_LG72_TRUE
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BSF S76,2
LABEL_LG72_ENDE
;***************************************************
; One Shot -> OS44
;***************************************************


	BTFSS S76,3
	GOTO LABEL_OS44_1
	BTFSC OS44_FD,0
	GOTO LABEL_OS44_1
	BSF OS44_FD,0
	BCF STATUS,RP0	; Bank 2
	BSF S64,1
	GOTO LABEL_OS44_2
LABEL_OS44_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S64,1
	BSF STATUS,RP0	; Bank 3
	BTFSC S76,3
	GOTO LABEL_OS44_2
	BCF OS44_FD,0
LABEL_OS44_2
;***************************************************
; One Shot -> OS45
;***************************************************


	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BTFSC S75,5
	GOTO LABEL_OS45_1
	BSF STATUS,RP0	; Bank 3
	BTFSC OS45_FD,0
	GOTO LABEL_OS45_1
	BSF OS45_FD,0
	BCF STATUS,RP0	; Bank 2
	BSF S75,7
	GOTO LABEL_OS45_2
LABEL_OS45_1
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	BCF S75,7
	BTFSS S75,5
	GOTO LABEL_OS45_2
	BSF STATUS,RP0	; Bank 3
	BCF OS45_FD,0
LABEL_OS45_2
;***************************************************
; Multiplexer -> MX75
;***************************************************

	CLRF SYS_TMP1
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	MOVFW S54
	BTFSS STATUS,ZERO
	GOTO LABEL_MX75_CHECKCONTROL1

	BCF STATUS,RP0	; Bank 2
	MOVFW T0
	MOVWF T0
	MOVFW T0_HI
	MOVWF T0_HI
	GOTO LABEL_MX75_END

LABEL_MX75_CHECKCONTROL1
	INCF SYS_TMP1,F
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	MOVFW S54
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX75_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 1
	MOVFW S5
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVWF T0
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW S5_HI
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVWF T0_HI
	GOTO LABEL_MX75_END

LABEL_MX75_CHECKCONTROL2

LABEL_MX75_END

;***************************************************
; Multiplexer -> MX76
;***************************************************

	CLRF SYS_TMP1
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	MOVFW S54
	BTFSS STATUS,ZERO
	GOTO LABEL_MX76_CHECKCONTROL1

	BCF STATUS,RP0	; Bank 2
	MOVFW T1
	MOVWF T1
	MOVFW T1_HI
	MOVWF T1_HI
	GOTO LABEL_MX76_END

LABEL_MX76_CHECKCONTROL1
	INCF SYS_TMP1,F
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	MOVFW S54
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX76_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 1
	MOVFW S4
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVWF T1
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW S4_HI
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVWF T1_HI
	GOTO LABEL_MX76_END

LABEL_MX76_CHECKCONTROL2

LABEL_MX76_END

;***************************************************
; Multiplexer -> MX77
;***************************************************

	CLRF SYS_TMP1
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	MOVFW S54
	BTFSS STATUS,ZERO
	GOTO LABEL_MX77_CHECKCONTROL1

	BCF STATUS,RP0	; Bank 2
	MOVFW T2
	MOVWF T2
	MOVFW T2_HI
	MOVWF T2_HI
	GOTO LABEL_MX77_END

LABEL_MX77_CHECKCONTROL1
	INCF SYS_TMP1,F
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	MOVFW S54
	SUBWF SYS_TMP1,W
	BTFSS STATUS,ZERO
	GOTO LABEL_MX77_CHECKCONTROL2

	BCF STATUS,RP1	; Bank 1
	MOVFW S6
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVWF T2
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW S6_HI
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	MOVWF T2_HI
	GOTO LABEL_MX77_END

LABEL_MX77_CHECKCONTROL2

LABEL_MX77_END

;***************************************************
; One Shot -> OS46
;***************************************************


	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC S58,5
	GOTO LABEL_OS46_1
	BSF STATUS,RP1	; Bank 3
	BTFSC OS46_FD,0
	GOTO LABEL_OS46_1
	BSF OS46_FD,0
	BCF STATUS,RP1	; Bank 1
	BSF S58,1
	GOTO LABEL_OS46_2
LABEL_OS46_1
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BCF S58,1
	BTFSS S58,5
	GOTO LABEL_OS46_2
	BSF STATUS,RP1	; Bank 3
	BCF OS46_FD,0
LABEL_OS46_2
;***************************************************
; Verteiler -> BV17
;***************************************************

	MOVLW 0 
	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC S58,4	; IN0
	IORLW 1
	BSF STATUS,RP1	; Bank 3
	MOVWF S18	; OUT

;***************************************************
; Verteiler -> BV18
;***************************************************

	MOVLW 0 
	BCF STATUS,RP1	; Bank 1
	BTFSC S58,5	; IN0
	IORLW 1
	BSF STATUS,RP1	; Bank 3
	MOVWF S54	; OUT

;***************************************************
; Zähler -> T0
;***************************************************

	BCF STATUS,RP1	; Bank 1
	BTFSS S58,6	; Reset ?
	GOTO LABEL_T0_COUNT
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	CLRF T0
	CLRF T0_HI
	GOTO LABEL_T0_SETOUT

LABEL_T0_COUNT

; Test auf positive Flanke

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSS S58,0
	GOTO LABEL_T0_SETFD
	BSF STATUS,RP1	; Bank 3
	BTFSC T0_FD,0
	GOTO LABEL_T0_SETFD

	BSF T0_FD,0


	BCF STATUS,RP1	; Bank 1
	BTFSC S58,0	; Vorwärts oder Rückwärts ?
	GOTO LABEL_T0_BACKWARD

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	INCFSZ T0,F
	GOTO LABEL_T0_SETOUT
	INCF T0_HI,F
	GOTO LABEL_T0_SETOUT

LABEL_T0_BACKWARD
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	DECF T0,F
	INCFSZ T0,W
	GOTO LABEL_T0_SETOUT
	DECF T0_HI,F

LABEL_T0_SETOUT


LABEL_T0_SETFD

; Test auf negative Flanke

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC S58,0
	GOTO LABEL_T0_EXIT
	BSF STATUS,RP1	; Bank 3
	BCF T0_FD,0

LABEL_T0_EXIT

;***************************************************
; Zähler -> T1
;***************************************************

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSS S58,6	; Reset ?
	GOTO LABEL_T1_COUNT
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	CLRF T1
	CLRF T1_HI
	GOTO LABEL_T1_SETOUT

LABEL_T1_COUNT

; Test auf positive Flanke

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSS S58,0
	GOTO LABEL_T1_SETFD
	BSF STATUS,RP1	; Bank 3
	BTFSC T1_FD,0
	GOTO LABEL_T1_SETFD

	BSF T1_FD,0


	BCF STATUS,RP1	; Bank 1
	BTFSC S58,0	; Vorwärts oder Rückwärts ?
	GOTO LABEL_T1_BACKWARD

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	INCFSZ T1,F
	GOTO LABEL_T1_SETOUT
	INCF T1_HI,F
	GOTO LABEL_T1_SETOUT

LABEL_T1_BACKWARD
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	DECF T1,F
	INCFSZ T1,W
	GOTO LABEL_T1_SETOUT
	DECF T1_HI,F

LABEL_T1_SETOUT


LABEL_T1_SETFD

; Test auf negative Flanke

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC S58,0
	GOTO LABEL_T1_EXIT
	BSF STATUS,RP1	; Bank 3
	BCF T1_FD,0

LABEL_T1_EXIT

;***************************************************
; Zähler -> T2
;***************************************************

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSS S58,6	; Reset ?
	GOTO LABEL_T2_COUNT
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	CLRF T2
	CLRF T2_HI
	GOTO LABEL_T2_SETOUT

LABEL_T2_COUNT

; Test auf positive Flanke

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSS S58,0
	GOTO LABEL_T2_SETFD
	BSF STATUS,RP1	; Bank 3
	BTFSC T2_FD,0
	GOTO LABEL_T2_SETFD

	BSF T2_FD,0


	BCF STATUS,RP1	; Bank 1
	BTFSC S58,0	; Vorwärts oder Rückwärts ?
	GOTO LABEL_T2_BACKWARD

	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	INCFSZ T2,F
	GOTO LABEL_T2_SETOUT
	INCF T2_HI,F
	GOTO LABEL_T2_SETOUT

LABEL_T2_BACKWARD
	BCF STATUS,RP0	; Bank 2
	BSF STATUS,RP1	; Bank 2
	DECF T2,F
	INCFSZ T2,W
	GOTO LABEL_T2_SETOUT
	DECF T2_HI,F

LABEL_T2_SETOUT


LABEL_T2_SETFD

; Test auf negative Flanke

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	BTFSC S58,0
	GOTO LABEL_T2_EXIT
	BSF STATUS,RP1	; Bank 3
	BCF T2_FD,0

LABEL_T2_EXIT

;***************************************************
; LCD -> LT32
;***************************************************

; test of positiv edge

	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BTFSC LT32_FD,0
	GOTO LABEL_LT32_SETFD
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,1
	GOTO LABEL_LT32_SETFD


	MOVLW 1
	MOVWF SYS_TMP1
	MOVLW 3
	MOVWF SYS_TMP2

	MOVLW HIGH LCD_LB1_GOTOXY	; set page
	MOVWF PCLATH
	CALL LCD_LB1_GOTOXY

	BSF STATUS,RP0	; Bank 1
	BCF STATUS,RP1	; Bank 1
	MOVFW ZV1
	MOVWF SYS_TMP4
	MOVFW ZV1_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
	BSF PCLATH,3	; Page 3
	BSF PCLATH,4	; Page 3
LABEL_LT32_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,1
	GOTO LABEL_LT32_SETFD2
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BSF LT32_FD,0
	GOTO LABEL_LT32_END
LABEL_LT32_SETFD2
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BCF LT32_FD,0
LABEL_LT32_END

;***************************************************
; LCD -> LT33
;***************************************************

; test of positiv edge

	BTFSC LT33_FD,0
	GOTO LABEL_LT33_SETFD
	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,4
	GOTO LABEL_LT33_SETFD


	MOVLW 9
	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 ADAYOFWEEK
	MOVWF SYS_TMP4
	CLRF SYS_TMP5

	BSF SYS_TMP10,0
	MOVLW 3
	MOVWF SYS_TMP9
	MOVLW HIGH LCD_LB1_DEZO100	; set page
	MOVWF PCLATH
	CALL LCD_LB1_DEZO100
	BSF PCLATH,3	; Page 3
	BSF PCLATH,4	; Page 3
LABEL_LT33_SETFD

	BCF STATUS,RP0	; Bank 0
	BCF STATUS,RP1	; Bank 0
	BTFSS S55,4
	GOTO LABEL_LT33_SETFD2
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BSF LT33_FD,0
	GOTO LABEL_LT33_END
LABEL_LT33_SETFD2
	BSF STATUS,RP0	; Bank 3
	BSF STATUS,RP1	; Bank 3
	BCF LT33_FD,0
LABEL_LT33_END

;****************************************

	BCF PCLATH,3	; Page 0
	BCF PCLATH,4	; Page 0
	GOTO MAIN






















TAB_LT11
	RETLW 32	;  
	RETLW 32	;  
	RETLW 0	; end


TAB_LT12
	RETLW 115	; s
	RETLW 95	; _
	RETLW 0	; end




TAB_LT14
	RETLW 32	;  
	RETLW 0	; end








TAB_LT18
	RETLW 32	;  
	RETLW 65	; A
	RETLW 0	; end








TAB_LT22
	RETLW 32	;  
	RETLW 85	; U
	RETLW 0	; end






TAB_LT25
	RETLW 72	; H
	RETLW 110	; n
	RETLW 97	; a
	RETLW 112	; p
	RETLW 0	; end


TAB_LT26
	RETLW 77	; M
	RETLW 117	; u
	RETLW 115	; s
	RETLW 122	; z
	RETLW 0	; end


TAB_LT27
	RETLW 85	; U
	RETLW 114	; r
	RETLW 101	; e
	RETLW 115	; s
	RETLW 0	; end


TAB_LT28
	RETLW 110	; n
	RETLW 101	; e
	RETLW 122	; z
	RETLW 0	; end


TAB_LT29
	RETLW 32	;  
	RETLW 32	;  
	RETLW 32	;  
	RETLW 32	;  
	RETLW 0	; end



;***************************************************
; Table -> T04
;***************************************************

T04

	RETLW 1	; // INDEX 0
	RETLW 2	; // INDEX 1
	RETLW 4	; // INDEX 2
	RETLW 4	; // INDEX 3
	RETLW 4	; // INDEX 4
	RETLW 5	; // INDEX 5
	RETLW 6	; // INDEX 6
	RETLW 7	; // INDEX 7

;***************************************************
; Table -> T05
;***************************************************

T05

	RETLW 0	; // INDEX 0
	RETLW 1	; // INDEX 1
	RETLW 2	; // INDEX 2
	RETLW 2	; // INDEX 3
	RETLW 3	; // INDEX 4
	RETLW 3	; // INDEX 5

;***************************************************
; Table -> TAB6
;***************************************************

TAB6

	RETLW 6	; // INDEX 0
	RETLW 0	; // INDEX 1
	RETLW 1	; // INDEX 2
	RETLW 2	; // INDEX 3
	RETLW 3	; // INDEX 4
	RETLW 4	; // INDEX 5
	RETLW 5	; // INDEX 6
	RETLW 6	; // INDEX 7








	END

