;**************************************************************************
;
; Filename : TAST_AUSW.ASM
; ------------------------
;
; (c) 1990 by Thomas Lehmann
;
;
; Jackophone V5.00
;
;
; Programmverteiler für Tasten in der X/Y-Matrix
;
;
;**************************************************************************


; =========================================================================
;
; Type	: Hauptprg.
;	: Taste auswerten, Programmverteiler für Tasten
;
; Eingang	: Offset auf Tastatur-Matrix in "taste" (Tastenwert 1-...)
;
; Ausgang	: entsprechendes Programm ausgewählt
;	: Offset auf Tastaturtabelle in X-Reg.
;	: Tastenwert in "tw"
;	: Tastenwert im Accu wenn BTA-MODUS ein
;
; Register	: Accu, X, Y
;
; (c) by Thomas Lehmann Feb. 1990
;
; =========================================================================

KEY_NR	.set *

t_prg_tab	.rta t_ausw_end	; TW 00, Taste nicht berrechtigt

HLP	.set	*-KEY_NR
KEY_LTG	.equ	HLP/2	; Tastenwert
	.rta key_ltg	; TW 01, Leitung

	.rta key_trenn	; TW 02, Trennen
	.rta key_halten	; TW 03, Halten
	.rta key_ww	; TW 04, Wahlwiederholung
	.rta key_merker	; TW 05, Merker

HLP	.set	*-KEY_NR
KEY_FSLH	.equ	HLP/2
	.rta key_fslh	; TW 06, Freisprechen/Lauthören ein/aus

	.rta key_su	; TW 07, Summer ein/aus

HLP	.set	*-KEY_NR
KEY_BEA	.equ	HLP/2
	.rta key_beantw	; TW 08, Anrufbeantworter ein/aus

HLP	.set	*-KEY_NR
KEY_POST	.equ	HLP/2
	.rta key_post	; TW 09, Postapparat ein/aus

HLP	.set	*-KEY_NR
KEY_MOD	.equ	HLP/2
	.rta key_modem	; TW 10, Modem ein/aus

HLP	.set	*-KEY_NR
KEY_NAM	.equ	HLP/2
	.rta key_namen	; TW 11, Namentasten

HLP	.set	*-KEY_NR
KEY_SP	.equ	HLP/2
	.rta key_sp	; TW 12, Speicher

HLP	.set	*-KEY_NR
KEY_2SP	.equ	HLP/2
	.rta key_2sp	; TW 13, 2.Speicher

HLP	.set	*-KEY_NR
KEY_KO	.equ	HLP/2
	.rta key_kontr	; TW 14, Kontrolle

	.rta key_ende	; TW 15, Ende
	.rta key_loesch	; TW 16, löschen

HLP	.set	*-KEY_NR
KEY_UHR	.equ	HLP/2
	.rta key_uhr	; TW 17, Uhr stellen

	.rta key_taster	; TW 18, Taster
	.rta key_schalt	; TW 19, Schalter

HLP	.set	*-KEY_NR
KEY_ERDE	.equ	HLP/2
	.rta key_erde	; TW 20, Erd-Taste
	.rta show_vers	; TW 21, Version anzeigen
	.rta init_stk	; TW 22, Reset

TAB_LEN	.set	*-t_prg_tab	; Tabellenlänge


tast_ausw	ldx taste	; Offset auf Tastatur-Matrix 1-...
	dex		; dito, 0-...
	txa
	asl		; je zwei Bytes pro Taste, TW und Tastennr.
	tax		; Offset auf Tasteneintrag in Tabelle laden
	lda tast_tab,x	; Tastenwert aus Berechtigung holen
	sta tw		; Tastenwert ablegen

	bbr MOD_BTA,modus,tast_ausw_1	; BTA-Modus ausgeschaltet

	jmp tast_bta	; BTA Prg. ausführen

tast_ausw_1	bbr MOD_TXT,modus,tast_ausw_2	; Textmodus ist ausgeschaltet
	pha		; Tastenwert retten
	phx		; Offset auf Tastenber. retten
	jsr txt_tast	; Textfunktion der Taste ausführen
	plx		; Register zurück
	pla
	bcs t_ausw_end	; Taste hatte Textfunktion, Ende

tast_ausw_2	asl		; Offset auf Programmtabelle erzeugen
	cmp #TAB_LEN	; Taste außerhalb des Gültigkeitsbereichs ?
	bcs t_ausw_end	; ja, nicht ausführen

	tay
	lda t_prg_tab+1,y	; high Byte der Programmadr. laden
	pha
	lda t_prg_tab,y	; dito low Byte
	pha
t_ausw_end	rts		; und Programm ausführen



; ===================================
; nicht freigegebene Tastenfunktionen
; ===================================

key_taster		; TW $12, Taster
key_schalt		; TW $13, Schalter

	rts

; =========================================================================
;
; Type	: Hauptprg.
;	: Taste auswerten, Programmverteiler für Wähltasten
;
; Eingang	: Tastenwert (1-12) in "wtast"
;
; Ausgang	: entsprechendes Programm ausgewählt
;
; Register	: Accu, X
;
; (c) by Thomas Lehmann Feb. 1990
;
; =========================================================================

wta_ausw	lda wta_prg	; Programmnr. bei Wähltaste
	asl		; Offset auf Prg. Tabelle erzeugen
	tax
	lda wta_prg_tab+1,x	; high Byte der Programmadr. laden
	pha
	lda wta_prg_tab,x	; dito low Byte
	pha
	lda wtast	; Tastenwert laden
wta_noprg	rts		; und Programm ausführen


wta_prg_tab	.rta wta_wahl	; 00, Wahl auf Leitung
	.rta wta_bta_whl	; BTA Modus auswählen
	.rta wta_bta	; BTA Modus Tastenberechtigung
	.rta wta_ascii	; BTA Modus Textberechtigung
	.rta wta_uhrst	; Uhr stellen
	.rta wta_speich	; Speichern aktiv
	.rta wta_kontr	; Kontrolle aktiv
	.rta wta_spnam	; Namentasten speichern
	.rta wta_termwhl	; Terminnr. auswählen
	.rta wta_termein	; Terminzeit eingeben
	.rta wta_termtxt	; Termintext eingeben
	.rta wta_termday	; Termintage eingeben
	.rta wta_termko	; Termindaten kontrollieren

	.rta wta_noprg	; kein Programm ausführen
