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

  1. ;**************************************************************************
  2. ;
  3. ; Filename : ANRUF.ASM
  4. ; --------------------
  5. ;
  6. ; (c) 1990 by Thomas Lehmann
  7. ;
  8. ;
  9. ; Jackophone V5.00
  10. ;
  11. ;
  12. ; Anruferkennung
  13. ;
  14. ;
  15. ;**************************************************************************
  16.  
  17. MODUL_START    set    *        ; Größe des Moduls berechnen
  18.  
  19. ; =========================================================================
  20. ;
  21. ; Funktion    : Anruf testen
  22. ;
  23. ; Eingang    : zyklisch von Hauptprg.-Schleife
  24. ;
  25. ; Ausgang    : Anruf-BIT=1 solange der Anruf erkannt wird
  26. ;
  27. ; Register    : Accu
  28. ;
  29. ; (c) by Thomas Lehmann März 1990
  30. ;
  31. ; =========================================================================
  32.  
  33. tst_anr    lda Via_portb        ; Zustand der VIA einlesen
  34.     bit #ANR        ; steht Anruf an ?
  35.     bne anr_timeout        ; nein, Timeout testen
  36.  
  37.     ; programmierbaren Port bei Anruf einschalten
  38.     ; -------------------------------------------
  39.     lda rel_tab+ANR_REL        ; Relais aus Ber. holen
  40.     jsr port_on        ; Port setzen
  41.  
  42.     ; Anruf aktiv eintragen
  43.     ; ---------------------
  44. tst_anr_1    smb ST_ANRSU,su_stat    ; Anruf eintragen
  45.     smb ST_SU,su_stat        ; Summer einschalten
  46.     smb ST_ANRLED,su_stat    ; Anruf eintragen, Ltg. LED einschalten
  47.     lda #ANRIMP_TIM        ; Timerwert Überbrückung Anrufimpuls laden
  48.     sta struct_tim+ANRIMP_TIM_O    ; und Timer starten
  49.  
  50.     lda #ANR_TIM        ; Timerwert Anrufüberbrückung laden
  51.     sta struct_tim100+ANR_TIM_O    ; und Timer starten
  52. tst_anr_end    rts
  53.  
  54.  
  55.     ; Relais bei Anruf ausschalten
  56.     ; ----------------------------
  57. anr_timeout    bbr ST_ANRSU,su_stat,tst_anr_end    ; kein Anruf aktiv
  58.  
  59.     lda rel_tab+ANR_REL    ; Relais aus Ber. holen
  60.     jsr port_off        ; Port löschen
  61.  
  62.  
  63.     ; Anrufimpuls Überbrückung testen
  64.     ; -------------------------------
  65. anr_tout_1    lda struct_tim+ANRIMP_TIM_O    ; Anruftimer abgelaufen ?
  66.     bne tst_anr_end        ; nein, Ende
  67.  
  68.     rmb ST_ANRSU,su_stat    ; Anruf austragen
  69.     rmb ST_SU,su_stat        ; Summer ausschalten
  70.     rts
  71.  
  72.  
  73. ; =========================================================================
  74. ;
  75. ; Funktion    : Anruf-BIT testen und Leitungs-LED schalten
  76. ;
  77. ; Eingang    : wird zyklisch von Haupt-Prg.-Schleife aufgerufen
  78. ;
  79. ; Ausgang    : Ltg.-LED bei Anruf eingeschaltet
  80. ;    : Ltg.-LED nach Anrufüberbrückunszeit ausgeschaltet
  81. ;
  82. ; Register    : Accu
  83. ;
  84. ; (c) by Thomas Lehmann März 1990
  85. ;
  86. ; =========================================================================
  87.  
  88. anr_led    bbs ST_ANRLED,su_stat,anr_led_1    ; Anruf-LED testen
  89.  
  90. anr_led_end    rts            ; kein Anruf, Ende
  91.  
  92.  
  93. anr_led_1    bbs ST_ALD_ON,su_stat,anr_led_2    ; LED ist eingeschaltet
  94.  
  95.     ; Anruf-LED einschalten
  96.     ; ---------------------
  97.     smb ST_ALD_ON,su_stat    ; LED eingeschaltet eintragen
  98.     ldy #LD_L|LD_N        ; Statusbyte laden
  99.  
  100.     lda #KEY_LTG        ; Tastenwert für Leitungstaste laden
  101.     jmp set_prgled        ; alle zum Tastenwert gehörenden LED`s ein
  102.  
  103.  
  104.     ; Anruf-LED ausschalten
  105.     ; ---------------------
  106. anr_led_2    lda struct_tim100+ANR_TIM_O    ; Anrufüberbrückung beendet ?
  107.     bne anr_led_end        ; nein, Ende
  108.  
  109.     rmb ST_ANRLED,su_stat    ; Anruf-LED austragen
  110.     rmb ST_ALD_ON,su_stat    ; LED ausgeschaltet eintragen
  111.  
  112.     ; Anzahl Anrufe erhöhen
  113.     ; ---------------------
  114.     ?inc16 struct_stat+STAT_ANR    ; Anzahl Anrufe+1
  115.  
  116. anr_led_3    bbs LTG_BEL,ltg_stat,anr_led_end    ; Ltg. ist bereits belegt
  117.  
  118.  
  119.     ; ===========================
  120.     ; Anruf wurde nicht abgefragt
  121.     ; ===========================
  122.  
  123.     ; Anzahl nicht abgefragter Anrufe erhöhen
  124.     ; ---------------------------------------
  125.     inc struct_stat+STAT_NANR    ; Anzahl Anrufe+1
  126.  
  127.     ; Anruf LED ausschalten
  128.     ; ---------------------
  129.     ldy #LD_L|LD_OFF        ; LED-Wert laden
  130.     lda #KEY_LTG        ; Tastenwert für Leitungstaste laden
  131.     jmp set_prgled        ; alle zum Tastenwert gehörenden LED`s aus
  132.  
  133.  
  134. ; =========================================================================
  135. ;
  136. ; Funktion    : Anzahl der nicht abgefragten Anrufe über LED`s anzeigen
  137. ;
  138. ; Eingang    : jede Sekunde bei Ausgabe der Anrufe im Display
  139. ;
  140. ; Ausgang    : LED`s je nach Anzahl der Anrufe geschaltet wenn berechtigt
  141. ;
  142. ; Register    : Accu, X
  143. ;
  144. ; (c) by Thomas Lehmann Mai 1990
  145. ;
  146. ; =========================================================================
  147.  
  148. nanr_led    bbs DIP_ANRLED,dip_stat,nanr_end    ; LED`s einschalten nicht ber.
  149.  
  150.     ldx #ANZ_ANR_LED        ; Anzahl der LED-Anzeigen für Anrufe laden
  151.     lda #$00        ; Wert für LED aus laden
  152.  
  153.     ; LED`s ein/ausschalten
  154.     ; ---------------------
  155. nanr_led_lp    dex            ; nächste LED einstellen
  156.     bmi nanr_end        ; alle LED`s geschaltet, Ende
  157.  
  158.     cpx struct_stat+STAT_NANR    ; 1. eingeschaltetet LED ?
  159.     bcs nanr_led_1        ; nein, LED ausschalten
  160.  
  161.     lda #$ff        ; LED-Wert für ein laden
  162. nanr_led_1    sta led_ram,x        ; LED schalten
  163.     bra nanr_led_lp
  164.  
  165. nanr_end    rts
  166.  
  167.  
  168.  
  169. ; --------------------------------------------------------------------------
  170.  
  171. HLP    set    *
  172. _ANRUF    equ    HLP-MODUL_START        ; Größe des Moduls
  173.  
  174.