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

  1. ;**************************************************************************
  2. ;
  3. ; Filename : FUNKTAST.ASM
  4. ; -----------------------
  5. ;
  6. ; (c) 1990/91 by Thomas Lehmann
  7. ;
  8. ;
  9. ; Jackophone V5.00
  10. ;
  11. ;
  12. ; Funktionstasten
  13. ;
  14. ;
  15. ;**************************************************************************
  16.  
  17.  
  18. MODUL_START    set    *    ; Größe des Moduls berechnen
  19.  
  20. ; =========================================================================
  21. ;
  22. ; Funktion    : Freisprech bzw. Lauthörtaste auswerten
  23. ;      Freisprechen wird durch zweimaliges Betätigen bei
  24. ;      ausgehangenem GU aktiviert
  25. ;
  26. ;      GU eingehangen -> rmb ST_GU,feap_stat
  27. ;      folgende Funktion der FS bzw. LH Einrichtung:
  28. ;      ---------------------------------------------
  29. ; FS_TASTE    :    FS deaktiv:
  30. ;        GU eingehangen ->  LTG. bel., FS ein, LED rechts
  31. ;        GU ausgehoben  ->  LTG. bel., FS ein, LED links
  32. ;
  33. ; FS_TASTE    :    FS aktiv:
  34. ;        GU eingehangen ->  nichts
  35. ;        GU ausgehoben  ->  FS aus, LED`s aus
  36. ;
  37. ;
  38. ; GU    :    GU aushängen ->
  39. ;            FS aus, LED`s aus
  40. ;
  41. ;         GU einhängen ->
  42. ;             FS aktiv    : nichts
  43. ;            FS deaktiv : Ltg. trennen
  44. ;
  45. ; Ltg bel.    :    GU eingehangen ->
  46. ;             FS ein, LED rechts
  47. ;         GU ausgehoben ->
  48. ;             nichts
  49. ;
  50. ;
  51. ;
  52. ; Eingang    : bei Freisprechtaste
  53. ;
  54. ; Ausgang    : Freisprechen ein/ausgeschaltet
  55. ;
  56. ; Register    : Y
  57. ;
  58. ; (c) by Thomas Lehmann März 1990
  59. ;
  60. ; =========================================================================
  61.  
  62. key_fslh    bbr ST_FSLH,feap_stat,fslh_on_1    ; FS ist aus
  63.  
  64.  
  65.     ; ======================
  66.     ; Freisprechen ist aktiv
  67.     ; ======================
  68.     bbr ST_GU,feap_stat,fslh_end    ; GU ist eingehangen
  69.     bbr DIP_FS,dip_stat,fslh_1    ; Fernsprecher mit Lauthören
  70.     bbs DIP_FS_MOD,dip_stat,fslh_1    ; normale FS Funktion
  71.  
  72.     inc fs_stat
  73.     lda fs_stat
  74.     cmp #2
  75.     bcc fslh_end    ; nein jetzt FS, noch nicht trennen
  76.  
  77.     stz fs_stat
  78.  
  79.  
  80. fslh_1    rmb ST_FSLH,feap_stat    ; FS/LH ausschalten
  81.     rts
  82.  
  83.  
  84.  
  85.     ; =====================================
  86.     ; Freisprechen ist deaktiv, einschalten
  87.     ; =====================================
  88. fslh_on_1    bbs LTG_DURCH,ltg_stat,fslh_on_2    ; Ltg. ist bereits belegt
  89.  
  90.     jsr key_ltg    ; Comfortanschaltung bei FS-Taste
  91.  
  92. fslh_on_2    smb ST_FSLH,feap_stat    ; FS/LH einschalten
  93. fslh_end    rts
  94.  
  95.  
  96. ; =========================================================================
  97. ;
  98. ; Funktion    : Erde wählen, durch Taste oder Zielstring
  99. ;     : Relais für Erdtaste 500mS angezogen
  100. ;
  101. ; Eingang    : bei Wahl und Erdziffer
  102. ;
  103. ; Ausgang    : ------
  104. ;
  105. ; Register    : Accu, X, Y
  106. ;
  107. ; (c) by Thomas Lehmann Mai 1990
  108. ;
  109. ; =========================================================================
  110.  
  111. wahl_erde
  112.     block
  113.     lda #KEY_ERDE    ; Tastenwert der ERDTASTE laden
  114.     ldx #$fe    ; Offset auf Tastenberechtigung, erster TW
  115.     ldy #$ff    ; nur nach TW suchen
  116.     jsr search_key    ; Erdtaste suchen
  117.     bcc end        ; Taste nicht gefunden
  118.  
  119.     ; Erdtaste gefunden, Relais einschalten
  120.     ; -------------------------------------
  121. erde_found    lda tast_tab+1,x    ; Relais laden
  122.     sta erd_rel    ; Relais für Erdtaste merken
  123.     jsr port_on    ; Port setzen
  124.  
  125.     lda #ERD_TIM    ; Timerwert Erde wählen laden
  126.     sta struct_tim100+ERD_TIM_O    ; Timer starten
  127.     smb WHL_ERDE,ltg_stat    ; Erde wird gewählt eintragen
  128. end    rts
  129.     bend
  130.  
  131.  
  132.  
  133.  
  134. ; =========================================================================
  135. ;
  136. ; Funktion    : Taster simulieren
  137. ;
  138. ; Eingang    : bei Taster oder Erdtaste
  139. ;    : Offset auf Tastaturtabelle in X-Reg.
  140. ;    : Tastenwert im Accu
  141. ;
  142. ; Ausgang    : bei Taster :
  143. ;    : ------------
  144. ;    : frei progr. Relais für Dauer des Tastendrucks eingeschaltet
  145. ;
  146. ;    : bei Erdtaste :
  147. ;    : --------------
  148. ;    : Comfortanschaltung
  149. ;    : oder auf Namentaste gespeichert
  150. ;
  151. ; Register    : Accu, X, Y
  152. ;
  153. ; (c) by Thomas Lehmann Mai 1990
  154. ;
  155. ; =========================================================================
  156.  
  157. key_erde    lda #ERD_ZIFF    ; Wert für Erdtaste laden
  158.     bbr MOD_SP,modus,key_erd_1    ; Speichern nicht aktiv
  159.  
  160.     jmp wta_spnam    ; Erdtaste als Namenziffer eintragen
  161.  
  162. key_erd_1    jmp whl_ziff    ; Erde wählen
  163.  
  164.  
  165.  
  166.     ; Einsprung bei Taster
  167.     ; --------------------
  168. key_taster    sta taster_tw    ; Tastenwert für Taste loslassen eintragen
  169.  
  170.     smb TASTER,allg_stat    ; Relais zurück wenn Taste losgelassen
  171.     pha        ; TW retten
  172.     lda tast_tab+1,x    ; Tastennr. laden == Relaisnr.
  173.     sta taster_ind    ; Tastennr. merken
  174.     tax        ; für "set_twnrled"
  175.     jsr port_on    ; Port im Accu setzen
  176.     pla
  177.     ldy #LD_L|LD_ON    ; LED-Wert laden
  178.     jmp set_twnrled    ; LED einschalten
  179.  
  180.  
  181.  
  182.     ; ==============================================
  183.     ; Routine wird von Hauptprg. Schleife aufgerufen
  184.     ; testen ob Taster noch gedrückt ist
  185.     ; ==============================================
  186. taster_los    bbr TASTER,allg_stat,taster_end    ; Taste war nicht gedrückt
  187.  
  188.     lda taster_tw    ; Tastenwert laden
  189.     cmp tw        ; Taster oder Erdtaste noch gedrückt ?
  190.     beq taster_end    ; ja, Ende
  191.  
  192.     rmb TASTER,allg_stat    ; Relais zurückgesetzt eintragen
  193.     ldy #LD_L|LD_OFF    ; LED-Wert laden
  194.     ldx taster_ind    ; Tastennr. holen
  195.  
  196.     jsr set_twnrled    ; LED ausschalten
  197.  
  198.     txa        ; Tastennr. laden == Relaisnr.
  199.     jmp port_off    ; Port löschen
  200.  
  201. taster_end    rts
  202.  
  203.  
  204. ; =========================================================================
  205. ;
  206. ; Funktion    : Port über Schalter ein/aus
  207. ;
  208. ; Eingang    : bei Schalter
  209. ;    : Offset auf Tastaturtabelle in X-Reg.
  210. ;    : Tastenwert im Accu
  211. ;
  212. ; Ausgang    : frei programmierbares Relais ein/ausgeschaltet
  213. ;
  214. ; Register    : Accu, X
  215. ;
  216. ; (c) by Thomas Lehmann Mai 1990
  217. ;
  218. ; =========================================================================
  219.  
  220. key_schalt    pha        ; TW retten
  221.     lda tast_tab+1,x    ; Tastennr. laden == Relaisnr.
  222.     tax        ; Tastennr. für "set_twnrled"
  223.  
  224.     jsr port_tst    ; ist Port gesetzt ?
  225.     bcs schalt_off    ; ja, Relais ausschalten
  226.  
  227.  
  228.     ; Port einschalten
  229.     ; ----------------
  230.     jsr port_on    ; Port setzen
  231.  
  232.     ldy #LD_L|LD_ON    ; LED-Wert laden
  233.     bra schalt_led    ; LED einschalten
  234.  
  235.  
  236.     ; Port ausschalten
  237.     ; ----------------
  238. schalt_off    jsr port_off    ; Port löschen
  239.  
  240.     ldy #LD_L|LD_OFF    ; LED-Wert laden
  241. schalt_led    pla        ; Tastenwert zurück
  242.     jmp set_twnrled    ; LED ausschalten
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249. ; --------------------------------------------------------------------------
  250.  
  251. HLP    set    *
  252. _FUNKTAST    equ    HLP-MODUL_START        ; Größe des Moduls
  253.  
  254.