home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
World of A1200
/
World_Of_A1200.iso
/
programs
/
develop
/
as65
/
demo
/
s1
/
funktast.asm
< prev
next >
Wrap
Assembly Source File
|
1995-02-27
|
6KB
|
254 lines
;**************************************************************************
;
; Filename : FUNKTAST.ASM
; -----------------------
;
; (c) 1990/91 by Thomas Lehmann
;
;
; Jackophone V5.00
;
;
; Funktionstasten
;
;
;**************************************************************************
MODUL_START set * ; Größe des Moduls berechnen
; =========================================================================
;
; Funktion : Freisprech bzw. Lauthörtaste auswerten
; Freisprechen wird durch zweimaliges Betätigen bei
; ausgehangenem GU aktiviert
;
; GU eingehangen -> rmb ST_GU,feap_stat
; folgende Funktion der FS bzw. LH Einrichtung:
; ---------------------------------------------
; FS_TASTE : FS deaktiv:
; GU eingehangen -> LTG. bel., FS ein, LED rechts
; GU ausgehoben -> LTG. bel., FS ein, LED links
;
; FS_TASTE : FS aktiv:
; GU eingehangen -> nichts
; GU ausgehoben -> FS aus, LED`s aus
;
;
; GU : GU aushängen ->
; FS aus, LED`s aus
;
; GU einhängen ->
; FS aktiv : nichts
; FS deaktiv : Ltg. trennen
;
; Ltg bel. : GU eingehangen ->
; FS ein, LED rechts
; GU ausgehoben ->
; nichts
;
;
;
; Eingang : bei Freisprechtaste
;
; Ausgang : Freisprechen ein/ausgeschaltet
;
; Register : Y
;
; (c) by Thomas Lehmann März 1990
;
; =========================================================================
key_fslh bbr ST_FSLH,feap_stat,fslh_on_1 ; FS ist aus
; ======================
; Freisprechen ist aktiv
; ======================
bbr ST_GU,feap_stat,fslh_end ; GU ist eingehangen
bbr DIP_FS,dip_stat,fslh_1 ; Fernsprecher mit Lauthören
bbs DIP_FS_MOD,dip_stat,fslh_1 ; normale FS Funktion
inc fs_stat
lda fs_stat
cmp #2
bcc fslh_end ; nein jetzt FS, noch nicht trennen
stz fs_stat
fslh_1 rmb ST_FSLH,feap_stat ; FS/LH ausschalten
rts
; =====================================
; Freisprechen ist deaktiv, einschalten
; =====================================
fslh_on_1 bbs LTG_DURCH,ltg_stat,fslh_on_2 ; Ltg. ist bereits belegt
jsr key_ltg ; Comfortanschaltung bei FS-Taste
fslh_on_2 smb ST_FSLH,feap_stat ; FS/LH einschalten
fslh_end rts
; =========================================================================
;
; Funktion : Erde wählen, durch Taste oder Zielstring
; : Relais für Erdtaste 500mS angezogen
;
; Eingang : bei Wahl und Erdziffer
;
; Ausgang : ------
;
; Register : Accu, X, Y
;
; (c) by Thomas Lehmann Mai 1990
;
; =========================================================================
wahl_erde
block
lda #KEY_ERDE ; Tastenwert der ERDTASTE laden
ldx #$fe ; Offset auf Tastenberechtigung, erster TW
ldy #$ff ; nur nach TW suchen
jsr search_key ; Erdtaste suchen
bcc end ; Taste nicht gefunden
; Erdtaste gefunden, Relais einschalten
; -------------------------------------
erde_found lda tast_tab+1,x ; Relais laden
sta erd_rel ; Relais für Erdtaste merken
jsr port_on ; Port setzen
lda #ERD_TIM ; Timerwert Erde wählen laden
sta struct_tim100+ERD_TIM_O ; Timer starten
smb WHL_ERDE,ltg_stat ; Erde wird gewählt eintragen
end rts
bend
; =========================================================================
;
; Funktion : Taster simulieren
;
; Eingang : bei Taster oder Erdtaste
; : Offset auf Tastaturtabelle in X-Reg.
; : Tastenwert im Accu
;
; Ausgang : bei Taster :
; : ------------
; : frei progr. Relais für Dauer des Tastendrucks eingeschaltet
;
; : bei Erdtaste :
; : --------------
; : Comfortanschaltung
; : oder auf Namentaste gespeichert
;
; Register : Accu, X, Y
;
; (c) by Thomas Lehmann Mai 1990
;
; =========================================================================
key_erde lda #ERD_ZIFF ; Wert für Erdtaste laden
bbr MOD_SP,modus,key_erd_1 ; Speichern nicht aktiv
jmp wta_spnam ; Erdtaste als Namenziffer eintragen
key_erd_1 jmp whl_ziff ; Erde wählen
; Einsprung bei Taster
; --------------------
key_taster sta taster_tw ; Tastenwert für Taste loslassen eintragen
smb TASTER,allg_stat ; Relais zurück wenn Taste losgelassen
pha ; TW retten
lda tast_tab+1,x ; Tastennr. laden == Relaisnr.
sta taster_ind ; Tastennr. merken
tax ; für "set_twnrled"
jsr port_on ; Port im Accu setzen
pla
ldy #LD_L|LD_ON ; LED-Wert laden
jmp set_twnrled ; LED einschalten
; ==============================================
; Routine wird von Hauptprg. Schleife aufgerufen
; testen ob Taster noch gedrückt ist
; ==============================================
taster_los bbr TASTER,allg_stat,taster_end ; Taste war nicht gedrückt
lda taster_tw ; Tastenwert laden
cmp tw ; Taster oder Erdtaste noch gedrückt ?
beq taster_end ; ja, Ende
rmb TASTER,allg_stat ; Relais zurückgesetzt eintragen
ldy #LD_L|LD_OFF ; LED-Wert laden
ldx taster_ind ; Tastennr. holen
jsr set_twnrled ; LED ausschalten
txa ; Tastennr. laden == Relaisnr.
jmp port_off ; Port löschen
taster_end rts
; =========================================================================
;
; Funktion : Port über Schalter ein/aus
;
; Eingang : bei Schalter
; : Offset auf Tastaturtabelle in X-Reg.
; : Tastenwert im Accu
;
; Ausgang : frei programmierbares Relais ein/ausgeschaltet
;
; Register : Accu, X
;
; (c) by Thomas Lehmann Mai 1990
;
; =========================================================================
key_schalt pha ; TW retten
lda tast_tab+1,x ; Tastennr. laden == Relaisnr.
tax ; Tastennr. für "set_twnrled"
jsr port_tst ; ist Port gesetzt ?
bcs schalt_off ; ja, Relais ausschalten
; Port einschalten
; ----------------
jsr port_on ; Port setzen
ldy #LD_L|LD_ON ; LED-Wert laden
bra schalt_led ; LED einschalten
; Port ausschalten
; ----------------
schalt_off jsr port_off ; Port löschen
ldy #LD_L|LD_OFF ; LED-Wert laden
schalt_led pla ; Tastenwert zurück
jmp set_twnrled ; LED ausschalten
; --------------------------------------------------------------------------
HLP set *
_FUNKTAST equ HLP-MODUL_START ; Größe des Moduls