📄 cmc.asx
字号:
*---------------------------** cmc player v 2.1 ** by Marcin Lewandowski ** based on cmc player v 2.0 ** by Janusz Pelc **---------------------------* org $0500*--- strona 0addr equ $fcword equ $fe*--- skoki jmp basic jmp init jmp play*--- danevolume dta d' 'czest dta d' 'numins dta d' ' dta c' cmc player v 2.1 '*frq dta d' 'znieks dta d' 'audc dta b(0)czest1 dta d' 'czest2 dta d' 'czest3 dta d' 'zniek dta d' 'count1 dta b($ff),b($ff),b($ff)count2 dta d' 'lopad dta d' 'numptr dta d' 'poswpt dta d' 'ilewol dta d' 'czygrx dta b($80),b($80),b($80)czygrc dta b($80)dana0 dta d' 'dana1 dta d' 'dana2 dta d' 'dana3 dta d' 'dana4 dta d' 'dana5 dta d' 'ladr dta d' 'hadr dta d' 'posptr dta b(0)possng dta b(0)pocrep dta b(0)konrep dta b(0)ilrep dta b(0)tmpo dta b(0)ltemp dta b(0)b1 dta b(0)b2 dta b(0)b3 dta b(0)czygr dta b(0)adrmus dta a(0)adradr dta a(0)adrsng dta a(0)*--- initinit sta b1 stx b2 sty b3 and #$70 lsr @ lsr @ lsr @ tax lda tab1,x sta zm1+1 lda tab1+1,x sta zm1+2 lda #3 sta $d20f cld lda word pha lda word+1 pha ldy b3 ldx b2 lda b1zm1 jsr graj pla sta word+1 pla sta word rtsgraj lda adrsng sta word lda adrsng+1 sta word+1 ldy #0 txa beq grajxl1 lda (word),y cmp #$8f beq l2 cmp #$ef bne l3l2 dex bne l3 iny cpy #$54 bcs l4 tya tax bpl grajxl3 iny cpy #$54 bcc l1l4 rtsgrajx stx possng jsr skoncz lda #0 ldx #9l5 sta poswpt,x dex bpl l5 sta posptr lda #1 sta czygr lda #$ff sta konrep lda adrmus sta word lda adrmus+1 sta word+1 ldy #$13 lda (word),y tax lda adrsng sta word lda adrsng+1 sta word+1 ldy possngl6 lda (word),y cmp #$cf bne l7 tya clc adc #$55 tay lda (word),y bmi l8 tax jmp l8l7 cmp #$8f beq l8 cmp #$ef beq l8 dey bpl l6l8 stx tmpo stx ltemp rtstempo and #$f beq l8 stx d0+1 stx d1+1 stx d2+1 sty d0+2 sty d1+2 sty d2+2 rtsinic stx adrmus stx word sty adrmus+1 sty word+1 clc txa adc #$14 sta adradr tya adc #0 sta adradr+1 stx adrsng iny iny sty adrsng+1 ldy #$13 lda (word),y sta tmpo sta ltempskoncz ldx #8l9 lda #0 sta czygr sta $d200,x cpx #3 bcs l10 sta volume,x lda #$ff sta count1,xl10 dex bpl l9przer lda #$80l11 ldx #3l12 sta czygrx,x dex bpl l12l13 rtskont lda #1 sta czygr lda #0 beq l11instr and #3 cmp #3 beq l13 cpx #$40 bcs l13 cpy #26 bcs l13 tax lda #$80 sta czygrx,xinst lda #0 sta count1,x sta count2,x sta lopad,x lda b2 sta czest,x lda b3 asl @ asl @ asl @ sta word clc lda adrmus adc #$30 pha lda adrmus+1 adc #1 tay pla clc adc word sta ladr,x tya adc #0 sta hadr,x clc lda adrmus adc #$94 sta word lda adrmus+1 adc #0 sta word+1 lda b3 asl @ adc b3 asl @ tay lda (word),y sta dana0,x iny lda (word),y sta dana1,x and #7 sta b1 iny lda (word),y sta dana2,x iny lda (word),y sta dana3,x iny lda (word),y sta dana4,x iny lda (word),y sta dana5,x ldy #0 lda b1 cmp #3 bne l14 ldy #2l14 cmp #7 bne l15 ldy #4l15 lda tab3,y sta word lda tab3+1,y sta word+1 lda dana2,x lsr @ lsr @ lsr @ lsr @ clc adc b2 sta b2 sta zm2+1 tay lda b1 cmp #7 bne l16 tya asl @ tay lda (word),y sta czest1,x iny sty b2 jmp l17l16 lda (word),y sta czest1,x lda dana2,x and #$f clc adc b2 sta b2l17 ldy b2 lda b1 cmp #5 php lda (word),y plp beq l18 cmp czest1,x bne l18 sec sbc #1l18 sta czest2,x lda dana0,x pha and #3 tay lda tab4,y sta zniek,x pla lsr @ lsr @ lsr @ lsr @ ldy #$3e cmp #$f beq l19 ldy #$37 cmp #$e beq l19 ldy #$30 cmp #$d beq l19 clczm2 adc #0 tayl19 lda tab5,y sta czest3,x rts*--- playplay cld lda addr pha lda addr+1 pha lda word pha lda word+1 pha lda czygr bne g1 jmp endg1 lda czygrc beq g2 jmp dal3g2 lda tmpo cmp ltemp beq g3 jmp dal2g3 lda posptr beq g4 jmp dal1g4 ldx #2g5 ldy czygrx,x bmi g6 sta czygrx,xg6 sta poswpt,x dex bpl g5 lda adrsng sta addr lda adrsng+1 sta addr+1 ldy possng sty wordg7 cpy konrep bne g8 lda ilrep beq g8 lda possng ldy pocrep sty possng dec ilrep bne g7 sta possng tay bpl g7g8 ldx #0g9 lda (addr),y cmp #$fe bne g10 ldy possng iny cpy word beq g11 sty possng jmp g7g10 sta numptr,x clc tya adc #$55 tay inx cpx #3 bcc g9 ldy possng lda (addr),y bpl dal1 cmp #$ff beq dal1 lsr @ lsr @ lsr @ and #$e tax lda tab2,x sta zm3+1 lda tab2+1,x sta zm3+2 lda numptr+1 sta word+1zm3 jsr stop sty possng cpy #$55 bcs g11 cpy word bne g7g11 ldy word sty possng jmp endstop jsr przerg12 ldy #$ff rtsjump bmi g12 tay rtsup bmi g12 sec tya sbc word+1 tay rtsdown bmi g12 clc tya adc word+1 tay rtstemp bmi g12 sta tmpo sta ltemp iny rtsrep bmi g12 lda numptr+2 bmi g12 sta ilrep iny sty pocrep clc tya adc word+1 sta konrep rtsbreak dey bmi g13 lda (addr),y cmp #$8f beq g13 cmp #$ef bne breakg13 iny rtsdal1 ldx #2v1 lda ilewol,x beq v2 dec ilewol,x bpl v7v2 lda czygrx,x bne v7 ldy numptr,x cpy #$40 bcs v7 lda adradr sta addr lda adradr+1 sta addr+1 lda (addr),y sta word clc tya adc #$40 tay lda (addr),y sta word+1 and word cmp #$ff beq v7v3 ldy poswpt,x lda (word),y and #$c0 bne v4 lda (word),y and #$3f sta numins,x inc poswpt,x bpl v3v4 cmp #$40 bne v5 lda (word),y and #$3f sta b2 lda numins,x sta b3 jsr inst jmp v6v5 cmp #$80 bne v7 lda (word),y and #$3f sta ilewol,xv6 inc poswpt,xv7 dex bpl v1 ldx posptr inx txa and #$3f sta posptrdal2 dec ltemp bne dal3 lda tmpo sta ltemp lda posptr bne dal3 inc possngdal3 ldy czest2 lda dana1 and #7 cmp #5 beq a1 cmp #6 bne a2a1 deya2 sty frq+3 ldy #0 cmp #5 beq a3 cmp #6 bne a4a3 ldy #2a4 cmp #7 bne a5 ldy #$28a5 sty audc ldx #2loop lda dana1,x and #$e0 sta znieks,x lda ladr,x sta addr lda hadr,x sta addr+1 lda count1,x cmp #$ff beq y4 cmp #$f bne y2 lda lopad,x beq y4 dec lopad,x lda lopad,x bne y4 ldy volume,x beq y1 deyy1 tya sta volume,x lda dana3,x sta lopad,x jmp y4y2 lda count1,x lsr @ tay lda (addr),y bcc y3 lsr @ lsr @ lsr @ lsr @y3 and #$f sta volume,xy4 ldy czest1,x lda dana1,x and #7 cmp #1 bne y6 dey tya iny cmp czest2,x php lda #1 plp bne y5 asl @ asl @y5 and count2,x beq y6 ldy czest2,x cpy #$ff bne y6 lda #0 sta volume,xy6 tya sta frq,x lda #1 sta b1 lda count1,x cmp #$f beq y9 and #7 tay lda tab9,y sta word lda count1,x and #8 php txa plp clc beq y7 adc #3y7 tay lda dana4,y and word beq y9 lda czest3,x sta frq,x stx b1 dex bpl y8 sta frq+3 lda #0 sta audcy8 inx lda zniek,x sta znieks,xy9 lda count1,x and #$f cmp #$f beq y10 inc count1,x lda count1,x cmp #$f bne y10 lda dana3,x sta lopad,xy10 lda czygrx,x bpl y11 lda volume,x bne y11 lda #$40 sta czygrx,xy11 inc count2,x ldy #0 lda dana1,x lsr @ lsr @ lsr @ lsr @ bcc y12 deyy12 lsr @ bcc y13 inyy13 clc tya adc czest1,x sta czest1,x lda czest2,x cmp #$ff bne y14 ldy #0y14 clc tya adc czest2,x sta czest2,x dex bmi x1 jmp loopx1 lda znieks sta znieks+3 lda dana1 and #7 tax ldy #3 lda b1 beq x2 ldy tab10,xx2 tya pha lda tab8,y php and #$7f tax tya and #3 asl @ tay lda frq,xd0 sta $d200,y iny lda volume,x cpx #3 bne x3 lda volumex3 ora znieks,x plp bpl d1 lda #0d1 sta $d200,y pla tay dey and #3 bne x2 ldy #8 lda audcd2 sta $d200,y clcend pla sta word+1 pla sta word pla sta addr+1 pla sta addr rts*--- basicbasic pla tax beq p6 cmp #2 beq p2p1 pla pla dex bne p1 rtsp2 lda $14 cmp $14 beq *-2 lda $224 cmp <p8 bne p3 lda $225 cmp >p8 beq p1p3 lda $224 sta p9+1 lda $225 sta p9+2 lda <p8 sta $224 lda >p8 sta $225 pla pla beq p4 sec sbc #1p4 sta p5+1 pla tay pla tax lda #$70 jsr init lda #0p5 ldx #0 jmp initp6 lda $14 cmp $14 beq *-2 lda $224 cmp <p8 bne p2-1 lda $225 cmp >p8 bne p2-1p7 lda p9+1 sta $224 lda p9+2 sta $225 lda #$40 jmp initp8 jsr play bcc p9 jsr p7p9 jmp $ffff*--- tablicetab1 dta a(graj) dta a(grajx) dta a(instr) dta a(tempo) dta a(skoncz) dta a(przer) dta a(kont) dta a(inic)tab2 dta a(stop) dta a(jump) dta a(up) dta a(down) dta a(temp) dta a(rep) dta a(break)tab3 dta a(tab5) dta a(tab6) dta a(tab7)tab4 dta b($80),b($a0) dta b($20),b($40)tab5 dta b($ff),b($f1),b($e4),b($d7) dta b($cb),b($c0),b($b5),b($aa) dta b($a1),b($98),b($8f),b($87) dta b($7f),b($78),b($72),b($6b) dta b($65),b($5f),b($5a),b($55) dta b($50),b($4b),b($47),b($43) dta b($3f),b($3c),b($38),b($35) dta b($32),b($2f),b($2c),b($2a) dta b($27),b($25),b($23),b($21) dta b($1f),b($1d),b($1c),b($1a) dta b($18),b($17),b($16),b($14) dta b($13),b($12),b($11),b($10) dta b($0f),b($0e),b($0d),b($0c) dta b($0b),b($0a),b($09),b($08) dta b($07),b($06),b($05),b($04) dta b($03),b($02),b($01),b($00) dta b($00)tab6 dta b($00),b($00),b($00),b($00) dta b($f2),b($e9),b($da),b($ce) dta b($bf),b($b6),b($aa),b($a1) dta b($98),b($8f),b($89),b($80) dta b($7a),b($71),b($6b),b($65) dta b($5f),b($00),b($56),b($50) dta b($67),b($60),b($5a),b($55) dta b($51),b($4c),b($48),b($43) dta b($3f),b($3d),b($39),b($34) dta b($33),b($39),b($2d),b($2a) dta b($28),b($25),b($24),b($21) dta b($1f),b($1e),b($00),b($00) dta b($0f),b($0e),b($0d),b($0c) dta b($0b),b($0a),b($09),b($08) dta b($07),b($06),b($05),b($04) dta b($03),b($02),b($01),b($00) dta b($00)tab7 dta a($b38),a($a8c),a($a00),a($96a) dta a($8e8),a($86a),a($7ef),a($780) dta a($708),a($6ae),a($646),a($5e6) dta a($595),a($541),a($4f6),a($4b0) dta a($46e),a($430),a($3f6),a($3bb) dta a($384),a($352),a($322),a($2f4) dta a($2c8),a($2a0),a($27a),a($255) dta a($234),a($214),a($1f5),a($1d8) dta a($1bd),a($1a4),a($18d),a($177) dta a($160),a($14e),a($138),a($127) dta a($115),a($106),a($0f7),a($0e8) dta a($0db),a($0cf),a($0c3),a($0b8) dta a($0ac),a($0a2),a($09a),a($090) dta a($088),a($07f),a($078),a($070) dta a($06a),a($064),a($05e),a($057) dta a($052),a($032),a($00a)tab8 dta b($00),b($01),b($02),b($83) dta b($00),b($01),b($02),b($03) dta b($01),b($00),b($02),b($83) dta b($01),b($00),b($02),b($03) dta b($01),b($02),b($80),b($03)tab9 dta b($80),b($40),b($20),b($10) dta b($08),b($04),b($02),b($01)tab10 dta b(3),b(3),b(3),b(3) dta b(7),b($b),b($f),b($13)*--- koniec end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -