home *** CD-ROM | disk | FTP | other *** search
Text File | 2001-01-23 | 3.9 KB | 226 lines | [04] ASCII Text (0x0000) |
- ; VELGRAPH.SRC
- ;
- ORG $6000
- ;
- JSR INITDHR
- JSR START
- JMP DONEDHR
- ;
- DISPMODE DFB $01
- INBYTE DFB $00
- PHASE DFB $00
- LASTSTAT DFB $00
- XMITSTS DFB $00
- XMITBYT1 DFB $00
- XMITBYT2 DFB $00
- XMITBYT3 DFB $00
- DBYTES DFB $00
- MIDISLOT DFB $20
- ;
- GETINST EQU $00
- DATA1 EQU $01
- DATA2 EQU $02
- DATA3 EQU $03
- SYSX0 EQU $04
- DATA2B EQU $05
- ZPTR EQU $EE
- ;
- START LDA #$13
- LDX MIDISLOT
- STA $C088,X
- LDA #$11
- STA $C088,X
- WAITMIDI LDA $C000
- BMI ADIOS
- LDX MIDISLOT
- LDA $C088,X
- AND #$01
- BEQ WAITMIDI
- LDX MIDISLOT
- LDA $C089,X
- CMP #$F0
- BEQ SKIPSYSX
- BCS WAITMIDI
- SYSXRET STA INBYTE
- JSR PRCSBYTE
- LDA $C000
- BPL WAITMIDI
- ADIOS LDA $C010
- RTS
- ;
- SKIPSYSX LDX MIDISLOT
- LDA $C088,X
- AND #$01
- BEQ SKIPSYSX
- LDA $C089,X
- BPL SKIPSYSX
- BMI SYSXRET
- ;
- PRCSBYTE LDA PHASE
- PHINST CMP #GETINST
- BEQ PHINST0
- JMP PHDATA3
- PHINST0 LDA INBYTE
- BPL RUNNING
- ;
- STA LASTSTAT
- STA XMITSTS
- CMP #$E0
- BCS TWOBYTES
- CMP #$C0
- BCC TWOBYTES
- ;
- LDA #1
- STA DBYTES
- LDA #DATA1
- STA PHASE
- RTS
- ;
- TWOBYTES LDA #2
- STA DBYTES
- LDA #DATA2
- STA PHASE
- RTS
- ;
- RUNNING LDA LASTSTAT
- STA XMITSTS
- LDA INBYTE
- STA XMITBYT1
- LDA #$FF
- STA XMITBYT2
- LDA DBYTES
- CMP #1
- BEQ SENDMSG
- LDA #DATA3
- STA PHASE
- RTS
- ;
- PHDATA3 CMP #DATA3
- BNE PHDATA2
- LDA INBYTE
- STA XMITBYT2
- LDA #$FF
- STA XMITBYT3
- JMP SENDMSG
- ;
- PHDATA2 CMP #DATA2
- BNE PHDATA1
- LDA INBYTE
- STA XMITBYT1
- LDA #DATA2B
- STA PHASE
- RTS
- ;
- PHDATA1 CMP #DATA1
- BNE PHDATA2B
- LDA INBYTE
- STA XMITBYT1
- LDA #$FF
- STA XMITBYT2
- JMP SENDMSG
- ;
- PHDATA2B CMP #DATA2B
- BNE PHSYSX
- LDA INBYTE
- STA XMITBYT2
- LDA #$FF
- STA XMITBYT3
- JMP SENDMSG
- ;
- PHSYSX RTS
- ;
- SENDMSG LDA XMITSTS
- LDX XMITBYT1
- LDY XMITBYT2
- JSR MIDIGRPH
- SENDEXIT LDA #GETINST
- STA PHASE
- RTS
- ;
- ;-------------------------
- ; MIDIGRPH ROUTINE
- ; A=STATUS BYTE (9X OR 8X)
- ; X=NOTE
- ; Y=VELOCITY
- ;--------------------------
- ;
- MIDIGRPH CMP #$80
- BCC DRAWEXIT
- CMP #$90
- BCC DRAWNOFF
- CMP #$A0
- BCC DRAWNON
- CMP #$E0
- BCC DRAWEXIT
- CMP #$F0
- DRAWEXIT RTS
- ;
- DRAWNOFF LDY #$00
- DRAWNON AND #$0F
- ASL A
- STA DRAWCHNL
- STX DRAWNOTE
- STY DRAWVEL
- LDA DRAWNOTE
- CMP #24
- BCC DRAWEXIT
- CMP #104
- BCS DRAWEXIT
- ;
- LDA #128
- SEC
- SBC DRAWVEL
- STA VELCMPR
- ;
- LDA #$00
- STA AUXFLAG
- LDA DRAWNOTE
- SEC
- SBC #24
- STA NOTECMPR
- LSR A
- STA HORIZPOS
- BCC NOTAUX
- LDA #$01
- STA AUXFLAG
- ;
- NOTAUX LDA #0
- STA POKEBYTE
- LDY #0
- STY VERTPOS
- VERTLOOP LDY VERTPOS
- JSR SETY
- CPY VELCMPR
- BCC NOTYET
- LDA #$7F
- STA POKEBYTE
- NOTYET LDA AUXFLAG
- BNE POKEAUX
- STA $C055
- BEQ POKEIT
- POKEAUX LDA $C054
- ;
- POKEIT LDY HORIZPOS
- LDA POKEBYTE
- STA (ZPTR),Y
- ;
- LDY VERTPOS
- INY
- STY VERTPOS
- CPY #$80
- BCC VERTLOOP
- ;
- DRWDONE RTS
- ;
- DRAWCHNL DFB $00
- DRAWNOTE DFB $00
- DRAWVEL DFB $00
- VELCMPR DFB $00
- NOTECMPR DFB $00
- POKEBYTE DFB $00
- VERTPOS DFB $00
- HORIZPOS DFB $00
- AUXFLAG DFB $00
- ;
- CHN VELGRAPH.SC1
-