home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-12-23 | 1.4 KB | 53 lines | [04] ASCII Text (0x0000) |
- ; MIDI SYSEX READER
- ;
- ORG $1000
- ;
- CLV
- BVC START
- ;
- BUFSTART DFB $20 ;STARTING PAGE TO STORE THE SYSEX MESSAGE
- BUFEND DFB $60 ;PAGE AFTER THE END OF THE SYSEX BUFFER
- ;
- START LDA #$00
- STA 6
- LDA BUFSTART
- STA 7
- LDA #$13
- STA $C0A8
- LDA #$11
- STA $C0A8
- ;
- LDY #$00
- WAITBYTE LDA $C000 ;EXIT UPON KEYPRESS
- BMI DONE
- WAITNEXT LDA $C0A8 ;WAIT FOR MIDI DATA
- AND #$01
- BEQ WAITBYTE
- LDA $C0A9
- CMP #$F0 ;IS IT A SYSEX
- BEQ WAITMSG ;YES - GRAB THE MESSAGE
- BNE WAITBYTE ;NO, KEEP WAITING
- WAITMSG LDA $C0A8 ;WAIT FOR NEXT BYTE (MANUFACTURER ID)
- AND #$01
- BEQ WAITMSG
- LDA $C0A9
- CMP #$7D ;IS IT A RESEARCH SYSEX MESSAGE?
- BNE WAITNEXT ;IF NOT, WAIT FOR NEXT SYSEX
- WAITMSG2 LDA $C0A8
- AND #$01
- BEQ WAITMSG2
- LDA $C0A9
- CMP #$80 ;IS THE MESSAGE DONE?
- BCS DONE ;YES - RETURN TO CALLER (SYSX TERMINATED BY >$80)
- STA (6),Y ;STORE MESSAGE IN MEMORY
- INY
- BNE WAITMSG2
- INC 7 ;IF MORE THAN 255 BYTES INCREMENT PAGE
- LDA 7
- CMP BUFEND ;BUT LIMIT AT END OF BUFFER
- BNE WAITMSG2
- DONE LDA #$00
- STA (6),Y
- RTS
- ;
-