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

  1. ; MIDI BULK DUMP READER - POPULATES AUX MEM 800-BFFF, THEN MAIN 800-95FF
  2. ; USER PRESSES ANY KEY TO STOP RECORDING. 
  3. ; UPON EXIT, $09 CONTAINS RETURN CODE:
  4. ; $01 = AUX ONLY.  6,7 POINT TO TERMINATION BYTE ($FF)
  5. ; $02 = AUX + MAIN.  6,7 POINT TO TERMINATION BYTE ($FF)
  6. ; $FF = BOTH AUX AND MAIN FILLED UP BEFORE USER PRESSED KEY. 
  7. ;
  8.          ORG $300
  9. ;
  10.          CLV
  11.          BVC START
  12.          JMP MOVE1
  13.          JMP MOVE2
  14. ;
  15. AUXSTART DFB $08
  16. AUXEND   DFB $C0
  17. BUFSTART DFB $08   ;STARTING PAGE TO STORE THE SYSEX MESSAGE
  18. BUFEND   DFB $96   ;PAGE AFTER THE END OF THE SYSEX BUFFER
  19. ;
  20. START    LDA #$13
  21.          STA $C0A8
  22.          LDA #$11
  23.          STA $C0A8
  24.          STA $C000 ;80STOREOFF
  25.          STA $C008 ;ALTZPOFF
  26.          STA $C002 ;READ MAIN MEMORY
  27.          STA $C005 ;WRITE AUX MEMORY
  28. ;
  29.          LDA #$00
  30.          STA 6
  31.          LDA AUXSTART
  32.          STA 7
  33.          LDA AUXEND
  34.          STA 8
  35.          JSR FILLMEM
  36. ;
  37.          STA $C004 ;WRITE MAIN MEMORY
  38. ;
  39.          LDA 9
  40.          BNE FILLMAIN
  41.          LDA #1
  42.          STA 9
  43.          RTS
  44. ;
  45. FILLMAIN LDA #$00
  46.          STA 6
  47.          LDA BUFSTART
  48.          STA 7
  49.          LDA BUFEND
  50.          STA 8
  51.          JSR FILLMEM
  52. ;
  53.          LDA 9
  54.          BNE FULL
  55.          LDA #2
  56.          STA 9
  57.          RTS
  58. ;
  59. FULL     LDA #$FF
  60.          STA 9         
  61.          RTS
  62. ;
  63. FILLMEM  LDY #$00
  64. WAITBYTE LDA $C000           ;EXIT UPON KEYPRESS
  65.          BMI KEYPRESS
  66.          LDA $C0A8           ;WAIT FOR MIDI DATA
  67.          AND #$01
  68.          BEQ WAITBYTE
  69.          LDA $C0A9
  70.          CMP #$F8            ;SKIP REAL TIME MESSAGES
  71.          BCS WAITBYTE
  72.          STA (6),Y           ;STORE MESSAGE IN MEMORY
  73.          INY
  74.          BNE WAITBYTE
  75.          INC 7               ;IF MORE THAN 255 BYTES INCREMENT PAGE
  76.          LDA 7
  77.          CMP 8               ;BUT LIMIT AT END OF BUFFER
  78.          BNE WAITBYTE
  79.          LDA #1
  80.          STA 9
  81.          RTS
  82. KEYPRESS LDA #$FF            ;TERMINATOR MARKER
  83.          STA (6),Y
  84.          STY 6
  85.          LDA #0
  86.          STA 9
  87.          RTS
  88. ;
  89. MOVE1    LDA #$00  ; MOVE AUX 800-63FF TO MAIN 800-63FF
  90.          STA $3C
  91.          STA $42
  92.          LDA #$08
  93.          STA $3D
  94.          STA $43
  95.          LDA #$FF
  96.          STA $3E
  97.          LDA #$63
  98.          STA $3F
  99.          CLC
  100.          JMP $C311
  101. ;
  102. MOVE2    LDA #$00  ;MOVE AUX $6400-$BFFF TO MAIN $800-$63FF
  103.          STA $3C
  104.          LDA #$64
  105.          STA $3D
  106.          LDA #$FF
  107.          STA $3E
  108.          LDA #$BF
  109.          STA $3F
  110.          LDA #$00
  111.          STA $42
  112.          LDA #$08
  113.          STA $43
  114.          CLC
  115.          JMP $C311
  116. ;
  117.