home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-04-09 | 6.4 KB | 231 lines | [04] ASCII Text (0x0000) |
- ;
- ;DRUMMACH.SRC - DRUM MACHINE SOUNDS THRU MOCKINGBOARD
- ;
- ;
- ;*==============================================================
- ;* ML.INTEGRATOR - integrates basic pgm and ml code @ $804
- ;* from NIBBLE, April 1990, (c) 1990 Stephen M. Hall, Mindcraft
- ;*==============================================================
- ;
- ORG $0801
- ;
- TXTTAB EQU $67
- BUF EQU $200
- DOSVEC EQU $3D0
- RUN EQU $D566
- ;
- MSLOT EQU $C400
- MSTS EQU MSLOT
- MDTA EQU MSTS+1
- ;
- ;*===========*
- ;* SECTION 1 *
- ;*===========*
- ;
- BGN JMP STARTUP ; *** SEE SECTION 4 ***
- ;===================================================
- ; BASIC INTERFACE: POKE 2055,DRUM NUMBER, CALL 2052
- ; POKE 2056,SPEAKER ($00 OR $80)
- ;====================================================
- JMP ORIGIN ; CALL 2052
- ;
- DRUM DFB $01 ; POKE 2055, DRUM
- ;
- SPEAKER DFB $00 ;00=LEFT, 80=RIGHT
- ;
- REGISTER DFB $08 ; POKE 2057, REGISTER
- ;
- DATA DFB $00 ; POKE 2058, DATA
- ;
- JMP POKEREG ; CALL 2059
- JMP INITMOCK ; CALL 2062
- ;
- ORIGIN LDA DRUM
- CMP #$0
- BCC EXIT
- CMP #$5
- BCS EXIT
- JSR INITMOCK
- JSR SETNOISE
- LDA DRUM
- TAX
- LDA NOISE,X
- STA DATA
- LDA #$06
- STA REGISTER
- JSR POKEREG
- LDA COARSE,X
- STA DATA
- LDA #$0C
- STA REGISTER
- JSR POKEREG
- JSR SOUNDNOW
- EXIT RTS
- ;
- ; INSTRUMENT DATA: NOISE PERIOD, COARSE TONE PERIOD
- ;
- ;CYMBAL, HIHAT, SNARE, TOMTOM, BASSDRUM
- NOISE DFB $01,$01,$04,$10,$1F
- COARSE DFB $10,$02,$04,$02,$04
- ;
- ;====================================
- ; POKE REGISTER WITH DATA
- ;
- POKEREG LDA SPEAKER ;GET SPEAKER (L/R) INTO Y
- AND #$80
- TAY
- LDA REGISTER ;GET REGISTER #
- AND #$0F
- STA MDTA,Y
- LDA #$07 ;SEND REGISTER #
- STA MSTS,Y
- LDA #$04
- STA MSTS,Y
- LDA DATA ;GET DATA BYTE
- STA MDTA,Y
- LDA #$06 ;SEND DATA BYTE
- STA MSTS,Y
- LDA #$04
- STA MSTS,Y
- RTS
- ;
- INITMOCK LDA #$FF ;INIT
- STA MSLOT+$03
- STA MSLOT+$83
- LDA #$07
- STA MSLOT+$02
- STA MSLOT+$82
- LDA #$00 ;RESET ALL PARMS TO 0
- STA MSTS
- STA MSLOT+$80
- LDA #$04
- STA MSTS
- STA MSLOT+$80
- RTS
- ;
- ;;;ALLOW USER TO PICK SPEAKER
- ;;; LDA #$00 ;SPEAKER= LEFT
- ;;; STA SPEAKER
- SETNOISE LDA #$07 ;ENABLE
- STA REGISTER
- LDA #$07 ; ALL NOISE
- STA DATA
- JSR POKEREG ;SEND IT
- LDA #$08
- STA REGISTER
- LDA #$10
- STA DATA
- JSR POKEREG
- INC REGISTER
- JSR POKEREG
- INC REGISTER
- JSR POKEREG
- RTS
- ;
- SOUNDNOW LDA #$0D
- STA REGISTER
- LDA #$09 ;ENVELOPE SHAPE
- STA DATA
- JSR POKEREG
- RTS
- ;
- EOF BRK
- ;
- ;
- ;
- ;*===========*
- ;* SECTION 2 *
- ;*===========*
- ;this can be called at end of BASIC program using CALL 2049
- ;
- QUIT LDA #<BGN
- STA TXTTAB+1
- LDA #>BGN
- STA TXTTAB
- LDA #$00
- STA BGN
- STA BGN+1
- STA BGN+2
- JMP DOSVEC
- ;
- ;*===========*
- ;* SECTION 3 *
- ;*===========*
- ;this section gets written over by your BASIC program
- ;only used if running under DOS 3.3 - it is a one line program
- ;
- PGRM BRK
- DW PGRM1
- DW $000A
- DFB $BA ;TOKEN FOR PRINT
- DFB $22,$04 ;"ctrl-D
- ;
- ;*** EDASM SETS HI BIT OF ASCII CHARACTERS - WE'LL GET RID OF THEM LATER
- RUNCMD ASC 'RUN '
- ASC 'DRUMMACH.BAS' ;CHANGE TO YOUR BASIC PGM NAME
- ;
- DFB $00 ;MARKER FOR END OF STATEMENT
- PGRM1 BRK
- BRK
- ;
- ;*===========*
- ;* SECTION 4 *
- ;*===========*
- ;set up ptrs to new program and vector to quit exit
- ;
- STARTUP LDA #<PGRM+1
- STA TXTTAB+1
- LDA #>PGRM+1
- STA TXTTAB
- LDA #<QUIT
- STA BGN+2
- LDA #>QUIT
- STA BGN+1
- ;
- ; you can add extra stuff here
- ; ex: &vectors, reset vectors, interface initialization, welcome message
- ;
- ;*===========*
- ;* SECTION 5 *
- ;*===========*
- ;used to run the basic program from PRODOS - setup filename at bottom
- ;
- LDA $BF00
- CMP #$4C
- BNE NOPRODOS
- LDX CMD
- INX
- LDA #$8D
- STR STA BUF-1,X
- DEX
- BMI RUNPRO
- LDA CMD,X
- JMP STR
- ;
- RUNPRO JSR $BE03 ;BI VECTOR
- LDA $BE0F ;IF ERROR
- JSR $BE0C ;PRINT MSG
- RTS
- ;
- ; ***================================***
- ; *** SET UP PRODOS RUN COMMAND HERE ***
- ; ***================================***
- ;
- CMD DFB 16 ; LENGTH OF STRING BELOW
- ASC 'RUN DRUMMACH.BAS' ; (EDASM SETS HI BITS FOR US)
- ;
- ; ***-----------------***
- ; *** DOS 3.3 ROUTINE ***
- ; ***-----------------***
- NOPRODOS LDX #$00 ;FOR DOS 3.3, CONVERT PGM NAME TO
- ASCLOOP LDA RUNCMD,X ;ASCII WITH HI BIT CLEAR.
- BEQ RUNIT
- AND #$7F
- STA RUNCMD,X
- INX
- BNE ASCLOOP
- ;
- RUNIT JMP RUN
- BRK
- ;
-