*----------------*›*TMC short player*›*Jaskier/Taquart *›*----------------*›› opt 6› org $a000››bajt equ $fb›addr equ $fc›adrsng equ $fe››play lda czygrc› bne *+3› rts› bit pozptr› bvc r1› dec ltempo› beq *+5› jmp sound›› ldx #7› lda #0›p1 sta pozwpt,x› sta delay,x› dex› bpl p1› sta pozptr› tax› ldy #15›p2 lda (adrsng),y› bpl p3› dey› lda (adrsng),y› bpl *+5› jmp stop› stx addr› asl @› asl @› rol addr› asl @› rol addr› asl @› rol addr›zm0 adc #0› sta adrsng› lda addr›zm1 adc #0› sta adrsng+1› bcc p2-2›p3 sta numptr,x› dey› lda (adrsng),y› sta poddzw,x› inx› dey› bpl p2› clc› lda adrsng› adc #16› sta adrsng› bcc *+4› inc adrsng+1› jmp sound››r1 dec ltempo› bpl r1-3› inc pozptr› lda tempo› sta ltempo› ldx #7›r2 dec delay,x› bmi *+5› jmp r14› ldy numptr,x›zm2 lda $ffff,y› sta addr›zm3 lda $ffff,y› sta addr+1› ldy pozwpt,x›r3 lda (addr),y› bne r4› iny› inc pozwpt,x› lda (addr),y› lsr @› lsr @› lsr @› lsr @› sta adcvol,x› jmp r13›r4 cmp #$40› bcs r5› adc poddzw,x› sta wysdzw,x› iny› inc pozwpt,x› lda (addr),y› lsr @› lsr @› lsr @› lsr @› sta adcvol,x› ldy numdzw,x› jsr dzwiek› jmp r13›r5 bne r8› iny› inc pozwpt,x› lda (addr),y› bpl r6› sta bajt› iny› inc pozwpt,x› lda (addr),y› lsr @› lsr @› lsr @› lsr @› sta adcvol,x› lda bajt›r6 and #$7f› bne r7› lda #64› sta pozptr› bne r13›r7 sta tempo› sta ltempo› bne r13›r8 cmp #$80› bcs r11› and #$3f› adc poddzw,x› sta wysdzw,x› iny› inc pozwpt,x› lda (addr),y› and #$7f› bne r9› lda #64› sta pozptr› bne r10›r9 sta tempo› sta ltempo›r10 iny› inc pozwpt,x› lda (addr),y› lsr @› lsr @› lsr @› lsr @› sta adcvol,x› ldy numdzw,x› jsr dzwiek› jmp r13›r11 cmp #$c0› bcs r12› and #$3f› sta numdzw,x› iny› inc pozwpt,x› jmp r3›r12 and #$3f› sta delay,x›r13 inc pozwpt,x›r14 dex› bmi sound› jmp r2››sound ldx #7› lda #0› sta aud1›p5 lda czygrx,x› beq p4› jsr graj› lda aud1› and audtab,x› beq p4› ldy #71› lda (addr),y› clc› adc aktwys,x› sta aktwys+2,x› tay› lda frqtab,y› sec› adc pomoc1,x› sta frq+2,x›p4 cpx #4› bne p6› lda aud1› sta aud2› dex› bpl sound+2›p6 dex› bpl p5›› lda #3› sta $d21f› sta $d20f› ldx frq+4› ldy frq› stx $d210› sty $d200› lda volume+4› ora znksz+4› sta $d211› lda volume› ora znksz› sta $d201› ldx frq+5› ldy frq+1› stx $d212› sty $d202› lda volume+5› ora znksz+5› sta $d213› lda volume+1› ora znksz+1› sta $d203› ldx frq+6› ldy frq+2› stx $d214› sty $d204› lda volume+6› ora znksz+6› sta $d215› lda volume+2› ora znksz+2› sta $d205› ldx frq+7› ldy frq+3› stx $d216› sty $d206› lda volume+7› ora znksz+7› sta $d217› lda volume+3› ora znksz+3› sta $d207› ldx aud2› ldy aud1› stx $d218› sty $d208› rts››graj lda adrsnl,x› sta addr› lda adrsnh,x› sta addr+1› lda slupy,x› cmp #63› bcs n6› tay› adc #3› sta slupy,x› lda (addr),y› and #$f0› sta znksz,x› lda (addr),y› and #15› sec› sbc adcvol,x› bpl n1› lda #0›n1 sta volume,x› iny› lda (addr),y› and #$f0› beq n8› bpl n3› ldy #73› lda (addr),y› ora aud1› sta aud1› ldy slupy,x› dey› dey›n3 lda (addr),y› and #$70› beq n9› lsr @› lsr @› sta n5+1› lda #0› sta pomoc1,x› iny› lda (addr),y›n5 bcc *› nop› nop› nop› nop› jmp a1› nop› jmp a2› nop› jmp a3› nop› jmp a4› nop› jmp a5› nop› jmp a6› nop› jmp a7››n6 lda opad,x› beq n8› dec lopad,x› bne n8› sta lopad,x› lda volume,x› beq n8› dec volume,x›n8 ldy #72› lda (addr),y› ora aud1› sta aud1›n9 lda aperm,x› clc› adc #63› tay› lda (addr),y› adc wysdzw,x› sta aktwys,x› tay› lda frqtab,y› sta frq,x› dec lperm,x› bpl m1› lda dperm,x› sta lperm,x› lda kolejn,x› bne m6› inc aperm,x› lda ilperm,x› cmp aperm,x› bcs m1› lda #0› sta aperm,x› beq m1›m6 clc› adc aperm,x› sta aperm,x› bne m7› lda #1› sta kolejn,x› bne m1›m7 cmp ilperm,x› bne m1› lda #$ff› sta kolejn,x›m1 lda czekaj,x› beq m2› dec czekaj,x› rts›m2 dec ltyp,x› bpl m2-1› lda dtyp,x› sta ltyp,x› lda typ,x› sta m5+1›m5 bpl *› jmp typ0› nop› jmp typ1› nop› jmp typ2› nop› jmp typ3› nop› jmp typ4› nop› jmp typ5› nop› jmp typ6› nop› jmp typ0››typ1 lda pomoc2,x› inc pomoc2,x› and #3› lsr @› bcc t2› beq t1›typ6 lda frq,x› sec› sbc param,x› sta frq,x› lda #0› sec› sbc param,x› sta pomoc1,x› rts›t1 lda param,x› sta pomoc1,x› clc› adc frq,x› sta frq,x›typ0 rts›t2 lda #0› sta pomoc1,x› rts››typ2 ldy pomoc2,x› lda param,x› bmi t3› iny› iny›t3 dey› tya› sta pomoc2,x› cmp param,x› bne t4› lda param,x› eor #$ff› sta param,x› tya›t4 sta pomoc1,x› clc› adc frq,x› sta frq,x› rts››typ3 ldy pomoc2,x› lda param,x› bmi t5› iny› iny›t5 dey› tya› sta pomoc2,x› cmp param,x› bne t6› lda param,x› eor #$ff› sta param,x› tya›t6 clc› adc aktwys,x› sta aktwys,x› tay› lda frqtab,y› sta frq,x› rts››typ4 lda pomoc2,x› sta pomoc1,x› tay› clc› adc frq,x› sta frq,x› tya› clc› adc param,x› sta pomoc2,x› rts››typ5 lda aktwys,x› sec› sbc pomoc2,x› sta aktwys,x› tay› lda frqtab,y› sta frq,x› lda pomoc2,x› clc› adc param,x› sta pomoc2,x› rts››a2 adc frq,x›a1 sta frq,x› rts›a3 ldy wysdzw,x› adc frqtab,y› sta frq,x› tya› sta aktwys,x› rts›a4 and $d20a› sta frq,x› rts›a7 adc wysdzw,x›a5 sta aktwys,x› tay› lda frqtab,y› sta frq,x› rts›a6 sta aktwys,x› tay› lda frq,x› adc frqtab,y› sta frq,x› rts››d1 sta volume,x› lda wysdzw,x› sta aktwys,x› rts›dzwiek lda #0› sta czygrx,x›zm8 lda $ffff,y› sta adrsnl,x› sta addr›zm9 lda $ffff,y› sta adrsnh,x› sta addr+1› ora addr› beq d1› ldy #74› lda (addr),y› sta opad,x› sta lopad,x› ldy #76› lda (addr),y› tay› and #$70› lsr @› lsr @› sta typ,x› tya› bmi d2› and #15› bpl d3›d2 and #15› eor #$ff› clc› adc #1›d3 sta param,x›d7 ldy #77› lda (addr),y› sta czekaj,x› ldy #79› lda (addr),y› tay› and #$80› beq d8› lda #1›d8 sta kolejn,x› tya› and #$70› lsr @› lsr @› lsr @› lsr @› sta ilperm,x› bne d6› sta kolejn,x›d6 tya› and #15› sta dperm,x› sta lperm,x› ldy #78› lda (addr),y› tay› and #$3f› sta dtyp,x› sta ltyp,x› tya› and #$c0› clc› adc wysdzw,x› sta wysdzw,x› sta aktwys,x› tay› lda frqtab,y› sta frq,x› lda #0› sta slupy,x› sta pomoc1,x› sta pomoc2,x› sta aperm,x› lda #1› sta czygrx,x› rts››init sty addr› stx addr+1› ldy #30› lda (addr),y› sta tempo› lda addr› clc› adc #32› sta zm8+1› bcc *+3› inx› stx zm8+2› clc› adc #$40› sta zm9+1› bcc *+3› inx› stx zm9+2› clc› adc #$40› sta zm2+1› bcc *+3› inx› stx zm2+2› clc› adc #$80› sta zm3+1› bcc *+3› inx› stx zm3+2› clc› adc #$80› sta adrsng› sta zm0+1› bcc *+3› inx› stx adrsng+1› stx zm1+1› jsr stop› lda #64› sta pozptr› lda #1› sta ltempo› sta czygrc› rts››stop lda #0› sta czygrc› ldy #7›d9 sta $d200,y› sta $d210,y› sta volume,y› sta czygrx,y› dey› bpl d9› sta $d208› sta $d218› sta aud1› sta aud2› rts››frqtab dta b(0),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(15),b(14),b(13),b(12)› dta b(11),b(10),b(9),b(8)› dta b(7),b(6),b(5),b(4)› dta b(3),b(2),b(1),b(0)›› dta b(0),b($f2),b($e6),b($da)› dta b($ce),b($bf),b($b6),b($aa)› dta b($a1),b($98),b($8f),b($89)› dta b($80),b($7a),b($71),b($6b)› dta b($65),b($5f),b($5c),b($56)› dta b($50),b($4d),b($47),b($44)› dta b($3e),b($3c),b($38),b($35)› dta b($32),b($2f),b($2d),b($2a)› dta b($28),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(15),b(14),b(13),b(12)› dta b(11),b(10),b(9),b(8)› dta b(7),b(6),b(5),b(4)› dta b(3),b(2),b(1),b(0)›› dta b(0),b($ff),b($f1),b($e4)› dta b($d8),b($ca),b($c0),b($b5)› dta b($ab),b($a2),b($99),b($8e)› dta b($87),b($7f),b($79),b($73)› dta b($70),b($66),b($61),b($5a)› dta b($55),b($52),b($4b),b($48)› dta b($43),b($3f),b($3c),b($39)› dta b($37),b($33),b($30),b($2d)› dta b($2a),b($28),b($25),b($24)› dta b($21),b($1f),b($1e),b($1c)› dta b($1b),b($19),b($17),b($16)› dta b($15),b($13),b($12),b($11)› dta b($10),b(15),b(14),b(13)› dta b(12),b(11),b(10),b(9)› dta b(8),b(7),b(6),b(5)› dta b(4),b(3),b(2),b(1)›› dta b(0),b($f3),b($e6),b($d9)› dta b($cc),b($c1),b($b5),b($ad)› dta b($a2),b($99),b($90),b($88)› dta b($80),b($79),b($72),b($6c)› dta b($66),b($60),b($5b),b($55)› dta b($51),b($4c),b($48),b($44)› dta b($40),b($3c),b($39),b($35)› dta b($32),b($2f),b($2d),b($2a)› dta b($28),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(15),b(14),b(13),b(12)› dta b(11),b(10),b(9),b(8)› dta b(7),b(6),b(5),b(4)› dta b(3),b(2),b(1),b(0)››audtab dta b(4),b(2),b(0),b(0)› dta b(4),b(2),b(0),b(0)››aud1 dta b(0)›aud2 dta b(0)›tempo dta b(0)›ltempo dta b(0)›pozptr dta b(0)›czygrc dta b(0)››volume dta d' '›aktwys dta d' '›numdzw dta d' '›znksz dta d' '›frq dta d' '›pozwpt dta d' '›delay dta d' '›numptr dta d' '›poddzw dta d' '›wysdzw dta d' '›czygrx dta d' '›adrsnl dta d' '›adrsnh dta d' '›adcvol dta d' '›slupy dta d' '›opad dta d' '›lopad dta d' '›typ dta d' '›param dta d' '›pomoc1 dta d' '›pomoc2 dta d' '›czekaj dta d' '›dtyp dta d' '›ltyp dta d' '›ilperm dta d' '›aperm dta d' '›dperm dta d' '›lperm dta d' '›kolejn dta d' '›› end›