home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
World of A1200
/
World_Of_A1200.iso
/
programs
/
develop
/
as65
/
demo
/
s1
/
notruf.asm
< prev
next >
Wrap
Assembly Source File
|
1995-02-27
|
4KB
|
167 lines
;**************************************************************************
;
; 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