home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-01-06 | 5.2 KB | 159 lines | [04] ASCII Text (0x0000) |
- ;
- ; EDIT.SRC0
- ;
- ORG $1000
- ;
- PTR EQU $06 ;SEQUENCE POINTER
- DLYCTR EQU $FD ;DELAY COUNTER
- SPEED EQU $FF ;SPEED OF PLAYBACK
- ;
- ;=================================================
- ORIGIN JMP BEGINNIN
- ;
- DURL DFB $00
- DURH DFB $00
- NOTE DFB $00
- VEL DFB $00
- ;
- ;=================================================
- BEGINNIN JSR INITIAL
- ;
- SENDLOOP LDY #$00 ;GET DURATION HI BYTE
- LDA (PTR),Y
- BNE SEND4BYT
- RTS ;EXIT PGM IF HI DUR = 0 (0-FF-2F-0)
- ;
- INITIAL LDA #$13 ;INIT MIDI CARD
- STA $C0A8
- LDA #$11
- STA $C0A8
- LDA #$18 ;SPEED=24
- STA SPEED
- LDA $2003 ; OR FROM $2003
- BEQ INIT1
- STA SPEED
- INIT1 LDA #$04 ;PTR = $2004
- STA PTR
- LDA #$20
- STA PTR+1
- RTS
- ;
- ; ;CONVERT VLQ TO 2 BYTE BINARY
- SEND4BYT AND #$7F ;CONVERT HI DUR (STRIP HI BIT)
- ROR A ;AND ROTATE
- STA DURH
- LDA #$00 ;GET LO BIT INTO HI BIT
- ROR A
- INY
- ORA (PTR),Y ;OR WITH LO DUR
- STA DURL
- INY
- LDA (PTR),Y
- STA NOTE ;GET NOTE AND VEL
- INY
- LDA (PTR),Y
- STA VEL
- JSR PROCESS ;PROCESS THE 4 BYTES
- JSR INCPTR ;GET NEXT CELL
- CLV
- BVC SENDLOOP ;LOOP BACK
- ;=================================================
- INCPTR LDA PTR ;ADD 4 TO POINTER (EACH CELL=4 BYTES)
- CLC
- ADC #$04
- STA PTR
- LDA PTR+1
- ADC #$00
- STA PTR+1
- RTS
- ;=================================================
- PROCESS LDA DURH
- BNE PROCDUR
- LDA DURL
- BNE PROCDUR
- JSR PDL1
- JSR NOTEOUT
- RTS
- ;
- PROCDUR JSR PROCCMD
- JSR NOTEOUT
- RTS
- ;=================================================
- NOTEOUT LDA #$90
- JSR MIDIOUT
- LDA NOTE
- JSR MIDIOUT
- LDA VEL
- JSR MIDIOUT
- RTS
- ;
- MIDIOUT STA $C0A9
- ;
- MIDIOUT1 LDA $C0A8
- AND #$02
- BEQ MIDIOUT1
- RTS
- ;=================================================
- PROCCMD LDA DURH ;WE ARE PLAYING SONG, SO PROCESS DURS
- STA DLYCTR+1
- LDA DURL
- STA DLYCTR
- ;
- DELAY1 LDX DLYCTR ;WAIT FOR DELAY TO FINISH
- BEQ DELAY2
- DEC DLYCTR
- LDA SPEED
- JSR $FCA8
- CLV
- BVC DELAY1
- ;
- DELAY2 LDX DLYCTR+1
- BEQ CHKKEY
- DEC DLYCTR+1
- LDA SPEED
- JSR $FCA8
- DEC DLYCTR ;EX: FROM 200->1FF
- CLV
- BVC DELAY1
- ;
- ; GET PADDLE 1 READING AND SET VELOCITY
- ;
- CHKKEY LDA $C000
- BMI GOTAKEY
- PDL1 LDA VEL
- BEQ DONTPDL ;IF VEL=0 DON'T UPDATE
- LDX #$01 ; GET PADDLE 1
- JSR $FB1E
- TYA
- EOR #$FF
- LSR A
- BNE STORIT
- ORA #$01 ; IF 0 MAKE IT 1
- STORIT STA VEL ; INTO VEL
- LDY #$03 ; AND UPDATE FILE
- STA (PTR),Y
- JSR $FDDA ; PRINT IT & GO BACK 2
- LDA #$88
- JSR $FDED
- LDA #$88
- JSR $FDED
- DONTPDL RTS
- ;
- GOTAKEY LDA $C010
- AND #$7F
- CMP #$08
- BNE RTARR
- DEC $FF
- RTS
- ;
- RTARR CMP #$15
- BNE OUT
- INC $FF
- RTS
- ;
- OUT PLA ; POP OUTTA HERE
- PLA
- PLA
- PLA
- RTS
-