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

  1. ;**************************************************************************
  2. ;
  3. ; Filename : NOTRUF.ASM
  4. ; ---------------------
  5. ;
  6. ; (c) 1990 by Thomas Lehmann
  7. ;
  8. ;
  9. ; Jackophone V5.00
  10. ;
  11. ;
  12. ; Notruf Funktionen
  13. ;
  14. ;
  15. ;**************************************************************************
  16.  
  17. MODUL_START    set    *    ; Größe des Moduls berechnen
  18.  
  19.  
  20.  
  21.  
  22. ; =========================================================================
  23. ;
  24. ; Funktion    : Notrufnr. speichern
  25. ;
  26. ; Eingang    : bei Speichern und Auswahl des Menus
  27. ;
  28. ; Ausgang    : -------
  29. ;
  30. ; Register    : Accu, X, Y
  31. ;
  32. ; (c) by Thomas Lehmann März 1993
  33. ;
  34. ; =========================================================================
  35.  
  36. sp_notruf    lda #MENU_NOTRUF    ; Untermenu Notruf ist aktiv
  37.     sta menu    ; und bei Speicher umleiten
  38.     bbs MOD_NT_SPEC,modus,put_notruf    ; Speichern Notruf bereits aktiv
  39.  
  40.     smb MOD_NT_SPEC,modus    ; NT-Speicher hat Sonderfkt.
  41.     lda #NTFKT_NOTR
  42.     sta namsp_fkt
  43.  
  44. sp_notst    stz ntspec_nr    ; akt. Notrufnr.
  45.     lda #NT_NOTRUF-1    ; 1. Namentaste für Notruf Nummern einstellen
  46.     sta last_nt    ; vorgaukeln das Taste bereits gedrückt wurde
  47.     smb ST_2SP,feap_stat    ; 2.SP ist aktiv
  48.  
  49.  
  50.     ; ============================
  51.     ; Einsprung bei Speicher Taste
  52.     ; ============================
  53. notruf_nxt    ldx ntspec_nr
  54.     inc ntspec_nr    ; nächste Rufnr. einstellen
  55.     cpx #MAX_NOTRUF    ; alle Notruf Nr. ausgegeben ?
  56.     bcs sp_notst    ; ja, von vorne anfangen
  57.  
  58.     jsr nt_nxt_spec    ; nächste Notruf NT einstellen und holen
  59.     rmb EDIT_NT,allg_stat    ; Rufnr. ist zum editieren ausgegeben
  60.     jmp keynam_sp    ; Rufnr. der NT ausgeben und speichern
  61.  
  62.  
  63.  
  64.     ; akt. gespeicherte Notruf Nummer ausgeben
  65.     ; wird über namsp_fkt von keynam_sp aufgerufen
  66.     ; --------------------------------------------
  67. put_notruf    ldx #<notruf_txt    ; Text ausgeben
  68.     ldy #>notruf_txt
  69.     jsr puttxt
  70.     lda ntspec_nr    ; akt. Nr. laden
  71.     jsr putdez9    ; und ausgeben
  72.     lda #">"
  73.     jsr putchar
  74.     jsr space
  75.     lda last_nt    ; akt. NT Speicher holen
  76.     jmp put_nt    ; Rufnummer der NT ausgeben/wählen
  77.  
  78.  
  79. notruf_txt    byte CURS_ON
  80.     shift "Not "
  81.  
  82.  
  83.  
  84.  
  85.  
  86. ; =========================================================================
  87. ;
  88. ; Funktion    : testen ob Wahlziffern mit einer Notrufnr. übereinstimmt
  89. ;
  90. ; Eingang    : -----
  91. ;
  92. ; Ausgang    : CLC == keine gültige Wahlinfo
  93. ;
  94. ; Register    : -----
  95. ;
  96. ; (c) by Thomas Lehmann März 1993
  97. ;
  98. ; =========================================================================
  99.  
  100. notruf_chk
  101.     block
  102.     pha
  103.     phx
  104.     phy
  105.  
  106.     lda #NT_BABYRUF    ; 1. Namentaste für Notruf Nummern einstellen
  107.     sta last_nt
  108.     rmb ST_2SP,feap_stat    ; 2.SP ist nicht aktiv
  109.  
  110.     ; nächste Notrufnr. kontrollieren
  111.     ; -------------------------------
  112. HLP    set MAX_NOTRUF/2    ; Anzahl NT für Notruf
  113.  
  114. nxt_not    jsr nt_nxt_spec    ; nächsten NT Speicher für Notruf holen
  115.     cmp #NT_NOTRUF+HLP    ; alle Notruf Nr. getestet ?
  116.     bcs error    ; ja, Ziffer nicht zugelassen
  117.  
  118.     jsr getnam_adr    ; Adr. der Namentaste in (nam_sp) eintragen
  119.     bcc error    ; Speicherbereich ist nicht gültig
  120.  
  121.     ; Notrufnr. mit bereits gewählten Ziffern vergleichen
  122.     ; ---------------------------------------------------
  123.     ldy #MAX_NAM_ZIFF-1    ; Ptr. auf erste Ziffer stellen
  124.     ldx #00        ; Ziffern Cnt.
  125. loop    lda (nam_sp),y    ; Ziffer aus Notruf NT holen
  126.     bbr ST_2SP,feap_stat,not_1sp    ; 2.SP ist nicht aktiv
  127.  
  128.     ; Ziffer für 2.Speicher ermitteln
  129.     ; -------------------------------
  130.     lsr        ; oberes Nibble ins untere schieben
  131.     lsr        ; Rufnr. des 2.Speichers steht im high Nibble
  132.     lsr
  133.     lsr
  134.  
  135.     ; Ziffer für 1.Speicher ermitteln
  136.     ; -------------------------------
  137. not_1sp    and #%00001111    ; oberes Nibble ausblenden
  138.     beq nxt_not    ; alle Ziffern verglichen
  139.  
  140.     cmp wahl_buff,x    ; ist es gültige Notrufnr. ?
  141.     bne nxt_not
  142.  
  143.     cpx whl_zcnt    ; alle bereits gewählten Ziffern verglichen ?
  144.     bcs end        ; ja, Wahlziffer ist gültig
  145.  
  146.     inx
  147.     dey        ; nächste Ziffer einstellen
  148.     bpl loop    ; und testen
  149.  
  150. error    clc        ; keine gültige Wahl Info
  151. end    ply
  152.     plx
  153.     pla
  154.     rts
  155.     bend
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162. ; --------------------------------------------------------------------------
  163.  
  164. HLP    set    *
  165. _NOTRUF    equ    HLP-MODUL_START        ; Größe des Moduls
  166.  
  167.