home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
World of A1200
/
World_Of_A1200.iso
/
programs
/
develop
/
as65
/
demo
/
s1
/
anruf.asm
next >
Wrap
Assembly Source File
|
1995-02-27
|
5KB
|
174 lines
;**************************************************************************
;
; Filename : ANRUF.ASM
; --------------------
;
; (c) 1990 by Thomas Lehmann
;
;
; Jackophone V5.00
;
;
; Anruferkennung
;
;
;**************************************************************************
MODUL_START set * ; Größe des Moduls berechnen
; =========================================================================
;
; Funktion : Anruf testen
;
; Eingang : zyklisch von Hauptprg.-Schleife
;
; Ausgang : Anruf-BIT=1 solange der Anruf erkannt wird
;
; Register : Accu
;
; (c) by Thomas Lehmann März 1990
;
; =========================================================================
tst_anr lda Via_portb ; Zustand der VIA einlesen
bit #ANR ; steht Anruf an ?
bne anr_timeout ; nein, Timeout testen
; programmierbaren Port bei Anruf einschalten
; -------------------------------------------
lda rel_tab+ANR_REL ; Relais aus Ber. holen
jsr port_on ; Port setzen
; Anruf aktiv eintragen
; ---------------------
tst_anr_1 smb ST_ANRSU,su_stat ; Anruf eintragen
smb ST_SU,su_stat ; Summer einschalten
smb ST_ANRLED,su_stat ; Anruf eintragen, Ltg. LED einschalten
lda #ANRIMP_TIM ; Timerwert Überbrückung Anrufimpuls laden
sta struct_tim+ANRIMP_TIM_O ; und Timer starten
lda #ANR_TIM ; Timerwert Anrufüberbrückung laden
sta struct_tim100+ANR_TIM_O ; und Timer starten
tst_anr_end rts
; Relais bei Anruf ausschalten
; ----------------------------
anr_timeout bbr ST_ANRSU,su_stat,tst_anr_end ; kein Anruf aktiv
lda rel_tab+ANR_REL ; Relais aus Ber. holen
jsr port_off ; Port löschen
; Anrufimpuls Überbrückung testen
; -------------------------------
anr_tout_1 lda struct_tim+ANRIMP_TIM_O ; Anruftimer abgelaufen ?
bne tst_anr_end ; nein, Ende
rmb ST_ANRSU,su_stat ; Anruf austragen
rmb ST_SU,su_stat ; Summer ausschalten
rts
; =========================================================================
;
; Funktion : Anruf-BIT testen und Leitungs-LED schalten
;
; Eingang : wird zyklisch von Haupt-Prg.-Schleife aufgerufen
;
; Ausgang : Ltg.-LED bei Anruf eingeschaltet
; : Ltg.-LED nach Anrufüberbrückunszeit ausgeschaltet
;
; Register : Accu
;
; (c) by Thomas Lehmann März 1990
;
; =========================================================================
anr_led bbs ST_ANRLED,su_stat,anr_led_1 ; Anruf-LED testen
anr_led_end rts ; kein Anruf, Ende
anr_led_1 bbs ST_ALD_ON,su_stat,anr_led_2 ; LED ist eingeschaltet
; Anruf-LED einschalten
; ---------------------
smb ST_ALD_ON,su_stat ; LED eingeschaltet eintragen
ldy #LD_L|LD_N ; Statusbyte laden
lda #KEY_LTG ; Tastenwert für Leitungstaste laden
jmp set_prgled ; alle zum Tastenwert gehörenden LED`s ein
; Anruf-LED ausschalten
; ---------------------
anr_led_2 lda struct_tim100+ANR_TIM_O ; Anrufüberbrückung beendet ?
bne anr_led_end ; nein, Ende
rmb ST_ANRLED,su_stat ; Anruf-LED austragen
rmb ST_ALD_ON,su_stat ; LED ausgeschaltet eintragen
; Anzahl Anrufe erhöhen
; ---------------------
?inc16 struct_stat+STAT_ANR ; Anzahl Anrufe+1
anr_led_3 bbs LTG_BEL,ltg_stat,anr_led_end ; Ltg. ist bereits belegt
; ===========================
; Anruf wurde nicht abgefragt
; ===========================
; Anzahl nicht abgefragter Anrufe erhöhen
; ---------------------------------------
inc struct_stat+STAT_NANR ; Anzahl Anrufe+1
; Anruf LED ausschalten
; ---------------------
ldy #LD_L|LD_OFF ; LED-Wert laden
lda #KEY_LTG ; Tastenwert für Leitungstaste laden
jmp set_prgled ; alle zum Tastenwert gehörenden LED`s aus
; =========================================================================
;
; Funktion : Anzahl der nicht abgefragten Anrufe über LED`s anzeigen
;
; Eingang : jede Sekunde bei Ausgabe der Anrufe im Display
;
; Ausgang : LED`s je nach Anzahl der Anrufe geschaltet wenn berechtigt
;
; Register : Accu, X
;
; (c) by Thomas Lehmann Mai 1990
;
; =========================================================================
nanr_led bbs DIP_ANRLED,dip_stat,nanr_end ; LED`s einschalten nicht ber.
ldx #ANZ_ANR_LED ; Anzahl der LED-Anzeigen für Anrufe laden
lda #$00 ; Wert für LED aus laden
; LED`s ein/ausschalten
; ---------------------
nanr_led_lp dex ; nächste LED einstellen
bmi nanr_end ; alle LED`s geschaltet, Ende
cpx struct_stat+STAT_NANR ; 1. eingeschaltetet LED ?
bcs nanr_led_1 ; nein, LED ausschalten
lda #$ff ; LED-Wert für ein laden
nanr_led_1 sta led_ram,x ; LED schalten
bra nanr_led_lp
nanr_end rts
; --------------------------------------------------------------------------
HLP set *
_ANRUF equ HLP-MODUL_START ; Größe des Moduls