;**************************************************************************
;
; Filename : UPDATE.ASM
; ---------------------
;
; (c) 1991 by Thomas Lehmann
;
;
; Jackophone V5.00
;
;
; Schalten verschiedener Ereignisse, z.B. Ports, Relais, ...
;
;
;**************************************************************************


MODUL_START	set	*	; Größe des Moduls berechnen



update_task	jsr port_update	; frei programmierbare Ports schalten
	jsr tst_erde	; Relais für Erdtaste schalten
	jsr set_fslh	; FS bzw. LH Relais und LED schalten

	lda #20		; Anzahl der Aussetzer
	jsr task_sleep	; Task X-mal aussetzen
	bra update_task	; erneuter Durchlauf



; =========================================================================
;
; Funktion	: Update der frei programmierbaren Ports
;
; Eingang	: -------
;
; Ausgang	: -------
;
; Register	: Accu, X
;
; (c) by Thomas Lehmann August 1991
;
; =========================================================================

port_update
	block
	lda #PRG_PORT-1	; letzten Port einstellen

loop	pha		; Portnr. retten
	jsr port_tst	; Port testen
	bcc port_off	; Port ausgeschaltet


	; Port einschalten
	; ----------------
	jsr set_prgport	; Port setzen
	bra loop_1

	; Port ausschalten
	; ----------------
port_off	jsr clr_prgport	; programmierbaren Port zurücksetzen

loop_1	pla		; Portnr. zurück
	dec a		; alle Ports geschaltet ?
	bpl loop

	rts
	bend




; =========================================================================
;
; Funktion	: Erde wählen
;	  Relais für Erdtaste testen
;	  wenn Timer abgelaufen, Erd-Relais zurückgesetzt
;
; Eingang	: ---------
;
; Ausgang	: ---------
;
; Register	: Accu
;
; (c) by Thomas Lehmann Mai 1990
;
; =========================================================================

tst_erde	bbr WHL_ERDE,ltg_stat,tst_erd_end	; Erde wird nicht gewählt

	lda struct_tim100+ERD_TIM_O	; ist Timer abgelaufen ?
	bne tst_erd_end	; nein, Ende

	lda erd_rel	; Portnr. für Erdtaste laden
	jsr port_off	; Erd Relais ausschalten

	rmb WHL_ERDE,ltg_stat	; Erde ist gewählt

tst_erd_end	rts



; =========================================================================
;
; Funktion	: Update des FS/LH Relais und der LED`s
;
; Eingang	: -------
;
; Ausgang	: -------
;
; Register	: Accu, X
;
; (c) by Thomas Lehmann August 1991
;
; =========================================================================

set_fslh
	block
	bbs ST_FSLH,feap_stat,fslh_on	; FS/LH ist eingeschaltet

	; FS/LH ist ausgeschaltet
	; =======================
	ldy #LD_L|LD_R|LD_OFF	; LED`s in FS Taste löschen
	jsr fslh_led	; LED schalten
	jmp fs_off	; FS ausschalten


	; FS/LH ist eingeschaltet
	; =======================
fslh_on	jsr fs_on	; FS/LH einschalten

	; LED`s in FS/LH Taste schalten
	; -----------------------------
	ldy #LD_L|LD_OFF
	lda #LD_R|LD_ON	; LED-Wert für LH

	ldx fs_stat	; FS aktiv ?
	beq fslh_1	; nein, nur temporör bzw. LH

	ldy #LD_R|LD_OFF
	lda #LD_L|LD_ON	; LED-Wert für FS

fslh_1	pha
	jsr fslh_led
	ply

fslh_led	lda #KEY_FSLH	; Tastenwert laden
	jmp set_prgled	; LED ausschalten
	bend






; --------------------------------------------------------------------------

HLP	set	*
_UPDATE	equ	HLP-MODUL_START		; Größe des Moduls

