;**************************************************************************
;
; Filename : SPEICHER.ASM
; -----------------------
;
; (c) 1990 by Thomas Lehmann
;
;
; Jackophone V5.00
;
;
; Speicher Funktionen
;
;
;**************************************************************************


; =========================================================================
;
; Type	: Hauptprg.
;
; Eingang	: bei Speichertaste
;	: Offset auf Tastaturtabelle in X-Reg.
;
; Ausgang	: Speichertext ausgegeben
;	: LED eingeschaltet
;	: Wähltasten umgeleitet
;	: letzte Textnr. in X-Reg
;	: erste Textnr. in Y-Reg
;
; Register	: Accu, X, Y
;
; (c) by Thomas Lehmann März 1990
;
; =========================================================================

key_sp	ldy #LAST_SPTXT-1	; Start-Textnr. laden
	lda wta_prg	; Wähltastenprg. laden
	cmp #WTA_SPEICH	; ist Speichermodus bereits eingeleitet ?
	beq key_sp_1	; ja

	jsr key_ende	; Kontrolle ausschalten
	sty txtnr	; und für Ausgabe vorbereiten
	smb MOD_SP,modus	; Speichermodus aktiv eintragen
	lda #WTA_SPEICH	; Speicherprg. Nr. laden
	sta wta_prg	; und bei Wähltaste ausführen
	lda #LD_L|LD_ON	; LED-Wert laden
	jsr set_led	; und LED einschalten

key_sp_1	ldx #TXT_SP	; letzte Textnr. laden
	jmp show_txtnr	; Text ausgeben


spko_txt1	.shift "1=NT 2=Term 3=Relais -->"
sp_txt2	.shift "Speichertext 2       -->"
sp_txt3	.shift "Speichertext 3       -->"


; =========================================================================
;
; Type	: Hauptprg.
;
; Eingang	: bei 2.Speichertaste
;	: Offset auf Tastaturtabelle in X-Reg.
;
; Ausgang	: 2. Speicher aktiv/unaktiv
;
; Register	: Accu
;
; (c) by Thomas Lehmann März 1990
;
; =========================================================================

key_2sp	bbs ST_2SP,feap_stat,zwsp_off	; 2.SP deaktivieren

	smb ST_2SP,feap_stat	; Modus 2.Speicher aktiv eintragen
	lda #LD_R|LD_ON	; rechte LED einschalten
	jmp set_led	; LED einschalten

zwsp_off	rmb ST_2SP,feap_stat	; Modus 2.Speicher nicht aktiv eintragen
	ldy #LD_R|LD_OFF	; rechte LED ausschalten
	lda #KEY_2SP	; Tastenwert laden
	jmp set_prgled	; LED ausschalten


; =========================================================================
;
; Type	: Hauptprg.
;
; Eingang	: bei Wähltaste und eingeschaltetem Speicher-Modus
;	: Tastenwert (1 bis ...) im Accu
;
; Ausgang	: ausgewählte Speicherfunktion ausgeführt
;
; Register	: Accu, X
;
; (c) by Thomas Lehmann März 1990
;
; =========================================================================

speich_tab	.rta spko_namkey	; Namentaste speichern
	.rta spko_term	; Termin speichern
	.rta sp_relais	; Relais speichern


TAB_LEN	.set	*-speich_tab	; Tabellenlänge


wta_speich	dec a		; Tastenwert 0-... erzeugen
	asl		; mal 2 = Offset auf Programm
	tax
	cpx #TAB_LEN	; ist Auswahl gültig ?
	bcs sp_end	; nein, Ende

	lda speich_tab+1,x	; low Byte laden
	pha		; und auf den Stack
	lda speich_tab,x	; high Byte laden
	pha
sp_end	rts		; Programm ausführen



; =====================================
; nicht freigegebene Speicherfunktionen
; =====================================

sp_relais
	rts

