
	list      p=16F877            
	#include <p16F877.inc>
	include "base.inc"  
	__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_OFF & _XT_OSC & _LVP_OFF

                ERRORLEVEL -302

;------------------------------------------------------------------------------
;=================================== Define ===================================

#define		E		PORTE,0			; LCD adat vagy parancs kimenet
#define		RS		PORTE,1			; LCD engedélyező kimenet
#define		Lcd		PORTD			; Lcd port kimenet


#define		CLKFRQ		D'4000000'		; ÓRAJEL 4 MHZ
#define		BAUD(X)		(CLKFRQ/(D'16'*X))-1
#define		INI_TXSTA 	B'00100100'		; 8 BIT-ES ASZINKRON ÁTVITEL
#define		INI_RCSTA 	B'10010000'		; 8 BIT-ES VÉTEL SOROS VÉTEL ENGED.
#define 	Soros_KI	PORTC,6			; TX
#define 	Soros_BE	PORTC,7			; RX
#define		Soros_eng	PORTE,2			; Jelzi a progi számára, hogy az LCD modul
							; csatlakoztatva van és müködésre kész.
#define		Progi		PORTC,5			; Ha a progi csatlakozott és kapott '$0' akkor kiírja,
							; hogy PIC OK

#define		over_temp	PORTA,5
#define		shdn		PORTA,4

#define		G_Menu		PORTB,4			; Menu gomb
#define		G1		PORTB,3			; kijelző gomb 1
#define		G2		PORTB,2			; kijelző gomb 2
#define		G3		PORTB,1			; kijelző gomb 3
#define		G4		PORTB,0			; kijelző gomb 4

xtal_freq       EQU     	4000000			; oscillátor frekvencia
core_freq       EQU    		 xtal_freq/4		; Az MCU magjának frekvenciája.

#define         I2C_SCL         PORTC,3 		; out
#define         I2C_SDA         PORTC,4 	        ; in/out 

#define		controller_w	b'10010000'
#define		controller_r	b'10010001'
#define		cpu_w		b'10011000'
#define		cpu_r		b'10011001'
#define		power_w		b'10010100'
#define		power_r		b'10010101'

;#define		hdd0_w		b'10011100'	; nem használt!
;#define		hdd0_r		b'10011101'	; csak probára!

#define		case_w		b'10011100'
#define		case_r		b'10011101'
#define		hdd0_w		b'10010010'
#define		hdd0_r		b'10010011'
;#define		hdd1_w		b'10011010'
;#define		hdd1_r		b'10011011'
#define		vga_w		b'10010110'
#define		vga_r		b'10010111'

#define		cpu_temp_1	d'42'			; cpu 40 fok	
#define		cpu_temp_2	d'44'			; cpu 44 fok
#define		cpu_rpm1	d'32'			; cpu fan sebbesség 1
#define		cpu_rpm2	d'34'			; cpu fan sebbesség 2
#define		cpu_rpm3	d'35'			; cpu fan sebbesség 3
#define		power_temp_1	d'35'			; táp 35 fok
#define		power_temp_2	d'38'			; táp 38 fok
#define		power_rpm1	d'33'			; power fan sebbesség 1
#define		power_rpm2	d'34'			; power fan sebbesség 2 
#define		power_rpm3	d'35'			; power fan sebbesség 3
#define		cpu_over_temp	d'50'			; - CPU -
#define		cpu_hyst	d'20'
#define		cpu_hyst_l	d'48'			; hyst lo
#define		cpu_hyst_h	d'52'			; hyst hi
#define		power_ower_temp	d'46'			; - Power -
#define		power_hyst	d'20'
#define		power_hyst_l	d'44'			; hyst lo
#define		power_hyst_h	d'48'			; hyst hi
#define		vga_ower_temp	d'45'			; - VGA -
#define		vga_hyst	d'20'
#define		vga_hyst_l	d'46'			; hyst lo
#define		vga_hyst_h	d'47'			; hyst hi
#define		vga_temp_1	d'42'
#define		temp_reg	b'00000000'
#define		config_reg	b'00000001'		; Config reg
#define		T_hyst		b'00000010'		; T_hyst reg
#define		T_set		b'00000011'		; T_set reg
#define		config		b'00000100'		; Config értéke
#define		LSB_temp	b'00000000'		; LSB temp értéke
		
slave_r		equ	22h
slave_w		equ	23h
pointer		equ	24h
data1		equ	25h
data2		equ	26h
temp1		equ	27h
temp2		equ	28h
tempkar1	equ	29h
tempkar2	equ	30h
T1		equ	31h
Timer1		equ	32h
Timer2          equ	33h
save_temp1	equ	34h
save_temp2	equ	35h
kikapcs_szaml	equ	36h

SAC1		EQU	40h
SAC2		EQU	41h
SAC3		EQU	42h
SAC4		EQU	43h
ARG1		EQU	44h
ARG2		EQU	45h
ARG3		EQU	46h
ARG4		EQU	47h
REM1		EQU	48h
REM2		EQU	49h
REM3		EQU	4Ah
REM4		EQU	4Bh
LOOP		EQU	4Ch

;------------------------------------------------------------------------------

		CBLOCK 0x0C		; definicios blokk kezdete

		ENDC			; definicios blokk vége

;------------------------------------------------------------------------------
;==================================== Start ===================================
; Portok beállításas
Boot
		ORG	0
 		NOP
Start
		movlw	b'11111111'
		banksel	ADCON1
		movwf	ADCON1	
 		movlw	B'00101111'
		banksel	TRISA 
		movwf	TRISA 
		banksel	PORTA 
		clrf	PORTA 
		movlw	B'11111111'
		banksel	TRISB
		movwf	TRISB
		banksel	PORTB
		clrf	PORTB 
		movlw	B'10111000'
		banksel	TRISC
		movwf	TRISC
		banksel	PORTC
		clrf	PORTC
		movlw	B'00000000'
		banksel	TRISD
		movwf	TRISD
		banksel	PORTD
		clrf	PORTD	
		movlw	B'00000000'
		banksel	TRISE
		movwf	TRISE
		banksel	PORTE
		clrf	PORTE

		bcf	shdn
;------------------------------------------------------------------------------ 
; Soros port inicializálása
Soros_ini
		BANKSEL	SPBRG		; SPBRG. TXSTA BANK 1 RCSTA BANK 0-BAN
		MOVLW	BAUD(D'9600')	
		MOVWF	SPBRG		; EZ 25 9600 BIT/SEC-NÉL
		MOVLW	INI_TXSTA	
		MOVWF	TXSTA
		BCF	Soros_KI	; TX KIMENET
		BSF	Soros_BE	; RX BEMENET
		BANKSEL	RCSTA	
		MOVLW	INI_RCSTA	
		MOVWF	RCSTA	
		MOVFW	RCREG
;------------------------------------------------------------------------------
; LCD kijelző inicializálása
Lcd_ini
		call	Kesl500		; 500 msec késleltetés, hogy az Lcd magához térjen
		movlw	b'00111000'	; Lcd beállitás: 8bit, 2sor, 5x7 pixel
		call	WriteLcd
		movlw	b'00001100'	; Kijelző ki, kurzor aláhuzása, kurzor villogása 
		call	WriteLcd
		movlw	b'00000001'	; Kijelző törlése
		call	WriteLcd
		call	Kesl2
		movlw	b'00000110'	; Karakter beviteli mod: növeli, kijelző eltolás ki.
		call	WriteLcd
		movlw	b'00000001'	; Kijelző törlése
		call	WriteLcd
		call	Kesl2		; Még több késleleteés
;------------------------------------------------------------------------------ 
; I2C busz inicializálása
		clrf	PIE1		; a periféria megszakítások tiltása 
		clrf	INTCON		
		movlw	b'10000000'
		BANKSEL	SSPSTAT
		movwf	SSPSTAT		; slew rate vezérlés tiltva
		movlw	b'00110001'	; SSPADD=49
		BANKSEL	SSPADD
		movwf	SSPADD
		movlw	B'00101000'	; SSPEN=1, soros port engedélyezés
		BANKSEL	SSPCON
		movwf	SSPCON		; I2C master, Fosc/(4*(SSPADD+1))
;------------------------------------------------------------------------------ 
pwm_1_modul_ini
		clrf	PIE1		; periféria megszakítások tiltása
		movlw	d'60'		; PR2=0xFF
		banksel	PR2
		movwf	PR2		; a Timer2 periódus regisztere
		bcf	STATUS,RP0	; bank0 kiválasztás
		clrf	CCP1CON
		clrf	CCP2CON
		clrf	TMR2
		movlw	d'34'		; cpu
		movwf	CCPR1L		; kitöltési tényező beállítás
		movlw	d'34'		; power
		movwf	CCPR2L		; kitöltési tényező beállítás
		movlw	0x2C
		movwf	CCP1CON		; PWM mód
		movwf	CCP2CON		; PWM mód
		bcf	T2CON,T2CKPS1	; TMR2 előosztó
		bcf	T2CON,T2CKPS0
		bsf 	T2CON,TMR2ON	; Timer2 engedélyezés
;------------------------------------------------------------------------------
		clrf	PIR1
		clrf	temp1
		clrf	temp2
		clrf	slave_w
		clrf	slave_r
		clrf	pointer
		clrf	data1
		clrf	data2
		bsf	Soros_eng
;------------------------------------------------------------------------------ 
		movlw	b'00000001'	; kijelző tőrlése
		call	WriteLcd
		call	kesl_sok
		call	Lcd_udv_txt1
 		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		movlw	b'00000001'	; kijelző tőrlése
		call	WriteLcd
		call	kesl_sok
		call	Lcd_udv_txt2
 		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		movlw	b'00000001'	; kijelző tőrlése
		call	WriteLcd
		call	kesl_sok
		call	Lcd_udv_txt3
		movlw	b'11000110'
		call	WriteLcd
		call	kesl_sok
		call	Lcd_udv_txt4
 		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok

config_sensor
; --=Power=--
		movlw	power_w
		banksel	slave_w
		movwf	slave_w		; slave irási cim
		movlw	config_reg	; config reg mutató
		banksel	pointer
		movwf	pointer		
		movlw	config		; config értéke
		banksel	data1
		movwf	data1	
		call	write_config

		movlw	T_set		; max temp reg mutató
		banksel	pointer
		movwf	pointer
		movlw	power_ower_temp	; max temp étréke
		banksel	data1
		movwf	data1
		movlw	LSB_temp	; LSB
		banksel	data2
		movwf	data2
		call	write

		movlw	T_hyst		; t hyst reg mutató
		banksel	pointer
		movwf	pointer
		movlw	power_hyst	; hiszterézis értéke
		banksel	data1
		movwf	data1
		movlw	LSB_temp	; LSB
		banksel	data2
		movwf	data2
		call	write
; --=CPU=--
		movlw	cpu_w
		banksel	slave_w
		movwf	slave_w		; slave irási cim
		movlw	config_reg	; config reg mutató
		banksel	pointer
		movwf	pointer		
		movlw	config		; config értéke
		banksel	data1
		movwf	data1	
		call	write_config

		movlw	T_set		; max temp reg mutató
		banksel	pointer
		movwf	pointer
		movlw	cpu_over_temp	; max temp étréke
		banksel	data1
		movwf	data1
		movlw	LSB_temp	; LSB
		banksel	data2
		movwf	data2
		call	write

		movlw	T_hyst		; t hyst reg mutató
		banksel	pointer
		movwf	pointer
		movlw	cpu_hyst	; hiszterézis értéke
		banksel	data1
		movwf	data1
		movlw	LSB_temp	; LSB
		banksel	data2
		movwf	data2
		call	write
; --=VGA=--
		movlw	vga_w
		banksel	slave_w
		movwf	slave_w		; slave irási cim
		movlw	config_reg	; config reg mutató
		banksel	pointer
		movwf	pointer		
		movlw	config		; config értéke
		banksel	data1
		movwf	data1	
		call	write_config

		movlw	T_set		; max temp reg mutató
		banksel	pointer
		movwf	pointer
		movlw	vga_ower_temp	; max temp étréke
		banksel	data1
		movwf	data1
		movlw	LSB_temp	; LSB
		banksel	data2
		movwf	data2
		call	write

		movlw	T_hyst		; t hyst reg mutató
		banksel	pointer
		movwf	pointer
		movlw	vga_hyst	; hiszterézis értéke
		banksel	data1
		movwf	data1
		call	write
; --=hdd0=--
; --=Controller=--

		movlw	b'00000001'		; Kijelző törlése
		call	WriteLcd
		call	Kesl2
		bsf	T1,0
		goto	ide
;------------------------------------------------------------------------------ 
Scan2
		btfss	G_Menu
		goto	$-1
		call	Kesl500	
		btfss	G_Menu
		goto	$-4
		movlw	b'00000001'		; Kijelző törlése
		call	WriteLcd
		call	Kesl2
		goto	ide

Scan		call	kesl_nagyon_sok
		btfss	G_Menu
		goto	menu
		btfss	G1
		goto	power_off
		btfss	G4
		goto	haz_meres
		call	kesl_nagyon_sok
		btfss	G_Menu
		goto	menu
		btfss	G1
		goto	power_off
		btfss	G4
		goto	haz_meres
		call	kesl_nagyon_sok
		btfss	G_Menu
		goto	menu
		btfss	G1
		goto	power_off
		btfss	G4
		goto	haz_meres
		call	kesl_nagyon_sok
		btfss	G_Menu
		goto	menu
		btfss	G1
		goto	power_off
		btfss	G4
		goto	haz_meres
		call	kesl_nagyon_sok
		btfss	G_Menu
		goto	menu
		btfss	G1
		goto	power_off
		btfss	G4
		goto	haz_meres
		call	kesl_nagyon_sok
		btfss	G_Menu
		goto	menu
		btfss	G1
		goto	power_off
		btfss	G4
		goto	haz_meres
		call	kesl_nagyon_sok
		btfss	G_Menu
		goto	menu
		btfss	G1
		goto	power_off
		btfss	G4
		goto	haz_meres
		call	kesl_nagyon_sok
		btfss	G_Menu
		goto	menu
		btfss	G1
		goto	power_off
		btfss	G4
		goto	haz_meres
		call	kesl_nagyon_sok
		btfss	G_Menu
		goto	menu
		btfss	G1
		goto	power_off
		btfss	G4
		goto	haz_meres
		call	kesl_nagyon_sok
		btfss	G_Menu
		goto	menu
		btfss	G1
		goto	power_off
		btfss	G4
		goto	haz_meres
		call	kesl_nagyon_sok
		btfss	G_Menu
		goto	menu
		btfss	G1
		goto	power_off
		btfss	G4
		goto	haz_meres
		call	kesl_nagyon_sok
		btfss	G_Menu
		goto	menu
		btfss	G1
		goto	power_off
		btfss	G4
		goto	haz_meres
		call	kesl_nagyon_sok
		btfss	G_Menu
		goto	menu
		btfss	G1
		goto	power_off
		btfss	G4
		goto	haz_meres
		call	kesl_nagyon_sok
		btfss	G_Menu
		goto	menu
		btfss	G1
		goto	power_off
		btfss	G4
		goto	haz_meres
		call	kesl_nagyon_sok
		btfss	G_Menu
		goto	menu
		btfss	G1
		goto	power_off
		btfss	G4
		goto	haz_meres
		call	kesl_nagyon_sok
		btfss	G_Menu
		goto	menu
		btfss	G1
		goto	power_off
		btfss	G4
		goto	haz_meres
		call	kesl_nagyon_sok
		btfss	G_Menu
		goto	menu
		btfss	G1
		goto	power_off
		btfss	G4
		goto	haz_meres
		call	kesl_nagyon_sok
		btfss	G_Menu
		goto	menu
		btfss	G1
		goto	power_off
		btfss	G4
		goto	haz_meres

		btfss	T1,0
		goto	ide
		movlw	b'00000001'		; Kijelző törlése
		call	WriteLcd
		bcf	T1,0
;------------------------------------------------------------------------------ 

ide	
		movlw	b'00000000'		; 0. karakterre ugrik
		call	WriteLcd
		btfss	over_temp
		call	over_temp_
cpu
		movlw	cpu_w
		movwf	slave_w
		movlw	cpu_r
		movwf	slave_r
		call	read
		call	cpu_
		call	_2pont
		movfw	temp1
		addlw	d'7'			; némi korrekciós tényező :)
		movwf	temp1
		call	eredmeny
		movfw	temp1
		btfss	T1,2
		goto	power__			; nincs automata pwm control
		goto	pwm1
power__
		movlw	b'10001010'		; 10. karakterre ugrik
		call	WriteLcd		
		movlw	power_w	
		movwf	slave_w
		movlw	power_r	
		movwf	slave_r
		call	read
		call	tap
		call	eredmeny
		btfss	T1,2
		goto	vga_
		goto	pwm2
vga_
		btfsc	T1,2
		goto	vga__
		movlw	b'10010011'		; 20. karakterre ugrik
		call	WriteLcd
		movlw	a'M'
		call	WriteTxt
vga__
		movlw	b'10101000'		; 40. karakterre ugrik
		call	WriteLcd

		movlw	vga_w
		movwf	slave_w
		movlw	vga_r
		movwf	slave_r
		call	read
		call	vga
		call	eredmeny
		
		movlw	vga_temp_1
		subwf	temp1,w
		btfsc	STATUS,C
		goto	_rpm			; 1 hozzáadása CCPR2L reg-hez. => power fan gyorsabban forog!
		
hdd_
		movlw	b'10110010'		; 50. karakterre ugrik
		call	WriteLcd
		btfsc	T1,3
		goto	haz

		movlw	hdd0_w
		movwf	slave_w
		movlw	hdd0_r
		movwf	slave_r
		call	read
		call	hdd
		movfw	temp1
		addlw	-d'4'			; némi korrekciós tényező :)
		movwf	temp1
		call	eredmeny
		call	space_
		call	jobb
		goto	Scan
haz
		movlw	case_w
		movwf	slave_w
		movlw	case_r
		movwf	slave_r
		call	read
		call	haz_
		call	eredmeny
		call	space_
		call	jobb
		goto	Scan

haz_meres
		btfsc	T1,3
		goto	T_egy_egy
		bsf	T1,3
		btfss	G4
		goto	$-1
		call	Kesl500
		btfss	G4
		goto	$-1
		goto	ide

T_egy_egy	
		bcf	T1,3
		btfss	G4
		goto	$-1
		call	Kesl500
		btfss	G4
		goto	$-1
		goto	ide	
;----------------------------------		

power_off	btfss	G1
		goto	power_off1
		goto	ide
power_off1	
		btfss	G1
		goto	$-1
		btfss	G_Menu
		goto	power_off2
		goto	ide	
power_off2	bsf	shdn
		btfss	G_Menu
		goto	$-1
		bcf	shdn
		goto	ide	

_rpm
		movlw	d'38'
		movwf	CCPR2L
		goto	Scan
;------------------------------------
pwm1
		movlw	cpu_temp_1
		subwf	temp1,w
		btfsc	STATUS,Z
		goto	power__
		btfsc	STATUS,C
		goto	pwm12_
pwm11_
		movlw	cpu_rpm1
		movwf	CCPR1L
		goto	power__			
pwm12_						; cpu_temp_1 fok fölőtt
		movlw	cpu_temp_2
		subwf	temp1,w
		btfsc	STATUS,Z
		goto	power__			; egyenlő => vissza
		btfsc	STATUS,C
		goto	pwm13_			; cpu_temp_2 fok fölőtt
		movlw	cpu_rpm2		; cpu_temp_2 fok alatt
		movwf	CCPR1L
		goto	power__	
pwm13_
		movlw	cpu_rpm3		; cpu_temp_2 fok fölőtt
		movwf	CCPR1L
		movlw	power_rpm3
		movwf	CCPR2L
		goto	power__	

;------------------------------------
pwm2
		movlw	power_temp_1
		subwf	temp1,w
		btfsc	STATUS,Z
		goto	vga_			; egyenlő => vissza
		btfsc	STATUS,C
		goto	pwm22_			; power_temp_1 fok fölőtt
pwm21_						; power_temp_1 fok alatt
		bcf	T1,1
		movlw	power_rpm1
		movwf	CCPR2L
		goto	vga_
pwm22_						; power_temp_1 fok fölőtt
		btfsc	T1,1
		goto	pwm23_
		movlw	power_temp_2
		subwf	temp1,w
		btfsc	STATUS,C
		goto	pwm23_			; power_temp_2 fok fölőtt
		movlw	power_rpm2		; power_temp_2 fok alatt
		movwf	CCPR2L
		goto	vga_
pwm23_
;		bsf	T1,1
;		movlw	power_rpm3		; power_temp_2 fok fölőtt
;		movwf	CCPR2L
		goto	vga_
;------------------------------------------------------------------------------ 	
over_temp_
		movlw	d'50'
		movwf	kikapcs_szaml

		movlw	power_w
		movwf	slave_w
		movlw	power_r
		movwf	slave_r
		call	read
		movlw	power_hyst_l
		subwf	temp1,w
		btfsc	STATUS,C
		goto	power_hyst_l_		; fok fölőtt
						; fok alatt
		goto	keres_tovabb2
keres_tovabb1
		movlw	vga_w
		movwf	slave_w
		movlw	vga_r
		movwf	slave_r
		call	read
		movlw	vga_hyst_l
		subwf	temp1,w
		btfsc	STATUS,C
		goto	vga_hyst_l_		; fok fölőtt
						; fok alatt
keres_tovabb2
		movlw	cpu_w
		movwf	slave_w
		movlw	cpu_r
		movwf	slave_r
		call	read
		movlw	cpu_hyst_l
		subwf	temp1,w
		btfsc	STATUS,C
		goto	cpu_hyst_l_		; fok fölőtt			
						; fok alatt
		return
cpu_hyst_l_
		bsf	shdn
		call	kesl_nagyon_sok
		bcf	shdn
		movlw	d'37'
		movwf	CCPR1L
		movlw	d'37'
		movwf	CCPR2L
		movlw	cpu_hyst_h
		subwf	temp1,w
		btfsc	STATUS,C
		nop
		movlw	b'10000011'
		call	WriteLcd
		call	tulmelegedes_
ide_cpu		movlw	b'11000101'
		call	WriteLcd
		call	read
		call	cpu_
		call	_2pont
		movfw	temp1
		addlw	d'6'			; némi korrekciós tényező :)
		movwf	temp1
		call	eredmeny
		btfss	G_Menu
		goto	Scan2
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		decfsz	kikapcs_szaml,f
		goto	ide_cpu
		bsf	shdn
		goto	ide_cpu

power_hyst_l_
		movlw	power_hyst_h
		subwf	temp1,w
		btfsc	STATUS,C
		goto	keres_tovabb1		; fok fölőtt
						; fok alatt
		bsf	shdn
		call	kesl_nagyon_sok
		bcf	shdn
		movlw	d'37'
		movwf	CCPR1L
		movlw	d'37'
		movwf	CCPR2L

		movlw	b'10000011'
		call	WriteLcd
		call	tulmelegedes_
ide_power	movlw	b'11000101'
		call	WriteLcd
		call	read
		call	tap
		call	eredmeny
		btfss	G_Menu
		goto	Scan2
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		decfsz	kikapcs_szaml,f
		goto	ide_power
		bsf	shdn
		goto	ide_power

vga_hyst_l_
		movlw	vga_hyst_h
		subwf	temp1,w
		btfsc	STATUS,C
		goto	keres_tovabb2		; fok fölőtt
						; fok alatt
		bsf	shdn
		call	kesl_nagyon_sok
		bcf	shdn
		movlw	d'36'
		movwf	CCPR1L
		movlw	d'36'
		movwf	CCPR2L

		movlw	b'10000011'
		call	WriteLcd
		call	tulmelegedes_
ide_vga		movlw	b'11000101'
		call	WriteLcd
		call	read
		call	vga
		call	eredmeny
		call	kesl_nagyon_sok
		btfss	G_Menu
		goto	Scan2
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		call	kesl_nagyon_sok
		decfsz	kikapcs_szaml,f
		goto	ide_vga
		bsf	shdn
		goto	ide_vga
;------------------------------------------------------------------------------ 
write
		call	I2C_startcond		; start
		movfw	slave_w			; slave cim
		call	I2C_send
		movfw	pointer			; reg mutató
		call	I2C_send		
		movfw	data1			; data
		call	I2C_send
		movfw	data2
		call	I2C_send
		call	I2C_stopcond		; stop
		return
;------------------------------------------------------------------------------ 
write_config
		call	I2C_startcond		; start
		movfw	slave_w			; slave cim
		call	I2C_send
		movfw	pointer			; reg mutató
		call	I2C_send		
		movfw	data1
		call	I2C_send		; data
		call	I2C_stopcond		; stop
		return
;------------------------------------------------------------------------------ 
read
		call	I2C_startcond		; Start
		movfw	slave_w			; slave cim
		call	I2C_send
		movlw	temp_reg		; reg mutató
		call	I2C_send
		call	I2C_restartcond		; Restart
		movfw	slave_r
		call	I2C_send		; slave cim
		call	I2C_receive		; vesz
		movwf	temp1
		call	I2C_receive		; vesz
		movwf	temp2
		clrc
		call	I2C_ack			; nack
		call	I2C_stopcond
		return
;------------------------------------------------------------------------------ 
eredmeny
		movfw	temp1
		addlw	-d'4'			; némi korrekciós tényező :)
		movwf	temp1
		call	INTTOSTR		; hőfok
		movfw	tempkar1
		call	WriteTxt
		movfw	tempkar2
		call	WriteTxt		
		MOVLW	b'11011111'		; A FOK ASCII KÓDJA
		call	WriteTxt
		movlw	a'C'			; C
		call	WriteTxt
		return
;------------------------------------------------------------------------------ 
BANK0:		MACRO
		BCF		STATUS, RP0
		ENDM
;----------------------------------------
BANK1:		MACRO
		BSF		STATUS, RP0
		ENDM		
;----------------------------------------
INTTOSTR:
	BANK0
	BTFSS	temp1,7				; ELŐJEL NEGATÍV?
	GOTO	POSITIV
	COMF	temp1, f			;INTLO = NOT(INTLO)
	INCF	temp1, f			; INTLO = INTLO+1
	MOVLW	'-'
	CALL	WriteTxt
;----------------------------------------
POSITIV:
	CALL	FLUSH32
	MOVFW	temp1				; SAC = INTLO:INTHI
	MOVWF	SAC1				;
	MOVFW	temp2				;
	MOVFW	SAC2
	MOVLW	LOW .10				; ARG = 10
	MOVWF	ARG1				;
	MOVLW	HIGH .10			;
	MOVWF	ARG2				;
	CALL	DIV16				; DIV16
	MOVFW	SAC1				; 
	ADDLW	.48				; ASCII(W)
	clrf	tempkar1
	movwf	tempkar1
	CALL	MUL16				; SAC= SAC-((SAC DIV 10) MUL 10)
	MOVFW	SAC1				;
	MOVWF	ARG1				;
	MOVFW	SAC2				;
	MOVWF	ARG2				;
	MOVFW	temp1				;
	MOVWF	SAC1				;
	MOVFW	temp2				;
	MOVWF	SAC2				;
	CALL	SUB16				;	
	MOVFW	SAC1				;
	ADDLW	.48				; ASCII(W)
	clrf	tempkar2
	movwf	tempkar2
	RETURN
;----------------------------------------
SUB16:
	MOVFW	ARG1
	SUBWF	SAC1,F
	MOVFW	ARG2
	BTFSS	STATUS,C
	INCFSZ	ARG2,W
	SUBWF	SAC2,F
	RETURN
;----------------------------------------
MUL16:
	CLRF   REM4
	CLRF   REM3
	CLRF   REM2
	MOVLW  0x80
	MOVWF  REM1
	RRF    SAC2,F
	RRF    SAC1,F
	BTFSS  STATUS,C
	GOTO   $+.10
	MOVF   ARG1,W
	ADDWF  REM2,F
	MOVF   ARG2,W
	BTFSC  STATUS,C
	INCFSZ ARG2,W
	ADDWF  REM3,F
	BTFSC  STATUS,C
	INCF   REM4,F
	BCF    STATUS,C
	BTFSS  SAC1,7
	GOTO   $+7
	MOVF   ARG1,W
	ADDWF  REM3,F
	MOVF   ARG2,W
	BTFSC  STATUS,C
	INCFSZ ARG2,W
	ADDWF  REM4,F
	RRF    REM4,F
	RRF    REM3,F
	RRF    REM2,F
	RRF    REM1,F
	BTFSS  STATUS,C
	GOTO   $-.26
	MOVFW	REM1
	MOVWF	SAC1
	MOVFW	REM2
	MOVWF	SAC2
	RETURN
;----------------------------------------
DIV16
	CLRF   REM1
	CLRF   REM2
	MOVLW  0x10
	MOVWF  LOOP
	RLF    SAC2,W
	RLF    REM1,F
	RLF    REM2,F
	MOVF   ARG1,W
	SUBWF  REM1,F
	MOVF   ARG2,W
	BTFSS  STATUS,C
	INCFSZ ARG2,W
	SUBWF  REM2,F
	BTFSC  STATUS,C
	GOTO   $+0x08
	MOVF   ARG1,W
	ADDWF  REM1,F
	MOVF   ARG2,W
	BTFSC  STATUS,C
	INCFSZ ARG2,W
	ADDWF  REM2,F
	BCF    STATUS,C
	RLF    SAC1,F
	RLF    SAC2,F
	DECFSZ LOOP,F
	GOTO   $-0x15
	RETURN
;----------------------------------------
FLUSH32
	CLRF	SAC1
	CLRF	SAC2
	CLRF	SAC3
	CLRF	SAC4
	CLRF	ARG1
	CLRF	ARG2
	CLRF	ARG3
	CLRF	ARG4
	RETURN 
;-----------------------------------------------------------------------------
;= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
;- - - Késleltető rutinok  - - - - - - - - - - - - - - - - - - - - - - - - - -
;= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 

; 100us késleltetés
 
Kesl100         movlw   d'100'		
                movwf   Timer1
Vissza1		decfsz  Timer1,1
                goto    Vissza1
                return

;------------------------------------------------------------------------------

; 2ms késleltetés
	
Kesl2           clrf    Timer1
                movlw	d'20'
		movwf   Timer2
Vissza2         call	Kesl100
                decfsz  Timer2,1
                goto    Vissza2
                return

;------------------------------------------------------------------------------

; 100ms késleltetés

Kesl100m	clrf    Timer1
                movlw	d'50'
		movwf   Timer2
Vissza3         call	Kesl100
                decfsz  Timer2,1
                goto    Vissza3
                return

;------------------------------------------------------------------------------

; 500ms késleltetés

Kesl500		
		call	Kesl100		; 5x100 msec
		call	Kesl100
		call	Kesl100
		call	Kesl100
		call	Kesl100
		return

kesl_sok
		call	Kesl500
		call	Kesl500	
		call	Kesl500	
		call	Kesl500	
		call	Kesl500	
		call	Kesl500	
		call	Kesl500	
		call	Kesl500
		return
kesl_nagyon_sok
		call	kesl_sok
		call	kesl_sok
		call	kesl_sok
		call	kesl_sok
		call	kesl_sok
		call	kesl_sok
		call	kesl_sok
		call	kesl_sok
		call	kesl_sok
		call	kesl_sok
		call	kesl_sok
		call	kesl_sok
		call	kesl_sok
		call	kesl_sok
		call	kesl_sok
		call	kesl_sok
		call	kesl_sok
		call	kesl_sok
		call	kesl_sok
		call	kesl_sok	
		return

ido				
		call	kesl_sok
		call	kesl_sok
		call	kesl_sok
		call	kesl_sok
		call	kesl_sok
		call	kesl_sok
		call	kesl_sok
		call	kesl_sok
		call	kesl_sok
		return

;= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
;- - - Lcd rutinok - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
	
WriteLcd	
		bcf     RS
		movwf   Lcd
		bsf	E
		NOP
		NOP
		bcf	E
		call	Kesl100
		return
;------------------------------------------------------------------------------
WriteTxt	
		bsf     RS
		movwf   Lcd
		bsf	E
		NOP
		NOP
		bcf	E
		call	Kesl100
		return
;= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
I2C_startcond	bank1
		bsf	SSPCON2, SEN
		bank0		
I2C_sc1		btfss	PIR1, SSPIF
		goto	I2C_sc1		; wait for end of start condition
		bcf	PIR1, SSPIF
		return
;----------------------------------------
I2C_restartcond	bank1
		bsf	SSPCON2, RSEN
		bank0		
I2C_rsc1	btfss	PIR1, SSPIF
		goto	I2C_rsc1	; wait for end of repeated start cond.
		bcf	PIR1, SSPIF
		return
;----------------------------------------
I2C_stopcond	bank1
		bsf	SSPCON2, PEN
		bank0		
I2C_pc1		btfss	PIR1, SSPIF
		goto	I2C_pc1		; wait for end of stop condition
		bcf	PIR1, SSPIF
		return
;----------------------------------------
I2C_send	movwf	SSPBUF
I2C_send1	btfss	PIR1, SSPIF
		goto	I2C_send1		; wait for end of transmission
		bcf	PIR1, SSPIF
		bank1
		bsf	STATUS,Z		
		btfss	SSPCON2, ACKSTAT	; check -ACK bit
		bcf	STATUS,Z
		bank0
		return
;----------------------------------------
I2C_receive	bank1
		bsf	SSPCON2, RCEN		; configured as a receiver
		bank0
I2C_rec1	btfss	PIR1, SSPIF
		goto	I2C_rec1		; wait for data
		bcf	PIR1, SSPIF
		movf	SSPBUF ,w		; get data
		return
;----------------------------------------
I2C_ack		bank1
		bsf	SSPCON2, ACKDT
		btfsc	STATUS, C
		bcf	SSPCON2, ACKDT		; set acknowledge bit
		bsf	SSPCON2, ACKEN		; start ack. sequence
		bank0
I2C_rec2	btfss	PIR1, SSPIF
		goto	I2C_rec2		; wait for end of ack.
		bcf	PIR1, SSPIF
		return
;------------------------------------------------------------------------------
menu
		movlw	b'00000001'		; Kijelző törlése
		call	WriteLcd
		call	Kesl2
		movlw	b'10000101'
		call	WriteLcd
		call	ball_
		call	menu_
		call	jobb_
		movlw	b'10010011'
		call	WriteLcd
		call	jobb
		movlw	b'10101000'
		call	WriteLcd
		call	ball
		call	cpu_
		call	space_
		call	fan_
		movlw	b'10110001'
		call	WriteLcd	
		call	space_
		call	power_
		call	space_
		call	fan_
		call	jobb	
		btfss	G_Menu
		goto	$-1
		call	Kesl500	
		btfss	G_Menu
		goto	$-4
Menu_scan
		btfss	G1
		goto	$-1
		btfss	G2
		goto	cpu_menu
		btfss	G3
		goto	menu_jobb1
		btfss	G4
		goto	power_menu
		btfss	G_Menu
		goto	Scan2
		goto	Menu_scan

cpu_menu	
		movlw	b'00000001'
		call	WriteLcd
		call	Kesl2
		movlw	b'10000000'
		call	WriteLcd
		call	ball_
		call	cpu_
		call	space_
		call	menu_
		call	jobb_
		movlw	b'00000001'
		call	WriteLcd
		call	Kesl2
		movlw	b'10000000'
		call	WriteLcd
		call	ball_	
		call	cpu_
		call	space_
		call	menu_
		call	jobb_
		movlw	b'10010000'
		call	WriteLcd
		call	kockazarob
		call	up_
		call	kockazaroj
		movlw	b'11001110'
		call	WriteLcd
		call	kockazarob
		call	down_
		call	kockazaroj
		movlw	b'10101000'
		call	WriteLcd
		movfw	CCPR1L
		movwf	temp1
		movlw	b'10101001'
		call	WriteLcd
		call	INTTOSTR
		movfw	tempkar1
		call	WriteTxt
		movfw	tempkar2
		call	WriteTxt
		btfss	G2
		goto	$-1
		call	Kesl500
		btfss	G2
		goto	$-4	
cpu_menu_scan
		btfss	G3
		goto	add_cpu_rpm
		btfss	G4
		goto	sub_cpu_rpm
		btfss	G_Menu
		goto	menu
		goto	$-6

add_cpu_rpm
		movfw	CCPR1L
		addlw	d'1'
		movwf	temp1
		bcf	STATUS,Z 
		xorlw	d'60'
		btfsc	STATUS,Z
		goto	cpu_menu_scan
		movfw	temp1
		movwf	CCPR1L
		movlw	b'10101001'
		call	WriteLcd
		call	INTTOSTR
		movfw	tempkar1
		call	WriteTxt
		movfw	tempkar2
		call	WriteTxt
		btfss	G3
		goto	$-1
		goto	cpu_menu_scan
sub_cpu_rpm
		decfsz	CCPR1L,w
		movwf	temp1
		bcf	STATUS,Z 
		xorlw	d'25'
		btfsc	STATUS,Z
		goto	cpu_menu_scan
		movfw	temp1
		movwf	CCPR1L
		movlw	b'10101001'
		call	WriteLcd
		call	INTTOSTR
		movfw	tempkar1
		call	WriteTxt
		movfw	tempkar2
		call	WriteTxt
		btfss	G4
		goto	$-1
		goto	cpu_menu_scan		
		
power_menu
		movlw	b'00000001'		; Kijelző törlése
		call	WriteLcd
		call	Kesl2
		movlw	b'10000000'
		call	WriteLcd
		call	ball_	
		call	power_
		call	space_
		call	menu_
		call	jobb_
		movlw	b'00000001'		; Kijelző törlése
		call	WriteLcd
		call	Kesl2
		movlw	b'10000000'
		call	WriteLcd
		call	ball_	
		call	power_
		call	space_
		call	menu_
		call	jobb_
		movlw	b'10010000'
		call	WriteLcd
		call	kockazarob
		call	up_
		call	kockazaroj
		movlw	b'11001110'
		call	WriteLcd
		call	kockazarob
		call	down_
		call	kockazaroj
		movlw	b'10101000'
		call	WriteLcd
		movfw	CCPR2L
		movwf	temp1
		movlw	b'10101001'
		call	WriteLcd
		call	INTTOSTR
		movfw	tempkar1
		call	WriteTxt
		movfw	tempkar2
		call	WriteTxt
		btfss	G4
		goto	$-1
		call	Kesl500
		btfss	G4
		goto	$-4
power_menu_scan
		btfss	G3
		goto	add_power_rpm
		btfss	G4
		goto	sub_power_rpm
		btfss	G_Menu
		goto	menu
		goto	$-6

add_power_rpm
		movfw	CCPR2L
		addlw	d'1'
		movwf	temp1
		bcf	STATUS,Z 
		xorlw	d'50'
		btfsc	STATUS,Z
		goto	power_menu_scan
		movfw	temp1
		movwf	CCPR2L
		movlw	b'10101001'
		call	WriteLcd
		call	INTTOSTR
		movfw	tempkar1
		call	WriteTxt
		movfw	tempkar2
		call	WriteTxt
		btfss	G3
		goto	$-1
		goto	power_menu_scan
sub_power_rpm
		decfsz	CCPR2L,w
		movwf	temp1
		bcf	STATUS,Z 
		xorlw	d'25'
		btfsc	STATUS,Z
		goto	power_menu_scan
		movfw	temp1
		movwf	CCPR2L
		movlw	b'10101001'
		call	WriteLcd
		call	INTTOSTR
		movfw	tempkar1
		call	WriteTxt
		movfw	tempkar2
		call	WriteTxt
		btfss	G4
		goto	$-1
		goto	power_menu_scan

menu_jobb1
		movlw	b'00000001'
		call	WriteLcd
		call	Kesl2
		movlw	b'10000000'
		call	WriteLcd
		call	vonal_
		call	control_
		call	space_
		call	menu_
		call	vonal_
		movlw	b'00000001'
		call	WriteLcd
		call	Kesl2
		movlw	b'10000000'
		call	WriteLcd
		call	vonal_	
		call	control_
		call	space_
		call	menu_
		call	vonal_
		movlw	b'10001111'
		call	WriteLcd
		call	kockazarob
		call	aut_
		call	kockazaroj
		movlw	b'10110100'
		call	WriteLcd
		call	kockazarob
		call	manual_
		call	kockazaroj
		movlw	b'10111011'
		call	WriteLcd
		movlw	b'10101010'
		call	WriteLcd
		btfsc	T1,2
		goto	auto
		goto	man
jump_ide	btfss	G3
		goto	$-1
		call	Kesl500
		btfss	G3
		goto	$-4
menu_jobb1_scan	
		btfss	G1
		goto	$-1
		btfss	G2
		goto	$-1
		btfss	G3
		goto	aut
		btfss	G4
		goto	manual
		btfss	G_Menu
		goto	menu
		goto	menu_jobb1_scan

aut
		bsf	T1,2
		movlw	b'10101010'
		call	WriteLcd
		call	space_
		call	auto_
		call	space_
		btfss	G3
		goto	$-1
		goto	menu_jobb1_scan	
auto
		bsf	T1,2
		movlw	b'10101010'
		call	WriteLcd
		call	space_
		call	auto_
		call	space_
		btfss	G3
		goto	$-1
		goto	jump_ide
manual	
		bcf	T1,2
		movlw	b'10101010'
		call	WriteLcd
		call	manual_
		btfss	G4
		goto	$-1
		goto	menu_jobb1_scan	

man		bcf	T1,2
		movlw	b'10101010'
		call	WriteLcd
		call	manual_
		btfss	G4
		goto	$-1
		goto	jump_ide	
;------------------------------------------------------------------------------
; Lcd szövegek
Lcd_udv_txt1
		movlw	a'W'	
		call	WriteTxt
		call	ido
		movlw	a'a'
		call	WriteTxt
		call	ido
		movlw	a'k'	
		call	WriteTxt
		call	ido
		movlw	a'e'	
		call	WriteTxt
		call	ido
		movlw	a' '	 	
		call	WriteTxt
		call	ido
		movlw	a'u'	
		call	WriteTxt
		call	ido
		movlw	a'p'
		call	WriteTxt
		call	ido
		movlw	a' '	 	
		call	WriteTxt
		call	ido
		movlw	a'T'	 	
		call	WriteTxt
		call	ido
		movlw	a'o'
		call	WriteTxt
		call	ido
		movlw	a'm'
		call	WriteTxt
		call	ido
		movlw	a'e'
		call	WriteTxt
		call	ido
		movlw	a'e'
		call	WriteTxt
		call	ido
		movlw	a'.'
		call	WriteTxt
		call	ido
		movlw	a'.'
		call	WriteTxt
		call	ido
		movlw	a'.'
		call	WriteTxt
		call	ido
		call	ido
		call	ido
		call	ido
		call	ido
		call	ido
		return
Lcd_udv_txt2
		movlw	a'T'
		call	WriteTxt
		call	ido
		movlw	a'h'
		call	WriteTxt
		call	ido
		movlw	a'e'
		call	WriteTxt
		call	ido
		movlw	a' '
		call	WriteTxt
		call	ido
		movlw	a'M'	
		call	WriteTxt
		call	ido
		movlw	a'a'	
		call	WriteTxt
		call	ido
		movlw	a't'	
		call	WriteTxt
		call	ido
		movlw	a'r'	
		call	WriteTxt
		call	ido
		movlw	a'i'	
		call	WriteTxt
		call	ido
		movlw	a'x'	
		call	WriteTxt
		call	ido
		movlw	a','	
		call	WriteTxt
		call	ido
		movlw	a' '	
		call	WriteTxt
		call	ido
		movlw	a'h'	
		call	WriteTxt
		call	ido
		movlw	a'a'	
		call	WriteTxt
		call	ido
		movlw	a's'	
		call	WriteTxt
		call	ido
		movlw	a' '	
		call	WriteTxt
		call	ido
		movlw	a'y'	
		call	WriteTxt
		call	ido
		movlw	a'o'	
		call	WriteTxt
		call	ido
		movlw	a'u'	
		call	WriteTxt
		call	ido
		movlw	a'.'	
		call	WriteTxt
		call	ido
		call	ido
		call	ido
		call	ido
		call	ido
		call	ido
		return

Lcd_udv_txt3
		movlw	a'F'	
		call	WriteTxt
		call	ido
		movlw	a'o'	
		call	WriteTxt
		call	ido
		movlw	a'l'	
		call	WriteTxt
		call	ido
		movlw	a'l'	
		call	WriteTxt
		call	ido
		movlw	a'o'	
		call	WriteTxt
		call	ido
		movlw	a'w'	
		call	WriteTxt
		call	ido
		movlw	a' '	
		call	WriteTxt
		call	ido
		movlw	a't'	
		call	WriteTxt
		call	ido
		movlw	a'h'	
		call	WriteTxt
		call	ido
		movlw	a'e'	
		call	WriteTxt
		call	ido
		return
Lcd_udv_txt4
		movlw	a'w'	
		call	WriteTxt
		call	ido
		movlw	a'h'	
		call	WriteTxt
		call	ido
		movlw	a'i'	
		call	WriteTxt
		call	ido
		movlw	a't'	
		call	WriteTxt
		call	ido
		movlw	a'e'	
		call	WriteTxt
		call	ido
		movlw	a' '	
		call	WriteTxt
		call	ido
		movlw	a'r'	
		call	WriteTxt
		call	ido
		movlw	a'a'	
		call	WriteTxt
		call	ido
		movlw	a'b'	
		call	WriteTxt
		call	ido
		movlw	a'b'	
		call	WriteTxt
		call	ido
		movlw	a'i'	
		call	WriteTxt
		call	ido
		movlw	a't'	
		call	WriteTxt
		call	ido
		movlw	a'.'	
		call	WriteTxt
		call	ido
		return

vga		
		movlw	a'v'
		call	WriteTxt
		movlw	a'g'
		call	WriteTxt
		movlw	a'a'
		call	WriteTxt
		call	_2pont
		return

tap
		movlw	a't'
		call	WriteTxt
		movlw	a'a'
		call	WriteTxt
		movlw	a'p'
		call	WriteTxt
		call	_2pont
		return

hdd
		movlw	a'h'
		call	WriteTxt
		movlw	a'd'
		call	WriteTxt
		movlw	a'd'
		call	WriteTxt
		call	_2pont
		return
		
_2pont
		movlw	a':'
		call	WriteTxt
		return

menu_	
		movlw	a'M'
		call	WriteTxt
		movlw	a'e'
		call	WriteTxt
		movlw	a'n'
		call	WriteTxt
		movlw	a'u'
		call	WriteTxt
		return	

cpu_		
		movlw	a'C'
		call	WriteTxt
		movlw	a'p'
		call	WriteTxt
		movlw	a'u'
		call	WriteTxt
		return

power_
		movlw	a'P'
		call	WriteTxt
		movlw	a'o'
		call	WriteTxt
		movlw	a'w'
		call	WriteTxt
		movlw	a'e'
		call	WriteTxt
		movlw	a'r'
		call	WriteTxt
		return

rpm_		movlw	a'R'
		call	WriteTxt
		movlw	a'p'
		call	WriteTxt
		movlw	a'm'
		call	WriteTxt
		return

fan_		movlw	a'F'
		call	WriteTxt
		movlw	a'a'
		call	WriteTxt
		movlw	a'n'
		call	WriteTxt
		return

space_		
		movlw	a' '
		call	WriteTxt
		return

jobb
		movlw	a'>'
		call	WriteTxt
		return
ball
		movlw	a'<'
		call	WriteTxt
		return

ball_		
		movlw	a'-'
		call	WriteTxt
		movlw	a'-'
		call	WriteTxt
		movlw	a'='
		call	WriteTxt
		return

vonal_
		movlw	a'-'
		call	WriteTxt
		return

jobb_
		movlw	a'='
		call	WriteTxt
		movlw	a'-'
		call	WriteTxt
		movlw	a'-'
		call	WriteTxt
		return	

kockazaroj
		movlw	a']'
		call	WriteTxt
		return
kockazarob
		movlw	a'['
		call	WriteTxt
		return	
up_
		movlw	a'u'
		call	WriteTxt
		movlw	a'p'
		call	WriteTxt
		return	

down_		movlw	a'd'
		call	WriteTxt
		movlw	a'o'
		call	WriteTxt
		movlw	a'w'
		call	WriteTxt
		movlw	a'n'
		call	WriteTxt
		return	

control_		
		movlw	a'C'
		call	WriteTxt
		movlw	a'o'
		call	WriteTxt
		movlw	a'n'
		call	WriteTxt
		movlw	a't'
		call	WriteTxt
		movlw	a'r'
		call	WriteTxt
		movlw	a'o'
		call	WriteTxt
		movlw	a'l'
		call	WriteTxt
		return
aut_		
		movlw	a'a'
		call	WriteTxt
		movlw	a'u'
		call	WriteTxt
		movlw	a't'
		call	WriteTxt
		return
auto_
		movlw	a'a'
		call	WriteTxt
		movlw	a'u'
		call	WriteTxt
		movlw	a't'
		call	WriteTxt
		movlw	a'o'
		call	WriteTxt
		return
manual_
		movlw	a'm'
		call	WriteTxt
		movlw	a'a'
		call	WriteTxt
		movlw	a'n'
		call	WriteTxt
		movlw	a'u'
		call	WriteTxt
		movlw	a'a'
		call	WriteTxt
		movlw	a'l'
		call	WriteTxt
		return
tulmelegedes_
		movlw	a'T'
		call	WriteTxt
		call	ido
		movlw	a'u'
		call	WriteTxt
		call	ido
		movlw	a'l'
		call	WriteTxt
		call	ido
		movlw	a'm'
		call	WriteTxt
		call	ido
		movlw	a'e'
		call	WriteTxt
		call	ido
		movlw	a'l'
		call	WriteTxt
		call	ido
		movlw	a'e'
		call	WriteTxt
		call	ido
		movlw	a'g'
		call	WriteTxt
		call	ido
		movlw	a'e'
		call	WriteTxt
		call	ido
		movlw	a'd'
		call	WriteTxt
		call	ido
		movlw	a'e'
		call	WriteTxt
		call	ido
		movlw	a's'
		call	WriteTxt
		call	ido
		movlw	a'!'
		call	WriteTxt
		call	ido
		return

haz_
		movlw	a'h'
		call	WriteTxt
		movlw	a'a'
		call	WriteTxt
		movlw	a'z'
		call	WriteTxt
		call	_2pont
		return
;------------------------------------------------------------------------------

		end

