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

MODUL_START	set	*	; Größe des Moduls berechnen

; =========================================================================
;
; Funktion	: Statistik Anzeigen
;	  die Statistik-Anzeige kann über Direkt-Wahl oder Kontrollmenu
;	  eingeleitet werden
;
; Eingang	: ---------
;
; Ausgang	: Wähltasten umgeleitet
;	: Kontrolltaste umgeleitet
;	: erstes Statistikprg. eingestellt
;
; Register	: Accu
;
; (c) by Thomas Lehmann Mai 1990
;
; =========================================================================

	; -------------------------
	; Einsprung bei Direkt-Wahl
	; -------------------------
key_stat	jsr key_ende	; Speichern/Kontrolle ausschalten
	smb MOD_KO,modus	; Kontrollmodus aktiv eintragen

	ldy #LD_L|LD_ON	; LED-Wert laden
	lda #KEY_KO	; Tastenwert laden
	jsr set_prgled	; LED in Kontrolltaste einschalten


	; ------------------------------------
	; Einsprung bei Wahl über Kontrollmenu
	; ------------------------------------
statistik	lda #WTA_STAT	; Statistikprg. Nr. laden
	sta wta_prg	; und bei Wähl/Löschtaste ausführen
	lda #MENU_STAT	; Untermenu Statistik ist aktiv
	sta menu	; und bei Speicher/Kontrolltaste umleiten
	stz akt_stat	; erste Prg.Nr. für Statistik einstellen

	ldx #<stat_txt	; Textadr. laden
	ldy #>stat_txt
	lda #ANZ_STTXT	; Anzahl der Texte laden
	jsr init_dsptxt	; Textwahl initialisieren

	bra stat_out_1	; und Statistik ausgeben


stat_txt	byte	DSP_CLR
	shift "Anrufe gesamt: "

	byte	DSP_CLR
	shift "abgehende Gespr.: "

	byte	DSP_CLR
	shift "Einh.:"



; =========================================================================
;
; Funktion	: Prg. Verteiler für Statistikausgaben
;
; Eingang	: bei Wähltaste und eingeschaltetem Statistik-Modus
;	: Tastenwert (1 bis ...) im Accu
;	: Wähltasten nur für Löschfunktion umgeleitet !!!
;
; Ausgang	: Statistikwerte im Display
;	: Statistikdaten müßen 2 Byte groß sein
;
; Register	: Accu, X, Y
;
; (c) by Thomas Lehmann Mai 1990
;
; =========================================================================

	; !! Tabelle muß als erstes alle "stat_val" ausführen
	; ---------------------------------------------------
stat_tab	word stat_val	; Anrufe gesamt
	word stat_val	; abgehende Gespräche
	word stat_geb	; Gebühreneinheiten
	word statistik	; Neustart

wta_stat	rts		; Wähltasten nicht zugelassen, Ende


	; Einsprung bei Speicher/Kontrolltaste
	; ------------------------------------
stat_out	jsr nxt_dsptxt	; nächsten Text ausgeben
stat_out_1	lda akt_stat	; akt. Prg. Nr. für Statistikausgabe laden
	inc akt_stat	; nächste Prg. Nr. für Statistik einstellen
	tay		; zur weiteren Verwendung in Sub-Routinen
	asl a		; Offset auf Tabelle erzeugen
	tax
	jmp (stat_tab,x)	; Programm ausführen





; =========================================================================
;
; Funktion	: Ausgaben der Statistik Werte in 5-stellig dezimal
;
; Eingang	: Statistik Nr. in Y
;
; Ausgang	: -------
;
; Register	: Accu, X, Y
;
; (c) by Thomas Lehmann Mai 1990
;
; =========================================================================

stat_offs	byte STAT_ANR	; Struktur Offset für Anzahl Anrufe
	byte STAT_GSPR	; Struktur Offset für Anzahl Gespräche
	byte STAT_GEB	; Struktur Offset für Gebühren


	; Statistikwert ausgeben
	; ----------------------
stat_val	ldx stat_offs,y	; Pointer auf Stuktur aus Tabelle holen
	lda struct_stat,x	; low Byte des Werts laden
	pha
	lda struct_stat+1,x ; dito high byte
	plx		; und für Ausgabe eintragen
	jmp putdez16	; und 5-stellig dezimal ausgeben


; =========================================================================
;
; Funktion	: Statistik Wert löschen
;
; Eingang	: bei Löschtaste und eingeschaltetem Statistik-Modus
;
; Ausgang	: -------
;
; Register	: X, Y
;
; (c) by Thomas Lehmann Mai 1990
;
; =========================================================================

stat_clr	ldy akt_stat	; akt. Nr. für Statistik
	dey
	ldx stat_offs,y	; Offset auf Speicherbereich aus Tabelle holen
	stz struct_stat,x	; low Byte des Werts laden
	stz struct_stat+1,x ; dito high byte
	bra stat_out	; nächsten Text und Statistik Wert ausgeben




; =========================================================================
;
; Funktion	: Gebühreneinheiten und DM Betrag ausgeben
;
; Eingang	: Statistik Nr. in Y
;
; Ausgang	: -------
;
; Register	: Accu, X, Y
;
; (c) by Thomas Lehmann Oktober 1991
;
; =========================================================================

stat_geb	jsr stat_val	; Anzahl Gebühreneinheiten ausgeben

	lda #12		; Cursorposition für Text
	jsr put_dm_txt	; "DM:" ausgeben

	; DM Betrag berechnen
	; -------------------
	ldx struct_stat+STAT_GEB	; low Byte des Werts laden
	lda struct_stat+STAT_GEB+1	; dito high byte
	jsr calc_geb_dm	; DM Betrag für Gebühren berrechnen
			; DM in Accu, X  Pfennige in Y
	jmp put_dm	; Betrag in DM.Pf ausgeben





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

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

