home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
sh3x
/
sh31.d64
/
midi.src
< prev
next >
Wrap
Text File
|
1995-03-30
|
4KB
|
243 lines
;LABELTABELLE
CHROUT = $FFD2
RESET = $FCE2
CHCKOM = $AEFD
GETBYTE = $B79E
IRQENDE = $EA81
AUSPUFF = $CF00
EINPUFF = $CE00
;---------------------------------------
CTRLREG = $DE04
OUTREG = $DE05
STATREG = $DE06
INREG = $DE07
* = $CB00
;=======================================
INIT LDA #3 ; MASTER RESET
STA CTRLREG
LDA #%10010110
STA CTRLREG ;TEILERVERH.1:64
;8 ─ATENBIT
;1 ╙TOPBIT
;KEINE PARITY
;╙ENDE-╔╥╤ GESPERRT
;┼MPFANGS-╔╥╤ FREI
JMP START
VEK .BYTE 0,0
EINPTR1 .BYTE 0
EINPTR2 .BYTE 0
AUSPTR1 .BYTE 0
AUSPTR2 .BYTE 0
;---------------------------------------
;BASIC EINSPRUENGE
BYTEPUT JSR CHCKOM ;ZU MIDI
JSR GETBYTE
TXA
JMP OBBEIN
;------
BYTEGET PHP ;VON MIDI
SEI
JSR IBBAUS
PLP
RTS
;=======================================
;MIDI BYTE OUT
BYTEOUT PHA ; BYTE RETTEN
LDA STATREG
AND #2
BEQ BYTEOUT+1
PLA
STA OUTREG
RTS
;---------------------------------------
;MIDI BYTE IN
IBBEIN LDA STATREG
LSR A
BCC KEINSDA
LDA INREG
SEI
LDY EINPTR2
STA EINPUFF,Y
INY
STY EINPTR2
KEINSDA RTS
;---------------------------------------
;BYTE AUS EINPUFF IN AKKU HOLEN
IBBAUS PHP
SEI
LDY EINPTR1
CPY EINPTR2
BNE OK
LDY #1
JMP NIXDA
OK LDA EINPUFF,Y
INY
STY EINPTR1
LDY #0
NIXDA PLP
RTS
;---------------------------------------
;BYTE AUS AKKU IN AUSPUFF STECKEN
OBBEIN PHP
SEI
LDY AUSPTR2
STA AUSPUFF,Y
INY
STY AUSPTR2
JSR GGFAUS ; ╓ERSUCHEN,
UNMITTELBAR
AUSZUGEBEN
PLP
RTS
;---------------------------------------
;BYTE AUS AUSPUFF UEBERTRAGEN
OBBAUS PHP
SEI
LDY AUSPTR1
LDA AUSPUFF,Y
INY
STY AUSPTR1
JSR BYTEOUT
PLP
RTS
;---------------------------------------
;╙ENDEREGISTER FREI ? ─ANN
;PRUEFEN OB ┬YTE IM ┴USGABE-
;PUFFER, GGF. AUSGEBEN
GGFAUS PHP
SEI
LDA STATREG
AND #2
BEQ AUSGANG
LDA AUSPTR1
CMP AUSPTR2
BEQ AUSGANG
JSR OBBAUS
AUSGANG PLP
RTS
;---------------------------------------
; STRING OUT
STROUT PLA
STA $F7
PLA
STA $F8
HOCH LDY #$00
INC $F7
BNE NOCARRY
INC $F8
NOCARRY LDA ($F7),Y
BEQ EXIT
JSR CHROUT
JMP HOCH
EXIT LDA $F8
PHA
LDA $F7
PHA
RTS
;=======================================
IRQ LDA STATREG ;MIDI IRQ?
BMI MIDIRQ ;JA =>
JMP (VEK) ;ALTE IRQ
MIDIRQ JSR IBBEIN ;BYTE VON MIDI
JSR GGFAUS ;BYTE ZU MIDI
JMP IRQENDE ;╥╧═-╥OUTINE
HFLAG .BYTE 0
START SEI
LDX HFLAG
BNE INITRET
INX
STX HFLAG
LDA $314
STA VEK
LDA $315
STA VEK+1
LDA #<IRQ
STA $314
LDA #>IRQ
STA $315
INITRET LDA AUSPTR1
STA AUSPTR2
LDA EINPTR1
STA EINPTR2
CLI
RTS
;===================================
.END