易码技术论坛

 找回密码
 加入易码
搜索
查看: 659447|回复: 10

[原创]让BAS播放和弦音乐

[复制链接]
发表于 2006-8-11 19:17:43 | 显示全部楼层
这么强的帖子,一定要顶!
发表于 2006-8-11 19:28:25 | 显示全部楼层
哈哈哈哈
终于搞定了~~
我可爱的midi
 楼主| 发表于 2006-8-11 19:43:57 | 显示全部楼层
呵呵, 立天改的那个BASIC+更强啊,那我就让BAS再强一点才行啊……
发表于 2006-8-11 19:45:27 | 显示全部楼层
哈哈,支持一下.
大家说,是不是应该加精华呢?^_^
发表于 2006-8-11 20:11:57 | 显示全部楼层
引用第4楼Eastsun2006-08-11 19:45发表的“”:
哈哈,支持一下.
大家说,是不是应该加精华呢?^_^
精华不精华只是阁下一点之下决定的。
表这么吝惜嘛~
现在版块冷清,要多鼓励大家啊~
发表于 2006-8-12 00:13:59 | 显示全部楼层
LS说的是啊 .......
发表于 2006-8-23 08:41:42 | 显示全部楼层
加精华!!!
发表于 2006-8-23 08:57:15 | 显示全部楼层
早加了- -
发表于 2006-8-23 17:09:35 | 显示全部楼层
强~~
今天才看到啊
我要了~~
哪天我有时间也来研究一下啊~~~```
发表于 2007-4-7 20:43:17 | 显示全部楼层
好东东啊
 楼主| 发表于 2006-8-11 18:14:04 | 显示全部楼层 |阅读模式
嫌A16太大的话,就用midi吧!
3K送修回来,发现它自带的midi文件竟然全是R X属性,一气之下反了一下sysdir/hexuan,提取了一下核心代码,经过艰苦的调试(非常艰苦,那些不知名的中断调用、子程序调用、I/O操作的功能只能靠猜,debug了N长时间)终于成功了!
汇编, BAS都可用,BAS的话先OPEN一个midi文件,然后就CALL播放代码,播放过程中不响应按键(响应的话在Z4EEC处加代码),播放完会返回BAS程序,然后关闭文件就可以了!
注意把midi文件尾部多余的FF删掉!
下面把源码贴出来,汇编后只有900字节,修改一下.ORG $XXXX 以符合您程序的要求。

.ORG $1000
LDA #$00
LDX #$09
Z5BDF: STA $0388,X
DEX
BNE Z5BDF
INT $0B1C
INT $0514
LDA $08FB
STA TEMP_5
LDA $08FC
STA TEMP_6
LDA $08FD
STA TEMP_7
LDA $08FE
STA TEMP_8
LDA #$00
STA TEMP_2
LDA #$60
STA TEMP_3
LDA #$00
STA TEMP_4
LDA #$01
STA TEMP_1
JSR Z4D4F
INT $031D
RTS
Z504C: LDA $040B
BNE Z5092
JSR $E09F
BCC Z508B
Z5059: JSR $E096
LDY #$03
LDX #$C8
Z5060: JSR $E0BA
DEX
BNE Z5060
DEY
BNE Z5060
JSR $E0AB
BCC Z508B
Z5071: INT $0313
BIT $040B
BMI Z5092
JSR $E0BA
JSR $E093
BCS Z508B
Z5084: LDY #$00
STY $03F6
CLC
RTS
Z508B: LDA #$00
STA TEMP_9
SEC
RTS
Z5092: LDA #$02
STA TEMP_9
JSR $E0CF
SEC
RTS
Z4D4F: JSR Z504C
BCC Z4D57
JMP Z4E59
Z4D57: LDA $03E9
JSR $E099
LDX #$FF
Z4D5F: JSR $E0BA
JSR $E093
BCC Z4D6A
DEX
BNE Z4D5F
Z4D6A: LDA #$00
STA $03F6
STA $0401
LDA #$99
JSR Z5023
BCS Z4D7C
JMP Z4E59
Z4D7C: LDA #$00
JSR Z5023
BCS Z4D86
JMP Z4E59
Z4D86: CLI
LDA #$00
STA $03F6
STA $0401
JSR Z4EEC
BCS Z4D9D
LDA TEMP_9
BNE Z4D9C
JMP Z4E59
Z4D9C: RTS
Z4D9D: LDX #$FF
LDA #$00
STA $0401
STA $03F6
Z4DA7: LDA #$00
STA $0401
STA $03F6
JSR $E0BA
JSR $E093
BCC Z4DBD
DEX
BNE Z4DA7
JMP Z4E59
Z4DBD: LDA #$AA
JSR Z5023
LDA #$03
JSR Z5023
JSR $E0BA
LDX #$FF
LDY #$FF
Z4DCE: JSR $E0BA
DEX
BNE Z4DE1
DEY
BNE Z4DE1
JMP Z4E59
Z4DE1: LDA #$00
STA $0401
STA $03F6
JSR $E0B7
BCC Z4DCE
CMP #$AA
BNE Z4DCE
JSR $E0B7
BCC Z4DCE
CMP #$00
BNE Z4DCE
JSR $E0BA
JSR $E09C
LDX #$FF
Z4E03: LDA $1E
AND #$40
BNE Z4E0F
JSR $E0BA
DEX
BNE Z4E03
Z4E0F: JSR $E0BA
LDA #$C0
STA $17
LDA $0436
ORA #$08
STA $18
STA $0436
PHP
PHA
LDA $3D
AND #$FC
ORA #$03
STA $3D
PLA
PLP
LDA $043D
STA $3A
LDA $043C
STA $3C
PHP
PHA
LDA $3D
AND #$FC
ORA #$02
STA $3D
PLA
PLP
LDA #$00
STA $3C
PHP
PHA
LDA $3D
AND #$FC
ORA #$00
STA $3D
PLA
PLP
LDA #$00
STA $3D
CLI
SEC
RTS
Z4E59: INT $031D
CLI
CLC
RTS
Z5023: STX $0680
PHA
LDX #$FF
PHP
PHA
LDA $3D
AND #$FC
ORA #$00
STA $3D
PLA
PLP
Z5035: DEX
BEQ Z5046
LDA $3B
AND #$20
BEQ Z5035
PLA
STA $3A
LDX $0680
SEC
RTS
Z5046: LDX $0680
PLA
CLC
RTS
Z4E5F: LDA #$00
STA TEMP_9
CLC
RTS
Z4EEC: LDA #$00
STA $03F6
STA $0401
JMP Z4F02
RTS
Z4F02: JSR Z4FB4
LDX #$F0
Z4F07: JSR $E093
BCC Z4F18
Z4F0F: JSR $E0BA
DEX
BNE Z4F07
JMP Z4E5F
Z4F18: LDA #$33
JSR Z5023
BCS Z4F22
JMP Z4E5F
Z4F22: LDX #$00
Z4F24: LDA $0280,X
JSR Z5023
BCS Z4F2F
JMP Z4E5F
Z4F2F: INX
CPX #$0F
BCC Z4F24
LDA #$0F
STA TEMP_10
LDA #$00
STA TEMP_11
STA TEMP_12
SEC
LDA TEMP_5
SBC TEMP_10
STA TEMP_5
LDA TEMP_6
SBC TEMP_11
STA TEMP_6
LDA TEMP_7
SBC TEMP_12
STA TEMP_7
LDA TEMP_7
CMP TEMP_12
BNE Z4F75
LDA TEMP_6
CMP TEMP_11
BNE Z4F75
LDA TEMP_5
CMP TEMP_10
Z4F75: BEQ Z4F7C
BCC Z4F7C
JMP Z4EEC
Z4F7C: JSR Z4FB4
LDX #$F0
Z4F81: JSR $E093
BCC Z4F8F
JSR $E0BA
DEX
BNE Z4F81
JMP Z4E5F
Z4F8F: LDA #$22
JSR Z5023
BCS Z4F99
JMP Z4E5F
Z4F99: LDA TEMP_5
JSR Z5023
LDX #$00
Z4FA1: LDA $0280,X
JSR Z5023
BCS Z4FAC
JMP Z4E5F
Z4FAC: INX
CPX TEMP_5
BCC Z4FA1
SEC
RTS
Z4FB4: LDA TEMP_2
STA $08CD
LDA TEMP_3
STA $08CE
LDA #$00
STA $08CF
STA $08D0
LDY TEMP_4
JSR Z6648
LDA #$00
STA $08D1
INT $0519
BCS Z5021
LDA #$0F
STA $08C6
LDA #$00
STA $08C7
LDA #$80
STA $E0
LDA #$02
STA $E1
INT $0516
BCS Z5021
LDA #$0F
CLC
ADC TEMP_2
STA TEMP_2
BCC Z4FFF
INC TEMP_3
Z4FFF: LDA TEMP_3
CMP #$C0
BNE Z500B
LDA TEMP_2
CMP #$00
Z500B: BCC Z5021
SEC
LDA TEMP_3
SBC #$80
STA TEMP_3
INC TEMP_4
Z5021: RTS
Z6648: CPY #$00
BEQ Z66B9
LDA #$00
STA TEMP_10
STA TEMP_12
LDA #$40
STA TEMP_11
SEC
LDA $08CD
SBC TEMP_10
STA $08CD
LDA $08CE
SBC TEMP_11
STA $08CE
LDA $08CF
SBC TEMP_12
STA $08CF
Z6677: LDA #$00
STA TEMP_10
STA TEMP_12
LDA #$80
STA TEMP_11
CLC
LDA $08CD
ADC TEMP_10
STA $08CD
LDA $08CE
ADC TEMP_11
STA $08CE
LDA $08CF
ADC TEMP_12
STA $08CF
DEY
BNE Z6677
SEC
LDA $08CE
SBC #$20
STA $08CE
LDA $08CF
SBC #$00
STA $08CF
LDX #$00
RTS
Z66B9: LDA #$00
STA TEMP_10
STA TEMP_12
LDA #$60
STA TEMP_11
SEC
LDA $08CD
SBC TEMP_10
STA $08CD
LDA $08CE
SBC TEMP_11
STA $08CE
LDA $08CF
SBC TEMP_12
STA $08CF
LDX #$00
RTS
TEMP_1: .DB $00
TEMP_2: .DB $00
TEMP_3: .DB $00
TEMP_4: .DB $00
TEMP_5: .DB $00
TEMP_6: .DB $00
TEMP_7: .DB $00
TEMP_8: .DB $00
TEMP_9: .DB $00
TEMP_10: .DB $00
TEMP_11: .DB $00
TEMP_12: .DB $00

midi_player.rar

2 KB, 下载次数: 914

midi播放演示程序

您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-3-28 19:10 , Processed in 0.010960 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表