home *** CD-ROM | disk | FTP | other *** search
/ Set of Apple II Hard Drive Images / eric.hdv / SOURCE / GRABSYSX.SRC.txt < prev    next >
Text File  |  2020-08-13  |  1KB  |  53 lines

  1. ; MIDI SYSEX READER
  2. ;
  3.          ORG $1000
  4. ;
  5.          CLV
  6.          BVC START
  7. ;
  8. BUFSTART DFB $20   ;STARTING PAGE TO STORE THE SYSEX MESSAGE
  9. BUFEND   DFB $60   ;PAGE AFTER THE END OF THE SYSEX BUFFER
  10. ;
  11. START    LDA #$00
  12.          STA 6
  13.          LDA BUFSTART
  14.          STA 7
  15.          LDA #$13
  16.          STA $C0A8
  17.          LDA #$11
  18.          STA $C0A8
  19. ;
  20.          LDY #$00
  21. WAITBYTE LDA $C000           ;EXIT UPON KEYPRESS
  22.          BMI DONE
  23. WAITNEXT LDA $C0A8           ;WAIT FOR MIDI DATA
  24.          AND #$01
  25.          BEQ WAITBYTE
  26.          LDA $C0A9
  27.          CMP #$F0            ;IS IT A SYSEX
  28.          BEQ WAITMSG         ;YES - GRAB THE MESSAGE
  29.          BNE WAITBYTE        ;NO, KEEP WAITING
  30. WAITMSG  LDA $C0A8           ;WAIT FOR NEXT BYTE (MANUFACTURER ID)
  31.          AND #$01
  32.          BEQ WAITMSG
  33.          LDA $C0A9
  34.          CMP #$7D            ;IS IT A RESEARCH SYSEX MESSAGE?
  35.          BNE WAITNEXT        ;IF NOT, WAIT FOR NEXT SYSEX
  36. WAITMSG2 LDA $C0A8
  37.          AND #$01
  38.          BEQ WAITMSG2
  39.          LDA $C0A9
  40.          CMP #$80            ;IS THE MESSAGE DONE?
  41.          BCS DONE            ;YES - RETURN TO CALLER (SYSX TERMINATED BY >$80)
  42.          STA (6),Y           ;STORE MESSAGE IN MEMORY
  43.          INY
  44.          BNE WAITMSG2
  45.          INC 7               ;IF MORE THAN 255 BYTES INCREMENT PAGE
  46.          LDA 7
  47.          CMP BUFEND          ;BUT LIMIT AT END OF BUFFER
  48.          BNE WAITMSG2
  49. DONE     LDA #$00
  50.          STA (6),Y
  51.          RTS
  52. ;
  53.