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

  1. ;**************************************************************************
  2. ;
  3. ; Filename : UTIL.ASM
  4. ; -------------------
  5. ;
  6. ; (c) 1990/91 by Thomas Lehmann
  7. ;
  8. ;
  9. ; Jackophone V5.00
  10. ;
  11. ;
  12. ; verschiedene Utility Routinen
  13. ;
  14. ;
  15. ;**************************************************************************
  16.  
  17. MODUL_START    set    *    ; Größe des Moduls berechnen
  18.  
  19. ; =========================================================================
  20. ;
  21. ; Funktion    : RAM füllen
  22. ;
  23. ; Eingang    : Füllwert im Accu
  24. ;    : Startadresse in ind_adr
  25. ;    : Endadr. low in X-Reg.
  26. ;    : Endadr. high in Y-Reg.
  27. ;
  28. ; Ausgang    : Bereich zwischen Start und Endadr. mit Wert beschrieben
  29. ;
  30. ; Register    : ------
  31. ;
  32. ; (c) by Thomas Lehmann Feb. 1990
  33. ;
  34. ; =========================================================================
  35.  
  36. fill_ram    sta (ind_adr)    ; RAM mit Füllwert beschreiben
  37.     cpx ind_adr    ; low Byte der Adresse erreicht ?    
  38.     bne fill_1    ; nein
  39.  
  40.     cpy ind_adr+1    ; high Byte der Adresse erreicht ?    
  41.     bne fill_1    ; nein
  42.     rts
  43.  
  44. fill_1    ?inc16 ind_adr    ; nächste Bank ($0100) einstellen
  45.     bra fill_ram
  46.  
  47.  
  48.  
  49. ; =========================================================================
  50. ;
  51. ; Funktion    : alle LED`s ausschalten, "Ende-Taste" ausführen
  52. ;
  53. ; Eingang    : ---------
  54. ;
  55. ; Ausgang    : ---------
  56. ;
  57. ; Register    : Accu
  58. ;
  59. ; (c) by Thomas Lehmann Feb. 1990
  60. ;
  61. ; =========================================================================
  62.  
  63. ledoff_ende    lda #00        ; Füllwert laden
  64.     jsr fill_ledram    ; alle LED`s ausschalten
  65.     jmp key_ende    ; Ende Taste ausführen
  66.  
  67.  
  68.  
  69. ; =========================================================================
  70. ;
  71. ; Funktion    : Wähltaste eintragen
  72. ;
  73. ; Eingang    : Tastenwert im Accu
  74. ;
  75. ; Ausgang    : Taste im Input-Buffer abgelegt und im Display ausgegeben
  76. ;
  77. ; Register    : Accu
  78. ;
  79. ; (c) by Thomas Lehmann Feb. 1990
  80. ;
  81. ; =========================================================================
  82.  
  83. input    phx        ; Register retten
  84.     ldx input_po    ; Pointer auf Buffer laden
  85.     sta input_buff,x    ; Tastenwert ablegen
  86.     inc input_po    ; Pointer auf Buffer+1
  87.     clc
  88.     adc #48        ; ASCII zur Taste addieren
  89.     jsr putchar    ; und ins Display
  90.     plx        ; Register zurück
  91.     rts
  92.  
  93.  
  94. ; =========================================================================
  95. ;
  96. ; Funktion    : 2. stellige Eingabe aus Inputbuffer holen und in 1.Byte
  97. ;      konvertieren
  98. ;
  99. ; Eingang    : Pointer auf Eingabe in X-Reg.
  100. ;
  101. ; Ausgang    : Wert im Accu
  102. ;
  103. ; Register    : Accu
  104. ;
  105. ; (c) by Thomas Lehmann Feb. 1990
  106. ;
  107. ; =========================================================================
  108.  
  109. get_input    phy        ; Register retten
  110.     phx
  111.     txa        ; Pointer auf Eingabe
  112.     asl        ; 2 Byte Eingaben
  113.     tax
  114.     lda input_buff,x    ; Wert high laden
  115.     ldy input_buff+1,x    ; dito low
  116.     jsr merge_val    ; 1 Byte erzeugen
  117.     plx        ; Register zurück
  118.     ply
  119.     jmp deztohex    ; dezimal in Hex wandeln
  120.  
  121.  
  122.  
  123.  
  124. ; =========================================================================
  125. ;
  126. ; Funktion    : testen ob Wähltaste im Gültigkeitsbereich, 0-9
  127. ;      Wähltaste "0" konvertieren
  128. ;
  129. ; Eingang    : Tastenwert im Accu
  130. ;
  131. ; Ausgang    : clc wenn Tastenwert 1-9
  132. ;    : Accu 0 wenn es Taste "0" war
  133. ;    : Tastenwert im Accu
  134. ;
  135. ; Register    : Accu
  136. ;
  137. ; (c) by Thomas Lehmann Feb. 1990
  138. ;
  139. ; =========================================================================
  140.  
  141. check_wta    cmp #11        ; Taste im Gültigkeitsbereich ?
  142.     bcs check_wta_e    ; nein, Ende
  143.  
  144.     cmp #10        ; ist es "0" ?
  145.     bne check_wta_1    ; nein, Taste gültig
  146.  
  147.     lda #00        ; Tastenwert korrigieren
  148. check_wta_1    clc        ; Taste liegt im Gültigkeitbereich
  149. check_wta_e    rts
  150.  
  151.  
  152.  
  153.  
  154.  
  155. ; --------------------------------------------------------------------------
  156.  
  157. HLP    set    *
  158. _UTIL    equ    HLP-MODUL_START        ; Größe des Moduls
  159.  
  160.  
  161.