home *** CD-ROM | disk | FTP | other *** search
/ World of A1200 / World_Of_A1200.iso / programs / develop / as65 / demo / s1 / key_ber.asm < prev    next >
Assembly Source File  |  1995-02-27  |  5KB  |  222 lines

  1. ;**************************************************************************
  2. ;
  3. ; Filename : TAST_AUSW.ASM
  4. ; ------------------------
  5. ;
  6. ; (c) 1991 by Thomas Lehmann
  7. ;
  8. ;
  9. ; Jackophone V5.00
  10. ;
  11. ;
  12. ; Programmverteiler für Tasten in der X/Y-Matrix
  13. ;
  14. ;
  15. ;**************************************************************************
  16.  
  17. MODUL_START    set    *    ; Größe des Moduls berechnen
  18.  
  19.  
  20.  
  21. ; =========================================================================
  22. ;
  23. ; Type    : Hauptprg.
  24. ;
  25. ; Eingang    : Modus für automatische Tastenberechtigung einschalten
  26. ;
  27. ; Ausgang    : Wähltasten auf Tastenwert Eingabe umgeleitet
  28. ;    : Tasten in X/Y-Matrix umgeleitet
  29. ;
  30. ; Register    : Accu, X
  31. ;
  32. ; (c) by Thomas Lehmann Januar 1991
  33. ;
  34. ; =========================================================================
  35.  
  36. set_keyber    lda #WTA_KEY_BER        ; Prg. bei Wähltaste
  37.     sta wta_prg
  38.     rmb MOD_NO_KEY,modus    ; Tastendrücke auswerten
  39.  
  40.     ; 1. zu Berechtigende Taste einstellen
  41.     ; ------------------------------------
  42.     stz akt_txt    ; Tastenwert der 1. Taste
  43.     stz anz_txt    ; aktuelle Tastennr.
  44.  
  45.     bra keyber_1    ; 1. Tastentext ausgeben
  46.  
  47.  
  48.  
  49.     ; =======================
  50.     ; Einsprung bei Wähltaste
  51.     ; =======================
  52.  
  53. wta_keyber1    jmp bta        ; wieder BTA Hauptmenu zeigen
  54.  
  55. wta_keyber    cmp #BTA_END    ; BTA verlassen ?
  56.     beq wta_keyber1    ; nein
  57.  
  58.     cmp #10        ; `0` == nächste Tastennr. zeigen ?
  59.     beq keyber_1
  60.  
  61.     cmp #BTA_NXT_MEN    ; nächste Taste zeigen ?
  62.     bne wta_key_end    ; nein, ungültige Taste
  63.  
  64.     lda #$ff    ; nächste Taste wenn
  65.     sta anz_txt    ; ungültige Tastennr.
  66.     bra keyber_1
  67.  
  68. wta_key_end    rts
  69.  
  70.  
  71.     ; ==============================
  72.     ; Einsprung bei gedrückter Taste
  73.     ; Taste automatisch berechtigen
  74.     ; ==============================
  75. keyber    lda key_val+1    ; Tastennr. der auto Ber. Taste
  76.     sta tast_tab+1,x    ; Tastennr. eintragen
  77.     lda key_val    ; Tastenfunktion der auto Ber. Taste
  78.     sta tast_tab,x    ; Tastenfkt. eintragen
  79.  
  80.     bne keyber_1    ; Tastenwert != "Taste sperren", nächste Taste
  81.     dec akt_txt    ; "Taste sperren" weiter berechtigen
  82.  
  83.  
  84.  
  85.  
  86.  
  87.     ; =======================================
  88.     ; nächste zu programmierende Taste zeigen
  89.     ; =======================================
  90. keyber_1    ldx akt_txt    ; Tastenwert == Textnr. laden
  91.     stx key_val    ; Tastenwert der aktuellen Taste einstellen
  92.  
  93.     cpx #ANZ_TAST    ; bereits alle Tasten angezeigt ?
  94.     bcs set_keyber    ; ja, erneute Ausgabe von vorne
  95.  
  96.     jsr get_keyber    ; Textadr. der Tastenfunkt. in X-Reg. ermitteln
  97.  
  98.  
  99.     ; Tastennr. einstellen
  100.     ; --------------------
  101. keyber_2    lda anz_txt    ; akt. Tastennr. laden
  102.     cmp (ind_adr)    ; Tastennr. "bis" laden
  103.     bcc keyber_3    ; Tastennr. ist gültig
  104.  
  105.     stz anz_txt    ; aktuelle Tastennr. == NULL
  106.     inc akt_txt    ; nächste Taste einstellen
  107.     bra keyber_1    ; Berechtigungstext ermitteln
  108.  
  109.  
  110. keyber_3    inc anz_txt    ; nächste Tastennr. einstellen
  111.  
  112.     ; Berechtigungstext ausgeben
  113.     ; --------------------------
  114. keyber_4    sta key_val+1    ; Tastennr. einstellen
  115.  
  116.     ; Tastenwert, Nr. und Text ausgeben
  117.     ; ---------------------------------
  118.     lda key_val    ; Tastenwert laden
  119.     ldx key_val+1    ; Tastennr laden
  120.     jsr dp_clr
  121.     jmp put_keyber
  122.  
  123.  
  124.  
  125.  
  126. ; =========================================================================
  127. ;
  128. ; Funktion    : Tastenfunktion, Nr. und Berechtigungstext ausgeben
  129. ;
  130. ; Eingang    : Tastenfunktion im Accu
  131. ;      Tastennr. in X-Reg.
  132. ;
  133. ; Ausgang    : ---------
  134. ;
  135. ; Register    : Accu
  136. ;
  137. ; (c) by Thomas Lehmann Mai 1991
  138. ;
  139. ; =========================================================================
  140.  
  141. put_keyber    ?inc16    ind_adr    ; Ptr. auf Tastentext
  142.     jsr putdez99    ; Tastenfunktion ausgeben
  143.     txa
  144.     jsr putdez99    ; Tastennr. ausgeben
  145.     jsr space    ; SPACE ausgeben
  146.     jmp puts    ; Tastentext in "ind_adr" ausgeben
  147.  
  148.  
  149. ; =========================================================================
  150. ;
  151. ; Funktion    : Adr. des Berechtigungseintrags für Tastenfunktion holen
  152. ;
  153. ; Eingang    : Tastenfunktion in X-Reg.
  154. ;
  155. ; Ausgang    : Adr. der Berechtigung in (ind_adr)
  156. ;
  157. ; Register    : X
  158. ;
  159. ; (c) by Thomas Lehmann Mai 1991
  160. ;
  161. ; =========================================================================
  162.  
  163. get_keyber    phx        ; Tastenfunktion retten
  164.     ldx #<keyber_tab    ; 1. zu Berechtigende Taste einstellen
  165.     stx ind_adr
  166.     ldx #>keyber_tab
  167.     stx ind_adr+1
  168.  
  169.     ; Berechtigungsadresse für Tastenfunktion ermitteln
  170.     ; -------------------------------------------------
  171.     plx        ; Tastenfunktion zurück
  172. keyber_lp    beq keyber_end    ; Funktion gefunden, Ende
  173.  
  174.     ?inc16    ind_adr    ; Ptr. auf 1. Textzeichen
  175.     jsr strlen    ; Textende ermitteln, Update "ind_adr"
  176.     dex        ; nächsten Text einstellen
  177.     bra keyber_lp
  178.  
  179. keyber_end    rts
  180.  
  181.  
  182.  
  183. ; Tastenberechtigung, TW bis, Text
  184. ; --------------------------------
  185.  
  186. keyber_tab    ?key    01,"keine Funktion"
  187.     ?key    01,"Leitung"
  188.     ?key    01,"Trennen"
  189.     ?key    01,"Halten"
  190.     ?key    01,"Wahlwiederholung"
  191.     ?key    01,"Merker"
  192.     ?key    01,"Freispr./Lauthoer"
  193.     ?key    01,"Summerabschaltung"
  194.     ?key    01,"Anrufbeantworter"
  195.     ?key    01,"Zweitapparat"
  196.     ?key    01,"Modem"
  197.     ?key    PRG_PORT,"Erde"
  198.     ?key    01,"Kontrolle"
  199.     ?key    01,"Speicher"
  200.     ?key    01,"2. Speicher"
  201.     ?key    01,"Ende"
  202.     ?key    01,"loeschen/quittier"
  203.     ?key    01,"Uhr stellen"
  204.     ?key    01,"Telefonbuch"
  205.     ?key    MAX_NAM_TAST,"Namentaste"
  206.     ?key    01,"Babyruf"
  207.     ?key    PRG_PORT,"Taster"
  208.     ?key    PRG_PORT,"Schalter"
  209.     ?key    01,"Statistik"
  210.     ?key    01,"BTA"
  211.     ?key    01,"Version"
  212.     ?key    01,"Reset"
  213.     ?key    01,"Terminal"
  214.  
  215.  
  216.  
  217. ; --------------------------------------------------------------------------
  218.  
  219. HLP    set    *
  220. _KEY_BER    equ    HLP-MODUL_START        ; Größe des Moduls
  221.  
  222.