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

MODUL_START	set	*	; Größe des Moduls berechnen




; =========================================================================
;
; Funktion	: Notrufnr. speichern
;
; Eingang	: bei Speichern und Auswahl des Menus
;
; Ausgang	: -------
;
; Register	: Accu, X, Y
;
; (c) by Thomas Lehmann März 1993
;
; =========================================================================

sp_notruf	lda #MENU_NOTRUF	; Untermenu Notruf ist aktiv
	sta menu	; und bei Speicher umleiten
	bbs MOD_NT_SPEC,modus,put_notruf	; Speichern Notruf bereits aktiv

	smb MOD_NT_SPEC,modus	; NT-Speicher hat Sonderfkt.
	lda #NTFKT_NOTR
	sta namsp_fkt

sp_notst	stz ntspec_nr	; akt. Notrufnr.
	lda #NT_NOTRUF-1	; 1. Namentaste für Notruf Nummern einstellen
	sta last_nt	; vorgaukeln das Taste bereits gedrückt wurde
	smb ST_2SP,feap_stat	; 2.SP ist aktiv


	; ============================
	; Einsprung bei Speicher Taste
	; ============================
notruf_nxt	ldx ntspec_nr
	inc ntspec_nr	; nächste Rufnr. einstellen
	cpx #MAX_NOTRUF	; alle Notruf Nr. ausgegeben ?
	bcs sp_notst	; ja, von vorne anfangen

	jsr nt_nxt_spec	; nächste Notruf NT einstellen und holen
	rmb EDIT_NT,allg_stat	; Rufnr. ist zum editieren ausgegeben
	jmp keynam_sp	; Rufnr. der NT ausgeben und speichern



	; akt. gespeicherte Notruf Nummer ausgeben
	; wird über namsp_fkt von keynam_sp aufgerufen
	; --------------------------------------------
put_notruf	ldx #<notruf_txt	; Text ausgeben
	ldy #>notruf_txt
	jsr puttxt
	lda ntspec_nr	; akt. Nr. laden
	jsr putdez9	; und ausgeben
	lda #">"
	jsr putchar
	jsr space
	lda last_nt	; akt. NT Speicher holen
	jmp put_nt	; Rufnummer der NT ausgeben/wählen


notruf_txt	byte CURS_ON
	shift "Not "





; =========================================================================
;
; Funktion	: testen ob Wahlziffern mit einer Notrufnr. übereinstimmt
;
; Eingang	: -----
;
; Ausgang	: CLC == keine gültige Wahlinfo
;
; Register	: -----
;
; (c) by Thomas Lehmann März 1993
;
; =========================================================================

notruf_chk
	block
	pha
	phx
	phy

	lda #NT_BABYRUF	; 1. Namentaste für Notruf Nummern einstellen
	sta last_nt
	rmb ST_2SP,feap_stat	; 2.SP ist nicht aktiv

	; nächste Notrufnr. kontrollieren
	; -------------------------------
HLP	set MAX_NOTRUF/2	; Anzahl NT für Notruf

nxt_not	jsr nt_nxt_spec	; nächsten NT Speicher für Notruf holen
	cmp #NT_NOTRUF+HLP	; alle Notruf Nr. getestet ?
	bcs error	; ja, Ziffer nicht zugelassen

	jsr getnam_adr	; Adr. der Namentaste in (nam_sp) eintragen
	bcc error	; Speicherbereich ist nicht gültig

	; Notrufnr. mit bereits gewählten Ziffern vergleichen
	; ---------------------------------------------------
	ldy #MAX_NAM_ZIFF-1	; Ptr. auf erste Ziffer stellen
	ldx #00		; Ziffern Cnt.
loop	lda (nam_sp),y	; Ziffer aus Notruf NT holen
	bbr ST_2SP,feap_stat,not_1sp	; 2.SP ist nicht aktiv

	; Ziffer für 2.Speicher ermitteln
	; -------------------------------
	lsr		; oberes Nibble ins untere schieben
	lsr		; Rufnr. des 2.Speichers steht im high Nibble
	lsr
	lsr

	; Ziffer für 1.Speicher ermitteln
	; -------------------------------
not_1sp	and #%00001111	; oberes Nibble ausblenden
	beq nxt_not	; alle Ziffern verglichen

	cmp wahl_buff,x	; ist es gültige Notrufnr. ?
	bne nxt_not

	cpx whl_zcnt	; alle bereits gewählten Ziffern verglichen ?
	bcs end		; ja, Wahlziffer ist gültig

	inx
	dey		; nächste Ziffer einstellen
	bpl loop	; und testen

error	clc		; keine gültige Wahl Info
end	ply
	plx
	pla
	rts
	bend






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

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

