; ****************************************
; Routine zum lesen des Gebers
;*****************************************

getgeber1:	setb	int
wait_int1:	jb	int,wait_int1
		orl	p3,#070h	; Geberport auf 1 setzen
		mov	a,p3
		swap	a
		anl	a,#03h
		mov	r2,a
		setb	int
wait_int2:	jb	int,wait_int2
		orl	p3,#70h
		mov	a,p3
		swap	a
		anl	a,#03h
		xrl	a,r2
		jb	a.0,rausg1
		mov	a,r2
		xrl	a,GeberO
		jnb	a.0,rausg1
change:		mov	a,GeberO
		clr	c
		rlc	a
		rlc	a
		orl	a,r2
		push	dptr
		mov	dptr,#tabelle_geber
		movc	a,@a+dptr
		pop	dptr
		jb	A.0,hoch
		jb	A.1,runter
rausgeb:	mov	GeberO,r2
rausg1:		ret

hoch:		setb	plus
		jmp	rausgeb
runter:		setb	minus
		jmp	rausgeb

getgeber2:	setb	int
war_intG1:	jb	int,war_intG1
		orl	p3,#70h
		mov	a,p3
		swap	a
		anl	a,#03h
		mov	r3,a
		setb	int
war_intG2:	jb	int,war_intG2
		orl	a,#70h
		mov	a,p3
		swap	a
		anl	a,#03h
		xrl	a,r3
		jnz	rausg
		mov	a,r3
		xrl	a,GeberO
		mov	r2,a
		jz	return
		mov	a,r3
		rrc	a
		rr	a
		xrl	a,psw
		jb	a.7,A_ung_B
		mov	a,r2
		xrl	a,#02h
		jz	hochV
		mov	a,r2
		xrl	a,#01h
		jz	runterV
		jmp	rausg
A_ung_B:	mov	a,r2
		xrl	a,#01h
		JZ	hochV
		mov	a,r2
		xrl	a,#02h
		jz	runterV

rausg:		mov	GeberO,R3
return:		ret
	
hochV:		setb	plus
		jmp	rausg

runterV:	setb	minus
		jmp	rausg

tabelle_geber:	db	0,1,2,0,2,0,0,1,1,0,0,2,0,2,1,0