home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
World of A1200
/
World_Of_A1200.iso
/
programs
/
develop
/
as65
/
demo
/
s1
/
key_ber.asm
< prev
next >
Wrap
Assembly Source File
|
1995-02-27
|
5KB
|
222 lines
;**************************************************************************
;
; Filename : TAST_AUSW.ASM
; ------------------------
;
; (c) 1991 by Thomas Lehmann
;
;
; Jackophone V5.00
;
;
; Programmverteiler für Tasten in der X/Y-Matrix
;
;
;**************************************************************************
MODUL_START set * ; Größe des Moduls berechnen
; =========================================================================
;
; Type : Hauptprg.
;
; Eingang : Modus für automatische Tastenberechtigung einschalten
;
; Ausgang : Wähltasten auf Tastenwert Eingabe umgeleitet
; : Tasten in X/Y-Matrix umgeleitet
;
; Register : Accu, X
;
; (c) by Thomas Lehmann Januar 1991
;
; =========================================================================
set_keyber lda #WTA_KEY_BER ; Prg. bei Wähltaste
sta wta_prg
rmb MOD_NO_KEY,modus ; Tastendrücke auswerten
; 1. zu Berechtigende Taste einstellen
; ------------------------------------
stz akt_txt ; Tastenwert der 1. Taste
stz anz_txt ; aktuelle Tastennr.
bra keyber_1 ; 1. Tastentext ausgeben
; =======================
; Einsprung bei Wähltaste
; =======================
wta_keyber1 jmp bta ; wieder BTA Hauptmenu zeigen
wta_keyber cmp #BTA_END ; BTA verlassen ?
beq wta_keyber1 ; nein
cmp #10 ; `0` == nächste Tastennr. zeigen ?
beq keyber_1
cmp #BTA_NXT_MEN ; nächste Taste zeigen ?
bne wta_key_end ; nein, ungültige Taste
lda #$ff ; nächste Taste wenn
sta anz_txt ; ungültige Tastennr.
bra keyber_1
wta_key_end rts
; ==============================
; Einsprung bei gedrückter Taste
; Taste automatisch berechtigen
; ==============================
keyber lda key_val+1 ; Tastennr. der auto Ber. Taste
sta tast_tab+1,x ; Tastennr. eintragen
lda key_val ; Tastenfunktion der auto Ber. Taste
sta tast_tab,x ; Tastenfkt. eintragen
bne keyber_1 ; Tastenwert != "Taste sperren", nächste Taste
dec akt_txt ; "Taste sperren" weiter berechtigen
; =======================================
; nächste zu programmierende Taste zeigen
; =======================================
keyber_1 ldx akt_txt ; Tastenwert == Textnr. laden
stx key_val ; Tastenwert der aktuellen Taste einstellen
cpx #ANZ_TAST ; bereits alle Tasten angezeigt ?
bcs set_keyber ; ja, erneute Ausgabe von vorne
jsr get_keyber ; Textadr. der Tastenfunkt. in X-Reg. ermitteln
; Tastennr. einstellen
; --------------------
keyber_2 lda anz_txt ; akt. Tastennr. laden
cmp (ind_adr) ; Tastennr. "bis" laden
bcc keyber_3 ; Tastennr. ist gültig
stz anz_txt ; aktuelle Tastennr. == NULL
inc akt_txt ; nächste Taste einstellen
bra keyber_1 ; Berechtigungstext ermitteln
keyber_3 inc anz_txt ; nächste Tastennr. einstellen
; Berechtigungstext ausgeben
; --------------------------
keyber_4 sta key_val+1 ; Tastennr. einstellen
; Tastenwert, Nr. und Text ausgeben
; ---------------------------------
lda key_val ; Tastenwert laden
ldx key_val+1 ; Tastennr laden
jsr dp_clr
jmp put_keyber
; =========================================================================
;
; Funktion : Tastenfunktion, Nr. und Berechtigungstext ausgeben
;
; Eingang : Tastenfunktion im Accu
; Tastennr. in X-Reg.
;
; Ausgang : ---------
;
; Register : Accu
;
; (c) by Thomas Lehmann Mai 1991
;
; =========================================================================
put_keyber ?inc16 ind_adr ; Ptr. auf Tastentext
jsr putdez99 ; Tastenfunktion ausgeben
txa
jsr putdez99 ; Tastennr. ausgeben
jsr space ; SPACE ausgeben
jmp puts ; Tastentext in "ind_adr" ausgeben
; =========================================================================
;
; Funktion : Adr. des Berechtigungseintrags für Tastenfunktion holen
;
; Eingang : Tastenfunktion in X-Reg.
;
; Ausgang : Adr. der Berechtigung in (ind_adr)
;
; Register : X
;
; (c) by Thomas Lehmann Mai 1991
;
; =========================================================================
get_keyber phx ; Tastenfunktion retten
ldx #<keyber_tab ; 1. zu Berechtigende Taste einstellen
stx ind_adr
ldx #>keyber_tab
stx ind_adr+1
; Berechtigungsadresse für Tastenfunktion ermitteln
; -------------------------------------------------
plx ; Tastenfunktion zurück
keyber_lp beq keyber_end ; Funktion gefunden, Ende
?inc16 ind_adr ; Ptr. auf 1. Textzeichen
jsr strlen ; Textende ermitteln, Update "ind_adr"
dex ; nächsten Text einstellen
bra keyber_lp
keyber_end rts
; Tastenberechtigung, TW bis, Text
; --------------------------------
keyber_tab ?key 01,"keine Funktion"
?key 01,"Leitung"
?key 01,"Trennen"
?key 01,"Halten"
?key 01,"Wahlwiederholung"
?key 01,"Merker"
?key 01,"Freispr./Lauthoer"
?key 01,"Summerabschaltung"
?key 01,"Anrufbeantworter"
?key 01,"Zweitapparat"
?key 01,"Modem"
?key PRG_PORT,"Erde"
?key 01,"Kontrolle"
?key 01,"Speicher"
?key 01,"2. Speicher"
?key 01,"Ende"
?key 01,"loeschen/quittier"
?key 01,"Uhr stellen"
?key 01,"Telefonbuch"
?key MAX_NAM_TAST,"Namentaste"
?key 01,"Babyruf"
?key PRG_PORT,"Taster"
?key PRG_PORT,"Schalter"
?key 01,"Statistik"
?key 01,"BTA"
?key 01,"Version"
?key 01,"Reset"
?key 01,"Terminal"
; --------------------------------------------------------------------------
HLP set *
_KEY_BER equ HLP-MODUL_START ; Größe des Moduls