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

  1. ;-------------------------------------------------------------------------
  2. ; APPLE MIDI DRIVER THROUGH ANNUNCIATOR 0
  3. ; COPYRIGHT 1998, ERIC RANGELL
  4. ;-------------------------------------------------------------------------
  5. ; THIS DRIVER IMPLEMENTS ASYNCHRONOUS SERIAL DATA TRANSMISSION 
  6. ; THROUGH THE APPLE ANNUNCIATOR 0 OUTPUT PORT OF THE GAME CONNECTOR
  7. ; USING 32 CYCLES PER BIT TO ACHIEVE A 31.25K MIDI BAUD RATE.
  8. ;
  9. ; THE OUTPUT IS INITIALIZED TO A HIGH LOGIC VOLTAGE.  WHEN IT GOES
  10. ; LOW FOR 32 MICROSECONDS, THAT INDICATES THE START BIT OF A MIDI BYTE.
  11. ; THEN 8 BYTES OF DATA ARE TRANSMITTED, FOLLOWED BY A HIGH STOP BIT.
  12. ; THE DATA BYTES REPRESENT MIDI MESSAGES WHICH CAN BE INTERPRETED BY
  13. ; ANY MUSICAL INSTRUMENT THAT IMPLEMENTS MIDI.
  14. ;
  15. ;-------------------------------------------------------------------------
  16. ;
  17. AN0OFF   EQU $C058           ;APPLE ADDRESSES THAT CONTROL ANNUNCIATOR OUTPUTS
  18. AN0ON    EQU $C059
  19. AN1OFF   EQU $C05A
  20. AN1ON    EQU $C05B
  21. AN2OFF   EQU $C05C
  22. AN2ON    EQU $C05D
  23. AN3OFF   EQU $C05E
  24. AN3ON    EQU $C05F
  25. ;
  26. TEMPA    DFB $00
  27. TEMPX    DFB $00
  28. ;---------------------------------------------------------------------------
  29. XMITONE  STA TEMPA           ;SAVE A AND X REGISTERS
  30.          STX TEMPX
  31. ;
  32.          ASL A               ;SHIFT BIT INTO CARRY
  33.          TAX                 ;SAVE CURRENT IMAGE OF DATA BYTE
  34.          LDA #$00            ;ZERO OUT ACCUMULATOR FOR ADD
  35.          ADC #>AN0OFF        ;ADD CARRY TO ANNUNCIATOR ADDRESS
  36.          STA BIT7+1          ;MODIFY THE XMITBITS SUBROUTINE
  37.          TXA                 ;RESTORE ACCUMULATOR
  38. ;
  39.          ASL A               ;SHIFT BIT INTO CARRY
  40.          TAX                 ;SAVE CURRENT IMAGE OF DATA BYTE
  41.          LDA #$00            ;ZERO OUT ACCUMULATOR FOR ADD
  42.          ADC #>AN0OFF        ;ADD CARRY TO ANNUNCIATOR ADDRESS
  43.          STA BIT6+1          ;MODIFY THE XMITBITS SUBROUTINE
  44.          TXA                 ;RESTORE ACCUMULATOR
  45. ;
  46.          ASL A               ;SHIFT BIT INTO CARRY
  47.          TAX                 ;SAVE CURRENT IMAGE OF DATA BYTE
  48.          LDA #$00            ;ZERO OUT ACCUMULATOR FOR ADD
  49.          ADC #>AN0OFF        ;ADD CARRY TO ANNUNCIATOR ADDRESS
  50.          STA BIT5+1          ;MODIFY THE XMITBITS SUBROUTINE
  51.          TXA                 ;RESTORE ACCUMULATOR
  52. ;
  53.          ASL A               ;SHIFT BIT INTO CARRY
  54.          TAX                 ;SAVE CURRENT IMAGE OF DATA BYTE
  55.          LDA #$00            ;ZERO OUT ACCUMULATOR FOR ADD
  56.          ADC #>AN0OFF        ;ADD CARRY TO ANNUNCIATOR ADDRESS
  57.          STA BIT4+1          ;MODIFY THE XMITBITS SUBROUTINE
  58.          TXA                 ;RESTORE ACCUMULATOR
  59. ;
  60.          ASL A               ;SHIFT BIT INTO CARRY
  61.          TAX                 ;SAVE CURRENT IMAGE OF DATA BYTE
  62.          LDA #$00            ;ZERO OUT ACCUMULATOR FOR ADD
  63.          ADC #>AN0OFF        ;ADD CARRY TO ANNUNCIATOR ADDRESS
  64.          STA BIT3+1          ;MODIFY THE XMITBITS SUBROUTINE
  65.          TXA                 ;RESTORE ACCUMULATOR
  66. ;
  67.          ASL A               ;SHIFT BIT INTO CARRY
  68.          TAX                 ;SAVE CURRENT IMAGE OF DATA BYTE
  69.          LDA #$00            ;ZERO OUT ACCUMULATOR FOR ADD
  70.          ADC #>AN0OFF        ;ADD CARRY TO ANNUNCIATOR ADDRESS
  71.          STA BIT2+1          ;MODIFY THE XMITBITS SUBROUTINE
  72.          TXA                 ;RESTORE ACCUMULATOR
  73. ;
  74.          ASL A               ;SHIFT BIT INTO CARRY
  75.          TAX                 ;SAVE CURRENT IMAGE OF DATA BYTE
  76.          LDA #$00            ;ZERO OUT ACCUMULATOR FOR ADD
  77.          ADC #>AN0OFF        ;ADD CARRY TO ANNUNCIATOR ADDRESS
  78.          STA BIT1+1          ;MODIFY THE XMITBITS SUBROUTINE
  79.          TXA                 ;RESTORE ACCUMULATOR
  80. ;
  81.          ASL A               ;SHIFT BIT INTO CARRY
  82.          TAX                 ;SAVE CURRENT IMAGE OF DATA BYTE
  83.          LDA #$00            ;ZERO OUT ACCUMULATOR FOR ADD
  84.          ADC #>AN0OFF        ;ADD CARRY TO ANNUNCIATOR ADDRESS
  85.          STA BIT0+1          ;MODIFY THE XMITBITS SUBROUTINE
  86.          TXA                 ;RESTORE ACCUMULATOR
  87. ;
  88.          JSR XMITBITS        ;SEND THE BYTE OUT 
  89.          LDX TEMPX
  90.          LDA TEMPA           ;RESTORE X AND A
  91.          RTS
  92. ;-----------------------------------------------------------------------
  93. XMITBITS BIT AN0OFF          ;4 CYCLES - TRANSMIT START BIT - ALWAYS LOW
  94.          JSR DELAY22         ;6+22
  95. BIT0     BIT AN0OFF          ;4
  96.          JSR DELAY22         ;6+22
  97. BIT1     BIT AN0OFF          ;4
  98.          JSR DELAY22         ;6+22
  99. BIT2     BIT AN0OFF          ;4
  100.          JSR DELAY22         ;6+22
  101. BIT3     BIT AN0OFF          ;4
  102.          JSR DELAY22         ;6+22
  103. BIT4     BIT AN0OFF          ;4
  104.          JSR DELAY22         ;6+22
  105. BIT5     BIT AN0OFF          ;4
  106.          JSR DELAY22         ;6+22
  107. BIT6     BIT AN0OFF          ;4
  108.          JSR DELAY22         ;6+22
  109. BIT7     BIT AN0OFF          ;4
  110.          JSR DELAY22         ;6+22
  111.          BIT AN0ON           ;4        ;TRANSMIT STOP BIT - ALWAYS HIGH
  112.          JSR DELAY22         ;6+22
  113.          RTS
  114. ;-----------------------------------------------------------------------
  115. DELAY22  NOP       ;WAIT 22 CYCLES
  116.          NOP
  117.          NOP
  118.          NOP
  119.          NOP
  120.          NOP
  121.          NOP
  122.          NOP
  123.          RTS
  124. ;----------------
  125. ; END OF PROGRAM
  126. ;----------------
  127. ;==================================================
  128. EOF      BRK
  129.