;**************************************************************************
;
; Filename : SUMMER.ASM
; ---------------------
;
; (c) 1990 by Thomas Lehmann
;
;
; Jackophone V5.00
;
;
; Summer Routinen
;
;
;**************************************************************************


; =========================================================================
;
; Type	: Hauptprg.
;	: Anruf testen
;
; Eingang	: von Hauptprg.-Schleife
;
; Ausgang	: Anruf-BIT=1 solange der Anruf erkannt wird
;
; Register	: Accu
;
; (c) by Thomas Lehmann März 1990
;
; =========================================================================

tst_anr	lda Via_portb	; Zustand der VIA einlesen
	bit #ANR	; steht Anruf an ?
	bne anr_timeout	; nein, Timeout testen

	; Anruf aktiv eintragen
	; ---------------------
	smb ST_ANRSU,su_stat	; Anruf eintragen
	smb ST_SU,su_stat	; Summer einschalten
	lda #ANRIMP_TIM	; Timerwert Überbrückung Anrufimpuls laden
	sta struct_tim+ANRIMP_TIM_O	; und Timer starten

	smb ST_ANRLED,su_stat	; Anruf eintragen, Ltg. LED einschalten
	lda #ANR_TIM	; Timerwert Anrufüberbrückung laden
	sta struct_tim100+ANR_TIM_O	; und Timer starten
tst_anr_end	rts

	; Anrufimpuls Überbrückung testen
	; -------------------------------
anr_timeout	lda struct_tim+ANRIMP_TIM_O	; Anruftimer abgelaufen ?
	bne tst_anr_end	; nein, Ende

	bbr ST_ANRSU,su_stat,tst_anr_end	; Summer bereits aus

	rmb ST_ANRSU,su_stat	; Anruf austragen
	rmb ST_SU,su_stat	; Summer ausschalten
	rts


; =========================================================================
;
; Type	: Hauptprg.
;	: Summer-BIT testen und Summer entsprechend schalten
;
; Eingang	: wird von der Haupt-Prg.-Schleife aufgerufen
;
; Ausgang	: Summer bei Anforderung ein bzw. ausgeschaltet
;	: Summer nicht geschaltet wenn Summerabschaltung aktiv ist
;
; Register	: -------
;
; (c) by Thomas Lehmann März 1990
;
; =========================================================================

summer	bbr ST_SUAB,su_stat,summer_1	; Summer ist nicht abgeschaltet
	rts		; SA aktiv, keinen Anrufsummer bringen

summer_1	bbs ST_SU,su_stat,summer_on	; Summer einschalten

	jmp su_off	; Summer ausschalten

summer_on	jmp su_on	; Summer einschalten


; =========================================================================
;
; Type	: Hauptprg.
;	: Anruf-BIT testen und Leitungs-LED schalten
;
; Eingang	: wird von der Haupt-Prg.-Schleife aufgerufen
;
; Ausgang	: Ltg.-LED bei Anruf eingeschaltet
;	: Ltg.-LED nach Anrufüberbrückunszeit ausgeschaltet
;
; Register	: Accu
;
; (c) by Thomas Lehmann März 1990
;
; =========================================================================

anr_led	bbs ST_ANRLED,su_stat,anr_led_1	; Anruf-LED testen
anr_led_end	rts		; kein Anruf, Ende


anr_led_1	bbs ST_ALD_ON,su_stat,anr_led_2	; LED ist eingeschaltet

	; Anruf-LED einschalten
	; ---------------------
	smb ST_ALD_ON,su_stat	; LED eingeschaltet eintragen
	ldy #LD_L|LD_N	; Statusbyte laden

	lda #KEY_LTG	; Tastenwert für Leitungstaste laden
	jmp set_prgled	; alle zum Tastenwert gehörenden LED`s ein


	; Anruf-LED ausschalten
	; ---------------------
anr_led_2	lda struct_tim100+ANR_TIM_O	; Anrufüberbrückung beendet ?
	bne anr_led_end	; nein, Ende

	rmb ST_ANRLED,su_stat	; Anruf-LED austragen
	bbs LTG_BEL,ltg_stat,anr_led_end	; Ltg. ist bereits belegt

	; Anruf nicht abgefragt
	; ---------------------
	rmb ST_ALD_ON,su_stat	; LED ausgeschaltet eintragen
	ldy #LD_L|LD_OFF	; Statusbyte laden

	lda #KEY_LTG	; Tastenwert für Leitungstaste laden
	jmp set_prgled	; alle zum Tastenwert gehörenden LED`s aus


; =========================================================================
;
; Type	: Hauptprg.
;
; Eingang	: bei Summertaste
;
; Ausgang	: Summer ein/ausgeschaltet
;
; Register	: Accu
;
; (c) by Thomas Lehmann März 1990
;
; =========================================================================

key_su	bbs ST_SUAB,su_stat,key_suon	; Summer wieder ein

	smb ST_SUAB,su_stat	; "Summer abgeschaltet" eintragen
	rmb ST_SU,su_stat	; Summer ausschalten
	lda #LD_L|LD_ON	; LED-Status laden
	jmp set_led	; LED schalten

key_suon	rmb ST_SUAB,su_stat	; "Summer eingeschaltet" eintragen
	lda #LD_L|LD_OFF	; LED-Status laden
	jmp set_led	; und LED schalten


