home *** CD-ROM | disk | FTP | other *** search
Text File | 2000-04-19 | 5.1 KB | 197 lines | [04] ASCII Text (0x0000) |
- ;LO-RES MIDI MONITOR
- ;REQUIRES LORES.MAP TO BE LOADED AT $2000
- ;
- ORG $6000
- JMP INITPGM
- ;--------------------------
- ;
- ZP1L EQU $06
- ZP1H EQU $07
- ZP2L EQU $08
- ZP2H EQU $09
- ;
- MIDISLOT DFB $20
- INBYTE DFB $00
- CHANNEL DFB $00
- PHASE DFB $00
- NOTENUM DFB $00
- VEL DFB $00
- PROGRAM DFB $00
- SCRNBYTE DFB $00
- CHNLCOLR DFB $01,$02,$03,$04,$05,$06,$07,$08
- DFB $09,$0F,$0A,$0B,$0C,$0D,$0E,$0F
- ;
- ; THE FOLLOWING ARE DEPENDENT ON LOAD ADDRESS OF LORES.MAP ($2000)
- LOWADRH DFB $20,$21,$22,$23,$24,$25,$26,$27
- DFB $28,$29,$2A,$2B,$2C,$2D,$2E,$2F
- LOWADRL DFB $00,$00,$00,$00,$00,$00,$00,$00
- DFB $00,$00,$00,$00,$00,$00,$00,$00
- HIADRH DFB $20,$21,$22,$23,$24,$25,$26,$27
- DFB $28,$29,$2A,$2B,$2C,$2D,$2E,$2F
- HIADRL DFB $80,$80,$80,$80,$80,$80,$80,$80
- DFB $80,$80,$80,$80,$80,$80,$80,$80
- ;
- CHNLNIBL DFB $0F,$0F,$0F,$0F,$F0,$F0,$F0,$F0
- DFB $0F,$0F,$0F,$0F,$F0,$F0,$F0,$F0
- ANDMASK DFB $F0,$F0,$F0,$F0,$0F,$0F,$0F,$0F
- DFB $F0,$F0,$F0,$F0,$0F,$0F,$0F,$0F
- ;-------------------------------------------------
- INITPGM LDA #$13
- LDX MIDISLOT
- STA $C088,X
- LDA #$11
- STA $C088,X
- MAINLOOP LDA $C000
- BMI ADIOS
- LDX MIDISLOT
- LDA $C088,X
- AND #$01
- BEQ MAINLOOP
- LDX MIDISLOT
- LDA $C089,X
- CMP #$F1
- BCS MAINLOOP
- SYSXRET STA INBYTE
- JSR PRCSBYTE
- LDA $C000
- BPL MAINLOOP
- ADIOS LDA $C010
- RTS
- ;------------------------------
- PRCSBYTE LDA INBYTE
- BPL DATABYTE
- AND #$F0
- CMP #$80
- BNE CHK90
- LDA INBYTE
- AND #$0F
- STA CHANNEL
- LDA #$81
- STA PHASE
- JMP MAINLOOP
- CHK90 CMP #$90
- BNE CHKC0
- LDA INBYTE
- AND #$0F
- STA CHANNEL
- LDA #$91
- STA PHASE
- JMP MAINLOOP
- CHKC0 CMP #$C0
- BNE STSFF
- LDA INBYTE
- AND #$0F
- STA CHANNEL
- LDA #$C1
- STA PHASE
- JMP MAINLOOP
- STSFF LDA #$FF
- STA PHASE
- JMP MAINLOOP
- ;-----------------------------
- DATABYTE LDA PHASE
- CMP #$81
- BNE CHK82
- LDA INBYTE
- STA NOTENUM
- LDA #$82
- STA PHASE
- JMP MAINLOOP
- CHK82 CMP #$82
- BNE CHK91
- LDA INBYTE
- STA VEL
- LDA #$81
- STA PHASE
- JSR NOTEOFF
- JMP MAINLOOP
- CHK91 CMP #$91
- BNE CHK92
- LDA INBYTE
- STA NOTENUM
- LDA #$92
- STA PHASE
- JMP MAINLOOP
- CHK92 CMP #$92
- BNE CHKC1
- LDA INBYTE
- STA VEL
- LDA #$91
- STA PHASE
- LDA VEL
- BEQ DONOFF
- JSR NOTEON
- JMP MAINLOOP
- DONOFF JSR NOTEOFF
- JMP MAINLOOP
- CHKC1 CMP #$C1
- BNE PHASEFF
- LDA INBYTE
- STA PROGRAM
- JSR PROGCHG
- PHASEFF JMP MAINLOOP
- ;------------------------------
- PROGCHG LDA PROGRAM
- LSR A
- LSR A
- LSR A
- LSR A
- LDX CHANNEL
- STA CHNLCOLR,X
- RTS
- ;
- NOTEOFF LDX CHANNEL
- LDY NOTENUM
- LDA LOWADRL,X
- STA ZP1L
- LDA LOWADRH,X
- STA ZP1H
- LDA (ZP1L),Y
- STA ZP2L
- LDA HIADRL,X
- STA ZP1L
- LDA HIADRH,X
- STA ZP1H
- LDA (ZP1L),Y
- STA ZP2H
- LDY #$00
- LDA (ZP2L),Y
- AND ANDMASK,X
- STA (ZP2L),Y
- RTS
- ;
- NOTEON LDX CHANNEL
- LDY NOTENUM
- LDA LOWADRL,X
- STA ZP1L
- LDA LOWADRH,X
- STA ZP1H
- LDA (ZP1L),Y
- STA ZP2L
- LDA HIADRL,X
- STA ZP1L
- LDA HIADRH,X
- STA ZP1H
- LDA (ZP1L),Y
- STA ZP2H
- LDY #$00
- LDA (ZP2L),Y
- AND ANDMASK,X
- STA SCRNBYTE
- LDA CHNLNIBL,X
- BMI HIGHNIBL
- LDX CHANNEL
- LDA CHNLCOLR,X
- ORA SCRNBYTE
- HIGHNIBL JMP POKEIT
- LDX CHANNEL
- LDA CHNLCOLR,X
- ASL A
- ASL A
- ASL A
- ASL A
- ORA SCRNBYTE
- POKEIT STA (ZP2L),Y
- RTS
- ;
-