home *** CD-ROM | disk | FTP | other *** search
/ 64'er / 64ER_CD.iso / sh3x / sh31.d64 / midi.src < prev    next >
Text File  |  1995-03-30  |  4KB  |  243 lines

  1.  
  2.      ;LABELTABELLE
  3.  
  4.      CHROUT     = $FFD2
  5.      RESET      = $FCE2
  6.      CHCKOM     = $AEFD
  7.      GETBYTE    = $B79E
  8.      IRQENDE    = $EA81
  9.  
  10.      AUSPUFF    = $CF00
  11.      EINPUFF    = $CE00
  12.  
  13. ;---------------------------------------
  14.  
  15.      CTRLREG    = $DE04
  16.      OUTREG     = $DE05
  17.      STATREG    = $DE06
  18.      INREG      = $DE07
  19.  
  20.  
  21.      * = $CB00
  22.  
  23. ;=======================================
  24.  
  25.  
  26.  
  27. INIT    LDA #3        ; MASTER RESET
  28.         STA CTRLREG
  29.  
  30.         LDA #%10010110
  31.         STA CTRLREG  ;TEILERVERH.1:64
  32.                      ;8 ─ATENBIT
  33.                      ;1 ╙TOPBIT
  34.                      ;KEINE PARITY
  35.                      ;╙ENDE-╔╥╤ GESPERRT
  36.                      ;┼MPFANGS-╔╥╤ FREI
  37.  
  38.  
  39.         JMP START
  40.  
  41.  
  42. VEK     .BYTE 0,0
  43. EINPTR1 .BYTE 0
  44. EINPTR2 .BYTE 0
  45. AUSPTR1 .BYTE 0
  46. AUSPTR2 .BYTE 0
  47.  
  48. ;---------------------------------------
  49.  
  50.   ;BASIC EINSPRUENGE
  51.  
  52.  
  53. BYTEPUT JSR CHCKOM    ;ZU MIDI
  54.         JSR GETBYTE
  55.         TXA
  56.         JMP OBBEIN
  57.  
  58. ;------
  59.  
  60. BYTEGET PHP           ;VON MIDI
  61.         SEI
  62.         JSR IBBAUS
  63.         PLP
  64.         RTS
  65.  
  66. ;=======================================
  67.  
  68.                       ;MIDI BYTE OUT
  69. BYTEOUT PHA           ; BYTE RETTEN
  70.         LDA STATREG
  71.         AND #2
  72.         BEQ BYTEOUT+1
  73.         PLA
  74.         STA OUTREG
  75.         RTS
  76.  
  77. ;---------------------------------------
  78.  
  79.                      ;MIDI BYTE IN
  80. IBBEIN  LDA STATREG
  81.         LSR A
  82.         BCC KEINSDA
  83.         LDA INREG
  84.         SEI
  85.         LDY EINPTR2
  86.         STA EINPUFF,Y
  87.         INY
  88.         STY EINPTR2
  89. KEINSDA RTS
  90.  
  91. ;---------------------------------------
  92.  
  93.  
  94.         ;BYTE AUS EINPUFF IN AKKU HOLEN
  95.  
  96. IBBAUS  PHP
  97.         SEI
  98.         LDY EINPTR1
  99.         CPY EINPTR2
  100.         BNE OK
  101.         LDY #1
  102.         JMP NIXDA
  103. OK      LDA EINPUFF,Y
  104.         INY
  105.         STY EINPTR1
  106.         LDY #0
  107. NIXDA   PLP
  108.         RTS
  109.  
  110. ;---------------------------------------
  111.  
  112.  
  113.        ;BYTE AUS AKKU IN AUSPUFF STECKEN
  114.  
  115.  
  116. OBBEIN  PHP
  117.         SEI
  118.         LDY AUSPTR2
  119.         STA AUSPUFF,Y
  120.         INY
  121.         STY AUSPTR2
  122.         JSR GGFAUS   ; ╓ERSUCHEN,
  123.                        UNMITTELBAR
  124.                        AUSZUGEBEN
  125.         PLP
  126.         RTS
  127. ;---------------------------------------
  128.  
  129.        ;BYTE AUS AUSPUFF UEBERTRAGEN
  130.  
  131. OBBAUS  PHP
  132.         SEI
  133.         LDY AUSPTR1
  134.         LDA AUSPUFF,Y
  135.         INY
  136.         STY AUSPTR1
  137.         JSR BYTEOUT
  138.         PLP
  139.         RTS
  140.  
  141. ;---------------------------------------
  142.         ;╙ENDEREGISTER FREI ? ─ANN
  143.         ;PRUEFEN OB ┬YTE IM ┴USGABE-
  144.         ;PUFFER, GGF. AUSGEBEN
  145.  
  146. GGFAUS  PHP
  147.         SEI
  148.         LDA STATREG
  149.         AND #2
  150.         BEQ AUSGANG
  151.         LDA AUSPTR1
  152.         CMP AUSPTR2
  153.         BEQ AUSGANG
  154.         JSR OBBAUS
  155. AUSGANG PLP
  156.         RTS
  157.  
  158.  
  159.  
  160.  
  161. ;---------------------------------------
  162.  
  163.                      ; STRING OUT
  164. STROUT  PLA
  165.         STA $F7
  166.         PLA
  167.         STA $F8
  168. HOCH    LDY #$00
  169.         INC $F7
  170.         BNE NOCARRY
  171.         INC $F8
  172. NOCARRY LDA ($F7),Y
  173.         BEQ EXIT
  174.         JSR CHROUT
  175.         JMP HOCH
  176. EXIT    LDA $F8
  177.         PHA
  178.         LDA $F7
  179.         PHA
  180.         RTS
  181.  
  182.  
  183.  
  184.  
  185. ;=======================================
  186.  
  187. IRQ     LDA STATREG      ;MIDI IRQ?
  188.         BMI MIDIRQ       ;JA =>
  189.         JMP (VEK)        ;ALTE IRQ
  190. MIDIRQ  JSR IBBEIN       ;BYTE VON MIDI
  191.         JSR GGFAUS       ;BYTE ZU MIDI
  192.         JMP IRQENDE      ;╥╧═-╥OUTINE
  193.  
  194. HFLAG   .BYTE 0
  195.  
  196. START   SEI
  197.         LDX HFLAG
  198.         BNE INITRET
  199.         INX
  200.         STX HFLAG
  201.         LDA $314
  202.         STA VEK
  203.         LDA $315
  204.         STA VEK+1
  205.         LDA #<IRQ
  206.         STA $314
  207.         LDA #>IRQ
  208.         STA $315
  209. INITRET LDA AUSPTR1
  210.         STA AUSPTR2
  211.         LDA EINPTR1
  212.         STA EINPTR2
  213.         CLI
  214.         RTS
  215.  
  216. ;===================================
  217.  
  218.  
  219.     .END
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.