DOSpHGIK#L(N83| B$N8( i)h<A0<BQ n>f |F|FrN(Jf |F|FE*pJfQE"pJfQ`A1| "1|1|B,nA!HQN @*(",x;|A+H;|BAr"EE0pg2j rP@` pCEPQRA` 93 -f -fSyg>9g49 _g ]g [g Ygd Wg Ug` +Fwf lA4p p;@;@;@;|;| n+h&L?CN @ hpNuA@@`6 +Fwf|Nw| x`|Fw|Fx` +FfKB&NANpN| xK e!f&h>MvC <""N"DA3|a L3|a 3|a`#H(#|$B,N8NuD!G!TAL ToOLBOoT 1.6 by SNIPER!F1:DRiVESF2:FASTF3:FiLTERF4:PAL/NTSCF5:INSTALL BOoTF6:HARD RESETDRiVES:ON FAST:ON EXT CHiP:ON %VODKA! ONETO, 12 RUE GAUGUiN, 91600 SAViGNY FRANCEtopaz.fontdos.library 8F5jjZY$@4VxH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsli(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYH͂_volume(a6),9(a5) rts pt_volslidedown sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 pt_volslidedown2 sub.b d0,n_volume(a6) bpl.s pt_vsdskip clr.b n_volume(a6) pt_vsdskip move.b n_volume(a6),9(a5) rts pt_positionjump move.b n_cmdlo(a6),d0 subq.b #1,d0 move.b d0,pt_songpos-(pt_samplestarts-4)(a1) pt_pj2 clr.b pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_volumechange sub.w d0,d0 move.b n_cmdlo(a6),d0 cmp.b #$40,d0 ble.s pt_ T-volumeok moveq #$40,d0 pt_volumeok move.b d0,n_volume(a6) move.b d0,9(a5) rts pt_patternbreak sub.w d0,d0 move.b n_cmdlo(a6),d0 move.l d0,d2 lsr.b #4,d0 mulu.w #10,d0 and.b d3,d2 add.b d2,d0 cmp.b #63,d0 bgt.s pt_pj2 move.b d0,pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_posjumpflag-(pt_samplestarts-4)(a1) rts pt_setspeed move.b 3(a6),d0 beq pt_return2 clr.b pt_counter move.b d0,pt_speed-(pt_samplestarts-4)(a1) rts pt_checkmoreefx tst.b n_glissfunk(a6) beq.s!D pt_chkmfxnofnk bsr pt_updatefunk pt_chkmfxnofnk move.b 2(a6),d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable2(pc,d0),d0 jmp pt_jmptable2(pc,d0) pt_jmptable2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*0 dc.w pt_checkmoreefxx-pt_jmptable2 ;*1 dc.w pt_checkmoreefxx-pt_jmptable2 ;*2 dc.w pt_checkmoreefxx-pt_jmptable2 ;*3 dc.w pt_checkmoreefxx-pt_jmptable2 ;*4 dc.w pt_checkmoreefxx-pt_jmptable2 ;*5 dc.w pt_checkmoreefxx-pt_jmptable2 ;*6 dc.w pt_checkmoreefxx-pt_jmptable2 ;*7"IK dc.w pt_checkmoreefxx-pt_jmptable2 ;*8 dc.w pt_sampleoffset-pt_jmptable2 ;9 dc.w pt_checkmoreefxx-pt_jmptable2 ;*a dc.w pt_positionjump-pt_jmptable2 ;b dc.w pt_volumechange-pt_jmptable2 ;c dc.w pt_patternbreak-pt_jmptable2 ;d dc.w pt_e_commands-pt_jmptable2 ;e dc.w pt_setspeed-pt_jmptable2 ;f pt_checkmoreefxx rts pt_e_commands move.b n_cmdlo(a6),d0 lsr.b #4,d0 and.w d3,d0 add.w d0,d0 move.w pt_jmptable3(pc,d0),d0 jmp pt_jmptable3(pc,d0) pt_jmptable3 dc.w pt#*H_filteronoff-pt_jmptable3 ;0 dc.w pt_fineportaup-pt_jmptable3 ;1 dc.w pt_fineportadown-pt_jmptable3 ;2 dc.w pt_setglisscontrol-pt_jmptable3 ;3 dc.w pt_setvibratocontrol-pt_jmptable3 ;4 dc.w pt_setfinetune-pt_jmptable3 ;5 dc.w pt_jumploop-pt_jmptable3 ;6 dc.w pt_settremolocontrol-pt_jmptable3 ;7 dc.w pt_e_comex-pt_jmptable3 ;*8 dc.w pt_retrignote-pt_jmptable3 ;9 dc.w pt_volumefineup-pt_jmptable3 ;a dc.w pt_volumefinedown-pt_jmptable3 ;b dc.w pt_notec$qbut-pt_jmptable3 ;c dc.w pt_notedelay-pt_jmptable3 ;d dc.w pt_patterndelay-pt_jmptable3 ;e dc.w pt_funkit-pt_jmptable3 ;f pt_e_comex rts pt_filteronoff move.b n_cmdlo(a6),d0 and.b #1,d0 add.b d0,d0 and.b #$fd,$bfe001 or.b d0,$bfe001 rts pt_setglisscontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_glissfunk(a6) or.b d0,n_glissfunk(a6) rts pt_setvibratocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 and.b d4,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts % Գ pt_setfinetune move.b n_cmdlo(a6),d0 and.b d3,d0 move.b d0,n_finetune(a6) rts pt_jumploop tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_setloop tst.b n_loopcount(a6) beq.s pt_jumpcnt subq.b #1,n_loopcount(a6) beq pt_return2 pt_jmploop move.b n_pattpos(a6),pt_pbreakpos-(pt_samplestarts-4)(a1) st.b pt_pbreakflag-(pt_samplestarts-4)(a1) rts pt_jumpcnt move.b d0,n_loopcount(a6) bra.s pt_jmploop pt_setloop move.w & \sTpt_pattpos(pc),d0 lsr.w #4,d0 move.b d0,n_pattpos(a6) rts pt_settremolocontrol move.b n_cmdlo(a6),d0 and.b d3,d0 lsl.b #4,d0 and.b d3,n_wavecontrol(a6) or.b d0,n_wavecontrol(a6) rts pt_retrignote moveq #0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 beq.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 bne.s pt_rtnskp move.w (a6),d2 bne.s pt_rtnend moveq #0,d2 move.b pt_counter(pc),d2 pt_rtnskp divu d0,d2 swap d2 tst.w d2 bne.s pt_rtnend pt_doretrig move.w n_dmabit(' %;ka6),$dff096 move.l n_start(a6),(a5) move.w n_length(a6),4(a5) move.b $dff006,d0 addq.b #3,d0 pt_rtrlp1 cmp.b $dff006,d0 bne.s pt_rtrlp1 move.w n_dmabit(a6),d0 or.w #$8000,d0 move.w d0,$dff096 move.b $dff006,d0 addq.b #3,d0 pt_rtrlp2 cmp.b $dff006,d0 bne.s pt_rtrlp2 move.l n_loopstart(a6),(a5) move.l n_replen(a6),4(a5) pt_rtnend rts pt_volumefineup tst.b pt_counter-(pt_samplestarts-4)(a1) bne pt_return2 sub.w d0,d0 move.b n_cmdlo(a6),d0 and.b d3,d0 bra pt_volsliH7 1.N9_rG8uq\ Anathema Network 752O?0rHsb[~}|{zyxwvutsp3 `0BYSs.aRTcOREprtO  @,M@8@e@*@C]@K^y~%>HI^<< aVN|aP/I<<< aFQ ,xN.SF Ffa0B$n$*gԂԂ$BE<$ԂԂAf"$BLNu>C"QQXNu,M8e*C]K^y~zRFN IRFN,I$N8JBg SEkJ ru*aSBfSg>f dVf dFf d6f d&f d ~`,~f Q\~`p~`p~` p~`p~6f d f d"|;pX` f B`|;pf BSfF|:F>f d6Cf d$:{0P`"@ :{0X;pj gf FSfRF˻cĽf*JSEk%Sf`X 9Lo`z%=B>d 5EMPC+REEVe!FJ]-TS*TSܵTU˴;/| D }ګSV 4AM5\T^Ƶ !T< "b`Drv;ͥ4fBUL0M P%RJT/1T;>e!F+D!"26u*;T] :"_e ST@, ^d SJ4KeTѳ@ @4$ =VM#Ue&K#!MU]R ##uˤ^Me3;ZT =`lD P5CKU>QƫlADLNKeE""R*:u 0D3kV;#p;EܬC" PVγU#JVڶ cѬ@cK̵E CͶM2CbB@SI?m;33T0Dc0!Rm\#붶1$42RKSl;BR`j]Ul[05Mdbj3T^e+;$4O5U1l\ 5{SD%LƕClT@!Qţ]RVAM-RU3LORAlԽzB3SVںm2z,UbBv+:Vl’U_BD@ڶlk^ ťT5Z*-e \f+5P\Qe6-a^Eaŵ@\JJUMLWE#B\˻Uf`M,KVA :BܽBKO?U̵UE/3l0UZӰ<5/ĥU5LU1~]U̻OLKZܶ-6kd A T^M.EZT4DzATL2R+Ml=KdAZ0;_3Eo+E|VN-+͵]A%Lť2d+Tۦ\< .l TaKeƭ=[$K2!%6&_L,aJ,]1B/1.mrLe =4DL˶b&"cPUs5=ckʱSf9d[ c_e[S2-W^JDF T5ۤU#>T;=#Z[ "AD*V+DZ?[˫BT%b3qżbijRļCESoeFJ.ΥCfZ=r{TCVEʽSU T=$o$KegʱU@UT1DE2d]4j\ˣUt̾lFl5ܼP5«}5L3U̲DiE괡lFk6FcbLc9UGkeUdr |Oԛk[TUfRFL]VլY5TD,%˫t#S&TV%SZ=Ez5l6&fS˚T)MU>I'l6=tDlMUBV_GlFjs%jKT]V/fkV;*sĻYԽUÛjV!|kVgF!KTifµikVff[T#gkV{eӱlT3g "GlV[yViUBuE+BelVN<7ɦUzV+NydFӻGFL˛UiWOifFsb lg#ĩvV-kzUťij-gⴚvfl:W9TsśfУ WE:K`#h@%98 A -#$%&(''&%#r +! @ɾ= 9@Aiƾ  !$&(*,.012546<76340.+'#Ź E0     h#_RBv {Z+$;W zuLɲSou^4b fB,vK*{Lsͅ$gV8DOjceBi{j{pr5V;vV;k{Rw׻ЀUeNElW\)9ަ7QzK+kSBAuƵTbtwPTEUS`B\WnZK "\CFzǶz,BdM*pVe \#B#wS6 ܶ?k{j@kGle!ҬXlA5rPaxBHlG{d#kv|fZOkzĔlw*E@T˱Ow[ZӻF hN ϻ׼[ػ}[ʂ,@V6&$j̈́G(K|"xa=MZ<̘Nȼk`%Uqh{AP'̌FsLb w(Zg.*VtrgLMidWz£b(W":Ǽpk2r;vME7lu={cv.$kwUg.Tnd >"13 <=10>.#1-1C! /-#41A?"03 O#"B,/#$B?2NA3# #=3#3@4A !03RA2/<T -30$ -$1,3 !M? -?/;3M C # $4E ,,>,=24CC!]>3CM\3! TA=1rb"]%\TC2A4#MMMO \4=E;E$SL 4Q$L3NDE]OO?KE=D\P4KD&MB=4D"0BUN$ML4E,3C]CC,\]D;C;5B2NU[ D\,D$3;T,!C 3BR\1KK˴FL]>4[.D\LAT[C\.l$B5 L-D25LBU,^;VD4["O5\T[EP>eTjMkͻN]D\R\VEZlKS;PDUlf$b\ETu];evDRe _+ElZjDT4D^z+[T@[K`ķ*9"x _0XTxŻ[iGr¿{=8g>b3(r!$Cg1v5 O@J -"0D1żW<|;c\7IJ_Ge(HH5X*CWpT# -  84`)0ΫSr|^Ǚt)BxA~,X"4}/r ^ 9N1<FF]5ueGfl23G6g@m])Qv 6.r ɆC).ո6Ŀ0DR:zqt<># 6G|ۗfw-GQF#EGDDC54<2:384t.S .Dk{&c*&<E^`\;\8$<lh$:T@Y,@"dB{ Y^!p e 6Cr :B:o:@D @yD:"_:f,,p"Rrhwĵ0V}N`WH`t}H4#p 2B2/F PF<<$B. .$/cw\< ,2k 2C/W" (b8b (H 6= c+ xJ@ #@6 6R((H%sOV' (@JaŻ @r:Jӕ"RZ)Hi:q?H)23DA q*MNt>$L_@i@F D7> D:60^," & ?P _jr!lqAE> ^ǰӠ,Ϥ zϩr1OfhF/17>8$Q:Vg 9 *߈P(Uȑ X&0D0/D "@ BDl0 :.Xw'r!&8ȉ\cȉȃȅOȉp;68{ ^7 _7; >AnACn@"&N"ّ'$s )RjBa+2*kdBlOPB>/[5O`  9Or"r"' 'r!rɲ)-$   :&2 oл* 0ZB<` 'K Ms"YUL9DEAD.dE%46??j>\T#g&>ӳz>!v67Br /*r,0#*pOP $`~r'XZNJ|Hr:R.*scP| πSȇC|`3?@?##ۂA bM 6&@, A&N0'&ji͎_Hh,lwp9p%s|P%6} ?`%.%5P%@Ʒ`dD '>M2?:׉>˯3I"%',"t>XKC1 "6;l!62OW% $3pAp\+-PH 5d3221F0//14l27@*tZO \I &G!U +C^7 G/x#/g~7ϡT?G W@*^GɑT{?gL W@S*^$ /D rLә(L>LOacDR|#oacb 3 3@?"[[<x @` RIޏтSnHň+r~ Zt^F@*$U,208&y, 9 i   A}A.@Aޮƕ?̕W|lY@)q,ȦX|) P<,?+~ T@ ZH.0J4)|E H <ѐ;0!2.ȁ*T|@DBAD FlHj! q,6D0=D#r8K/A=O0P9p : `P= :p[ + Hx sS .8q - |Z <* L _ d\  6  Z `R HŽO[fKG(|G$J( s~(( Cx}>ּOr\d]jW ~_W_W+8dP>Q! kg3 plqFg @2W@*`@y  R""=0oA`& ``xˠVD`& 0HP +26` `A^ .Mkp @`ЌP=e&&~ .󢂡q46@U$W3!PbIa+xs$s%B-3BÀB8 <[rܑ8~oК:1'>oD1Pe0 " " =8Ȏ|I* *@  *2R44@2}o2 Q _T_W"CP1N()BF}uP4 \0& B& ѱB:)5c Lˣ>S4+ [ ,DlF&tOR@%%1-&)4pN? )ex +}+#RMRB;z?I**8B@%0BS] ,7#-2 \2Hra y6}V/xl&fT6|Y2 |(B}ФF\2&-T1"yy>&%B!;h 0 APO $Ƽ l \<,_r@eny(e3GJV   L< debX8zhi]" ^>;D8J<4< Q Ai.Z@1~ L ێHߌ2p$eAٞ?z@()\i.gI 04V؃ P9&B]耓>(H* @ I A P܀W#@tX0! _0 8=4JAf@f=[^Z'cRN[LхP'&Pp r4g2@2LN01#| =3?y$OyI@+UHi} ap/57.d@4s 9 .~b3rLp =78SG|)137.үc=@7iC|#b4`!_= #c~ f:q3 [061i g)077*_csD@=;{^reC3ސG<־F({c|a!| tǪ :#p]8]tzCc*%Ѐy?ס Ah4_ ٴA5^7D>n~77<.߿Q yXs<1 X}3BXޏ-H)8~ ~TӇJCsƍ mA{GG/Ыf8v >!yo=:WF@ߟa)\ӂYyҍ9OvJ>=J}r  %?AL@:D%4> a`Ā|X|!t@ _;x?(zC]cK_VЈ>gh*Y~hGric#}17ی#,^^27Ѐp_uhl I1Z@=Owߘ]^Q:a/)!??tғ>7"d0ud 2$4; Ay4G? y`G@1 &!Maq> ?4v"8*|;4j"?7f>@o={% !m+`@=K2;f r~? zN~= #(G;k[ "hs>AH_~FO5?G#D<LΦp1$*r!~-(s58)/hSG,OS22#0| ~?^ uIc(>`^@~/GO1p  o)fŰd(dj:LaLHG+sTb+ ;x@0o40ug1I@LÃ6z1d>CVc4F' dB/V'@6$ud1Ύ.qT@+app^Q㛫Ig-[Q- ?Mܽ!"?}$ ky`^e!oݣ߃? x`i2>g{9jtٯ.H'il@q=<=~o]?C|WQ'֌}ߚtr"zz̎0 >OC l=SL_ 9s_}| 3SI.  ̈́x@w'LIg0_h'?8W PWy4>uwF'JK@~wWtј[wM2T U{]}o@ }7{Sd}N?]&Co|p#2տwEo=1,) 0Pz+ μr#v{Ds}CO `? o]r$\|tFj@ ϤG= x6@=1)Ux>@v~+ !ϖ[Ե P 89{<@0@7 @jǏM xtFK2x<`pS#r!䟼$3 ەs=IBxYUwp{>w guWW S`%BɁnq|ZO@BG ӧ)`p!b1owg$=q0 L{'<.OdקhH2< 7Pph2s!/ T3ݲ-O1`| x_MbEjxz/Bg \a kǸL~_r&T'ǜV ZOE߀ 1i-2wt ߵL5 !k ?Kꡀ%g ;?(~@91Fr 5^ʚ`  c ?W@b?o/:lǫt$, x PlЗЮb8O4QiϘ 0 0|8]xG?V DdC6lI{kK!L0<,kBpdCM!ooKs`X A|8>L=Aɟ!p?CO<8?&OlƿA!@5kS ? 7x}{7ç[NAk@T?^{tM ?g qUbޝԌ(Og`oL?8T~ 7.ObV+(r':X>*F(u`Cp_E%~;od*,q8_?W_?g???8?C^~c?/"Ǔ1"??ɗ?c~? ?</?/O/7 ?>%?CC'~ _(?Ar*u֖ ??/??O?n?$#/;x??{ pEf[M{0K<{azO.?>?! ??0s>᧔ /?"? !^19\_0'~??DX?/?x| Mn???UTh`ľBr?SG?h? 3>a/?s@?D|L/&);?P;x?U/'-8?!,0#@xcN1߇/o;r+ +? O_LO}Hm/}@B?O!??K|G/ˀ#k?;{??xSgz?q$/W?%? |;R?h|_lf?@?/wxWZ~??+B//a ?Uob%/aQ"PF!ƪ0_;'_/}yJ*?,~TxIaO=2kWUU>wJ?;?Bt?#=/?U?G?=A?O>#? 0?~? o??` `?b?5X+/Bq~?.h950?'?K/q~? =i< /)?_r,KDiuO?t B?#0ncZ}T6+E/?&3ϊ L?}0/GD~%jG?/|sM3+<ᇗ}+Myo?!Q9|%-jx?_2%Wc?O?H>5bGVs?~??mc+m3? ~?qG?[ GqN?O|Ô8|O|i?$< 0qR0b>?JODf1K)&KOyqƿ8`U<To\?*2)>^G`"> z1@ǏϿ]A/@sw?J?Bt(/ ` ?r. y,L6?Ώdo?? ?>o/0</> Oy?/ *????E_} !?1̀W!xr~"PFHs]&nCi8@ww!o;Tz;~'M;`!d'c;88e  7`3@; p.z;`v0;DBV~p'_(U|%fnh8~Q~>|D켓;8Ffб@K,<p`|88;%87p,8|~`U,H|||>vux5?& 5x! <r/sfk~B7g 5/ 11UtUBI/wā#/_@2߈5y5El?눘{ u{oMOU u@b6_sWu{D++u8눰/ ~ #11<F? 6s믲U 2~~yO-dWc._Du,@ryG<~6{k|^~# ͿW|FxBz#D\?ů3 F\uGG/uL{(_,?uB>u#+xu? )/0_6`s' ا u#uuG0L0 ˋgxuKX"su<0~=1r0K!6 Fk/ 8GN6M-` oHKl3G)+8_ u|*+jU⃕ % +c/4?1 @AGð07CM`8̭$o@Esp]y#A##apIG 0늭|D`jU@BO3V?T3 >7~<#10 tWFD^u15X =~!1ӏ%9y||[):0S f=|MU/ !)"~ YV'a8/c^'8 t81@_4 @'OU@V$+cK#r1N/<FuG}.DYb>#0,K $?@@ ~#B/p<)Q@+7u AE@5<{1! @pNa@H ΃ux _5C!#x ?x8* )@-"_!y'3(w oz- p3 x@W0} 3Ox~/awpr2r'C<xQ`_p@9xpS8T E @#nx 4V / 0~w;^r6p A/| 7 6h!S #[yC6(p'!u S&Bd1!@ @*Q}B@3h#8 O %>GX {IX ':2Z?@)tyc1lyr_bil.scihparSXGF O8+W 䆬TUOY.HUUP ?![.SVL 1639 $W}AB`heK^TAHLςhY)GGBF `Ë!UAN4Kzr3uKgG#K 2045Q51#XLLIZIOAF_aP4[]!0Q PzFÌH35448DnfG"CK>bV}|>(TCAp- u6B"VDOdauYEKIG69G B-gSOPq\C078sEZISJ]8LUBM{!v'3DI1v-DAEP-''DLIWwx⊧S,7A45 Y\N?YK+ ](F\s_qPC+ 0gG/8)5\m Lϸ0~&RhPOKSEWSTEOP"NPIHSŬTCEVҔ#ƊD+LENNUyTOD HMOOZPHC4MBBSfEUQIASOM DOC))ߒARAP0FDpI( :STIDERC]ECNEIR6ԼP8H-sSYB`8>(8(ar6Gy?z#J/C<:!#E= 0b*~ƪH!'ITALUCLACP F  P-TXET GNOL DEE pTON OD W(8GASSEM EROCTRA *H@X2'{XBZ$pm]`$b\Ȑ8`҄R^(F&dG^`(h'D' R^C<d фHJ ! @252|@9 *rȄDD&D#-)="(+&? .=*d|_<Z|AEx?%>_}^O< WC ^<(Dfw ?Z|t?I|~(  r iXA GwSr7~2FAS# r"?<3SG AWI6Ï g 8g./ '# $OB$? 6$"33D?@Ulf4 w?xfVrRA1E4$#G0 #~(#w?'R Z YO(cS M/)M.'()E?r/AAt\95?0[ ,<:t64<0Ȯ<*( $"Ȼz$SFpt"-c\"[[ [X]_g(>%V:::g88::1:t>La? 'xe&Z$|30, lȪh P37X#J2"\ZS 7CH+msN8 3z3_  z /F0z<>@BD`LNP?sA @;^=}|T?GXC  ;/#' ?O8/ @;^w/N? AC> c=}? 8 ;=8qv?ACC; =?OA<;{=~?ar9'AC`IHAiZ2<^'⶯ȍ8A`yGA7B:"PO S2Gg9 (dG b  "U |CbN mB(it6ȴ>kDx~ZjfJk tX 7: i C` B 5Єh@g$#JH`| dL<"! z  @' иH 9Bmx`ΗЊ|aNOL'[ Uj kr:{),JE0}2-dI' P$"j?a"@7?p6 z(lkURUDF /).1DFmrSxB g~pN@кZD+xE"$z$CX:ag=J Sp CSB(ficI+9Cgǽ0^P ?hg `7Z"` k$4 Z;>`PJ+Y:Fj($\AS$g-vH^`R\DQB|ft) * z*f kJ Gɯ q  :3GpsNz? Sf[@$\ z$I'rʞ6(H@ࠐ@zX7}݀'MO z< <) Q"g@S}W I|ЉA"jȁ=e p FQC$P')] R1AFNoag)e_:x,q zv@*pSB" kBǮ 2<|r<47 H' A Ԩ yj k,>CBIH d I'fpL"L'IErf'_$ :842rpZK %4E C .H_ 6擥@ 4`ݡCG `Q 0+@;LDv MzGS jJ>BgV JkjJ8JBpCy8(`8*F*@:k0YvLt8Q)N*kU CJ,"` ĝ@58F)F5,D؆KDDj8(xASnI/{rfLGYI,f(@pyqEJxC0f'u|?YgA06P mN |=7HMA~ݿ9?} Pr Ur@e`uNNMnvrg<_rߊ!_< _<62/>/?3 v_2/Vbmضy>@n$7RPs2'8r>L(Iy~)r^<?|('CA~b/  >X)2b/w u*<wx 4r SҎozŬ${b rER LB<"`w.d1a_1| /T~F^+qŏQPa4#|ČLp:tMA&` ;fc yzECjBRB 2BDzj@Az*E:<Ȣxxg׽qnA4?7/AS z9# ZpFQ<5|5+5&r55W<5Ar@TH\5.E\?ɻ<>  JI]e_"e0e:/OSl^sC:NDwYЋd}- CoS_O-:I>x}A@|Ju@ED@C0g &<  :a? " X88 @0 6F <> 4T LaF2baHZaJIH:Q6BIAH@20#zMK4@IEKC2aTܬ5PPLdHD@A@P<d84@A0P,d($@A P-0 `( Q@k%6?,^G:)uNO@#G>Y="1y" nG/  F,tT t c056?!_?&GQrBom*m 3nLJfESDRR0 N0DJ0 F0B0т>0hA:0 620 .0 hA*0 &0Z"0-05050r5x<䭞05 366nC OkB_<6 uv>62I70n4P(/y =in!n2NnR<CHB=J4c.4DoD:.:hA8>&ƒ nCd1<4C642RnZ@= @vL{8 fz@ ?Йp >=.^<@?y$}# f'q &@NBqPn(|=S= fcS ŮiGr|-'YO# yy9 j],jAhЖo}0&$" <.8GrC%ˏO)-E'1.*cy3Ǣ90b+~3p<\@.  p6\@. _~>BO]b_<6LH+;A fʿ  [x"+`g\!2oy @yx | N-`F.--|5-L- --!w-#LLRy`H$gI 9D H8q6)4r٥> : W6 )2hNR<؅qMa2p49ځq!9l7'g=j=cc7{x@A,HHOE2|H0oPa]hI$7 BW ~<hZxhrDhh, J hh hhMhCCL&JDHbFBDAB@h15+55$tx@,A.rN12B=2@Bu14}oAnC2B~ @"bH$50Z yt90ttm>ytH$:Iy$GKc C|, /= XrE].o9 aδt#t3 [U@3K"xtG|G`<:\8.6420.r,*\(.&$" r rQ;J^b,D&9|5;b $a(/aEa(^'E' %{ӗ@Z%4AA@20<>L%EC:I? Q=]y C1CCdVVAÞ71<0O90 C\<h,p;y,O7#-;f@ ax#Q+2C jA00| ~gep+0,= oA @Bp`GF >BQ ċw~lʐ!TP| !!rF'夔!8'44a2oex3@H@3 ?ACEGjI;KMNPFRSUKWXZ\]_` bxcd8fghjXklmrGnoq r sttuv~wFxyygz {{1||2}} ~k~~ KK ~k~ ~}2}|1|{ {gzyyFx~wvutt s rqonmlXkjhg8fdxc b`_]\ZXKWUSFRPNM;KjIGECA? ><:8642/-+)'l%G# !l9a ' w; ž,tx?t t!<j  ?U"' t92 t%$ FX# /`"%$\FOCF' ? (l 2.HALS['xeg;  c)$ ͹3U |J;) (C$gKALPr g td@F@EyrHg< L'OLCKW"KCG (+l=xF!oŷ,c`LCo@LYB;b4+T@RF;HI {%uQ[J L6CHBTJBRRugAD JTLYrD|+fs``A;DpM(rp~E Udm 4E@@X0)"Sa>8Í(6^7 f=p&&g(kA@A@VF ^R7LtC,L?> x} 1@'j$z$uNV@H lTƒ*lBAH*AB@BDu"'G*)@yJ)=%)o+(ED:BHAHԁ$ڂDrrI%ҨH,26(<:jihv,L>nIƠjEψCP ` mS`@mk 0n4S&aShG4a$a)kSLGi'XC;f1;TH+@#|+Uf\-AKB@Ap@@AA_@80z ARId-RH0LL\ɲUaޤȿ̜(vXZBZX rh! p P .D YBp!ZB T(h32wUN8C&yc uN潣a;)z)(``'f| RXFp='XQ`&~Q}a}TXE.EE^EvEGG CDEAΈW|-^0YDtڀ DC.RK#|jDhW@yL7mFp1>?rJ3zkT+m:`~m%xk ]A%աAEz({(I?,N$,$$VN!L `:*uZ),f˵~GV$6*%cEM|ڐ& <Ǟ#Z"Y;~ hUl8Œ(do$E ER*x416 hDÉR28A6xz(jl`F"<:%-X I3<2uNo_!g o3I5C~;sl47PQ#r10NBE%~8`af7QDF HHzx<B|;(Z  lW=P^gʮ(W@!LH<4792>6C9044{Lq kDJ`gfJgGS~L~GN"pm`ٌm `lR1h%?2kGR3BAnIL486Vd]Cdv,<=prcg~3 G 9JQJ_"x  "3:0 / ;0Q9<4l" E}ƙ |eg F|   h < h   $ o V8 | L` `4 t h |   X h7@ rLe DHlRxx@PCbr%H,o~qQ+###'M΂AH]]yVz Ekȉd| Aǹ8{(b' 0n-V-"kGU-lGRHmFAi|d@9 A`4/6>~gCF 0J46jjv lDOx4s?1b d1-,Np Z  ,y+yy,1>n2/a3M0x!41' ^52,6&#^6bE)b@2d-d}@b@'mFo a I Kb cMc"j{ _R,0}D`uaFrMq޻(^HLc~I(!G9&CE$G4l"{/ lSNy^ȇ7m?nC*a!b6AMl,HmiPgnl ()˲)5)/) )|)))))r )) ~BHB3D3AHzA3:HBBLzUY|ML@0CDrmG GRQN0Ɗhz,<~jBMA1@H?H<.EBzxvtrp:]lw'3 BB~@`M Gb* )WyBp0?ψi_)c;e.*Pca Fa9aҕ(adaTaja@+ր}E>}X Wt¹#3`0' 2A-'B%fA'GexX(s~lhff\v VLrN‰f̈0hM鰸:2 3B`SK3nAT4t@<2z J/lpd~ y֣`yXԌJ3#00x=#ptlʃZRA&P>qN@)3Df}~RȌ$n$!'noPB k"tO ` /^^H)A 3t #~] %l lȳ՚< CpAm`4V Q@l|9H.y؉ˀ0@HeW@1&3 ,a%%^Sg-xRJ~O` >`8蒃~?lQ@l GmGSG?>>.kSG/GGDَ_@@D54R+&clRQlH; @P0$LR?kS@OHGR>),0GI=/^9hD#cN9Gy S Q7NptPg`DJ)]^H34t@<2z J/lpd~ y֣`yXԌJ3#00x=#ptlʃZRA&P>qN@)3Df}~RȌ$n$!'noPB rQFc{ [A㫁` W}z_fD pNdTiF7a%\ ̨-"Tr#7= ?ruo *|@s <`,er@p<(1 ȉ~*sp`or@eǍHSڭ" ExW_xYȼi0eA_h#@Ib؈hHTR`P٠Љ <9ͥɉɅOہ/05 \u e#dY'n['vMC )@[cQ8x'(a* !qT] mFQ 5 ؠ BǸm ębCkQm'b&F'PJO[9go p *x<,h@k(֣⺯>‚A%:[aX@aq1|GSb>QT%&`påń,:T&օ*H,"AEquY*EBTSo< óP Gਡ򠀉^ ǫ%;WXa- 2 *] V&eG S3 V_-Qk*]rv2^v7 0*l+a~QX\`1X,la2xwU0WAPHJnW,0F#IX3:UٌDm'zVf%D#خl\# [ qP`BW(dq "SY0j"9hq X^~YbxL1iٰr2΀ a3a2fVA: \H[\X[ȃǠ<)9eP|i>OF"=p7/&X䌞W;eyy^C pdwt3M?Mwlr\U.ĿO.|ֲO"yF/@~|p* 6}^ g{S >d)`13-r `S)GSdT;OkNǐ 2A'H)hiVv-&B?w> C0um d\SKB:x9ExM^Vbir{|ʂY=,GMTziCֳxHGgHUJ$D8 ч]z@$a'Z@i K$@L R.lgSl@. _5|SZdFr՞\/Q 8 3x0Y[-QX@2tzC_e} @/ JxU҅'$8Q`ckAJI,>dh:2"U `4'ȥ~‚)">gZ_D]+I| .CCy,u2g0L"wSȳ2,gu0/L S"w,u2Og0L"wSȳ2,gu0oLS"w,u2g0L%"wS ȳ2,gu0L-S"w ,u2g0L5"wS ȳ w_Ý2,gu0LB)PxU8H kڞ~ W`h9VԵ۪;@J@ mVUf[M*5PUcwY7U-shojGUwǬ# I(\9\֎AJҪ!F^A iM0{@@Uk E:+Do*63d@* ?0000H00 0I,WDQZT~.2?br0ӄ]Rv,rp?1`pʅdZ\"p*hRP%UJ@(HyLdxSfQ#i/┸|mdV#-u5YE""1U 8V=%@RRNtcJ%NJpPw~B#ȉSzNvmib<{X*n~: f?/Q }ND}7Ԫ+ o ;A5cUScQl}`^)И~\l*Mݠ<(pM9Z絖R>\ۑlñbdIB5n$%aV-R=i(-M$"%D-.pN2ԃ A@WB o i'j_Z@~kk@[YZx"5ڜ/fsK {€   1 |o](UQm+;٣Y<lJƉ7B 8yCMݐ{SWݐȆA&@pCϘ8hQHekT6%Sp \fČ؃} Ϫixm3- I5WzB8=r l;hB?{|\@ t8B^%1a@ H`>tL8`ƖzDŽ4:րB_01̇- |0Cip 8儘\,` :&\! GZ ;088 J,ZgEA{sS3sS3g*EH8"J ZjNGIfxC AoMX|سL Υ 8wCwM 0n%!0HVEGws578vD | Kdy<< `JDx.td4:0hCU|B˘eBSix`Ƨ$b=V<}OiH>ڀ|#?'%݂J=Jh5?_. Z)Utx+\f8x+ %sZ9 B.Ef(40:0܀ cT2DZL p;HVG;hZ >h^f^N=F4SԮ<&[i;sՁTL9:*@=3 K2Z&ؘ窴 tUX+ `$Emx)u8)ӆ7i*yX&߻NN ϴՆd5BkX.: y +3kKǫ/)NW$ =g*3"ԁ3v^d^ yB:|vγ|x nhyqlpML )0aHJ ցx S $X7 X@7cMZhnqxHcDx  "Z+ UgU+ JrAU;+#YO4(T^i#զVP_? 0j-$@®rTxÚ6ȌpcLz*7!@ 2I 4?P}>@=*2x: !@``ANVkK0hF,Nz3( 8 Ȏ`:ÔfV1<T{ FxU( @HL1HDXcQ:ςÅCN';Ǚb:,ڟ=)!aE$H`e|> ѷ|,=L&d0rcpKY'8t=>fq8 ҡ`NPNDlÐEڈd>TO,8F<9 \%Cjm΃pВu ,(ԁg%D2XI;xo5R+<̤l/Kv iH=0P:2DAPy=10!X,rJ,W,Vl $D@^|V~`xW#E@mJB9j@/$B,"b2!g2zan4oJ0`vl 4Q3+6L%G2HF\<;tT8szD%R-8yᇒKCy-8p& tr2 #i5RF mTFlO!\(8DBkF%@@0<+zDjhgvFnR>#vS'FU;" r_.67:@![ (p{,T ҕ! !_hčq NYեήi`FD^tbCx* ` ՐKnh(UʥT!*RϡxpWqF2LpV;N~CgQ@c+5h_2&:$<M?EQ=(6Р  Ao5w Ott@H? !#@" ZR@Hz( _!_|"$'xx/~ DE"ӃEƤAyJV"!(DbiN0 H NDȢ}!!HrP_hRQZ(z 0Tplf4s HO98@܌C|\جh0؉`:# SX|GX(@-"R)a If? %p 'J@!5F=>Z@Q*(hFr#f^PanT2-ctėIg x0 5ǚuKpƙ ¬P,y~R Hqب8E& ͖7 !sR[$ir"~ e 4בBr8p!`4 J#".5\zx0 (.;c` bŁ "ka (πWP[(* 4H Naƅ2`x:k+cGH%3g7B$\K>?5ug%ϙJo5 *;V>Sxؐhr^$G9p0@$$ H 'K4_HH`~eb()T7\F6y\&LN$`Yp3"9'F,!5 4N *`JZȘPU*DD=T #2;؁@11@3 f$X&q 2s+sruBxʅJB0Y<5$i"+jSl32^ET͝eíTTͽCTTݺTTl }j@@LԿB~SO8зߔB.S9зB~SS ~MSjryolWѶH+[$- Ʌ}dBe_YoC+ZoG+oK+ڕȼ#>.-'`l'lo-l'o-'lo>)q4Nч):< hK9-$SNSS NY+BNA+~[>l_XdB_E!lWѶH+[$-Q]C+Zw E$ܰM\ByO?Ze*jOUnrzh[@vΫkr~PP1^B]F@bjBWhF \Ȑ5x>"xFDf`@F``mS>@ط0;M<Ŀ+WGG'gGˇ'Gǐgd\ٴOL浦mxC-7E%neT:e?İԒ(l؃|׼bl0x8t8p0l hd\[WXSOKF@B>9O'f؃J,y?N|/|J>oD/@<8 o4/ 0 , ( o$/ wgoW/G \|/. b\]ޙ^_-Q}?[͂Iσ]ESgEbqdI2r$sxss,\4L^ֱn^.xV.x18~9<9}?:A:{ N;;<a2}x=>6;'w@N|,տDdM-61{) %Ņ_rXɿ|^IrH_حJ''+ ;']aY1 =G>˿b e#a@a.$ȿbe#_Bſ[<*uFYb/f"pQRU(_ֆ<%#q J:rhץ 8ZC&ka ӫ=-ڣ\^AaIUDO1Ɉع2/]SJa(E62g򋉂3K>'BT}J^؜\PӁV}j XB>JUWj+v;n}잰N YX`/ۻa4=zLb/.PRB?~߭!wo?OYۆЌ&u4F,.O- @}IeFp)C>J(3_C8j^$ٻЅn'S7% +z zBr3y\$n#yFYR^.~!Is^TRZ N28VF֧)SO%R¿m2 L$~B&2 yL~Ɵ&21 TYb~"&Q 9La~ [Ÿ&0 L`~*0I@?!J{!:MX !D2J}3 pNP+q̠, 0Kzd ^evw2bC2&8f$WnY|z^& E /plBݜ%>;Tyq)AYHNue l# PQ ܧZ:P:rA'/JLkR(P ʓJ@Lv԰f˦XLڏ /P KdEad$$sYyÙ I\Y6AQ#Ff#.a({!h,}B AC_9z$NC;2PW IOWI B_,$ l#A=B yx ;2uA$N+x?`?]XԤ 0i2j IR0j!ETJm#3R+ Wl/W?_A\uWIW+m` J$7f~EKF3 O"($ɼy^6Ao_P2'ѿ_P..@D~j[ a//OU&&g66 {ÿ4ko9Go%:"@mqQ[H 6jkm4ˬw$ }5 w-0GרE,y7[r!_}BUB$H?\wX'x .TOoX& 涫 xH?`? C!g6?d$O+ S~@ wTj:~6PD7`mE~@yч0t p5d;HIIBDYkIC7'5-} L p!<$B0q́Wx{0#o,vhQQюtkBd6F#H'sNu|c.u ֭ "^a,Sh]jE"Np; @?gG`PA\X) ҡ .T4=LU]PbaU. $U0SNƅ0!|L+` ,&r)0 OC`܍*H`~)ʂB 6h{zAZ ( Ж!]83@. ǀ$H@;G 0@H(LڀѠD9Hߛ%t9(IgtcNR$Bq`1a6 @9`fvf:bd$N@QGSB`?Ph. YA00[!nZ Ҝ$ 9PeC,1$@/ {T p+ #3LZd12 )"#€X @8 B>!l!P,!;m%CM(dn w0\ ŽzD1%/ 6@CL2#` 7GZ8Z g( 5_'(0$(1?  3XwC0 Q3·K9$bHw$FBDXa )qH]rޫsbD@ SD|-pFH]* ?}:;h2F 3$Fc  ձ/2=BcQ怓^U%dFUX'`sBa*U W?5>[9jsz;)@]˔ > .;ӌ)~th8'ӷC9^h:pӠ (X#\eȹ8_ 0L,Iy%BRDRP$"a} &N_%~/EQ#VI BK $x,y όBXG))HLg|N`| LfL߂Yш?|D8+I?<9OpHRy"G!v@I8jtX`ݍ@rcH%/o%vRLzv*IXۓ3]K %?9J1 99D!:F|G(Y\2p2@(2@x8A ɈI]2   @+1aJxōax1J3a` !H@Q] $j@!pO@pB/Mp]MO hf@!NŁ}hS@.YPLt4@_hP%%#!ހ@@@E@~w@p@jd@^@Y #0op5 ,| `H8<fgl3`0>qh88hL('wFtP/"  X ` @8WHoİ7 -;@`774P!.@+)&$"0 ?`F{F\^($: tlNj: jH(ߋ0@ ۦ`: 17X0  8`  h (q $>f 9#H sxb-\*(`& #!@p`0Q%?ypOcZVHSW-I`P 5/_( ȁU=)@l@qhx%G;LT`.O @A\ ߝ.V؄ KXjg30s |HUKϭA='9nᱎ=` CZph96' vs/(N9 'x]w6Al:p ďމ1‹p126x;h PȊ qfy;2p p-itA B/2ȭ,K0\(/t6>ͨzcU<2zcCI@i@L7vXLw! 4G| |Sl2 )VjP߻'×8H/d_3v2z |G[&(b7A փ_ Wp* ,+`kR|05 |+=@J¹] W0\+G.G' ߮ XrYi.fTľAAݶgP@N3ܸ: P`&'3:}ր^_qqG /탶8H_g= 609L `6 A63ksGxڍ hEt3F4:-юtiMsݠF:5ѩMjUtF5:mюtk]t l \ #D_}U9mæifeC'a\¨XhTB)PLk*oLx]pU e m u } } = - ȟ^z1iLތ}XףU,]z1Qlތ}Rg;F:7ѹnutFRG.`}U rD|>`>>a8fpEwma,Aܶ "j^fEp0_1DŽ>wka66^$3epv6 `SK6:07\,v"YAIDYdc ׂk %EG*yzў@U1q N0'#.2`D]؎DŽ #yAi1yl+ 68yS)LCI Ñ|#I׼MaN7j؈ha@e7^tiɩ>@tXX'.6e9I 6m9,`z## @0d LNmn..m} ,#  @ ]%.et7;hZdRo70Qw70Vߒ~?#1?-A~RT/~~)`~?#pH~~)+IHwпwo'+7^|'&Bwe/d8;wu/ ;NߤAJPw?ҿX#ߖ@O#~0 +$ߕ?7P ɇߐ/7 | 7(| o~~' |Ho wE~~E"a/~X#AoP&~BA3W侰N7e|#uJRgvX N8;OL>@ u/A|~E!"{2IA ̰ Ic6ь|_J0w1t$-|ww$`N?~w1 3 FNcb7?.?PI"w?.O(ww2"%'N.~F~)߬€F~gߍB~~;X E708oAV`~oX;haQ?/w~7qx;B+ A_ CBa~;('P?w; (;fH~wgL$&DŽ2Ze@.$~//>?-PXz] .H̓E>m{ : ސ#IGo`R.~~?)߯"/~?)H;#.oX; ߤEo G08NG~;JA F~w7;A!>Cuo~@!?7;XoƔ? ?P+?`o 'V@/ '~R~)T/>??;HP? '|? w8;)ჿ?  ~G'wpwrg `]?+]w2|qp<w ? 7|@ $Օ /~T!$~H|w ~Z@h;?+ ȉ`?' L~?-A~!~Z3ރf+ >Z]-|~B# Ơ>?~ ( (~D'_"{Rwp%]^"*7P'!(; +Pw;8 og_ ߕ@D/~?%aˁJ~_%{8_Ie|o$ǫw0w;;(0_~N`o+?e Jw& ;+z8; |.>J"')Ƀ#Puc~<}` $:cރ=t2u4;?|? ;l:=VrTAa`_o`~Awȍ_+? @ t>Aȏ՜$!lTHet/7~?/0"pp?<8OP~&@~þu#lu?M qwy@U?ilf tY+I`@$@A"@M oG^_!@xpmcca_iMy@ޭ< p#( +!R`8` eu_05#9 t18h _tD_`}@yAyc?A<|wANc.`x_Ļbb]_A}A2}ލ{4 6g('x['p_ nʿ\v x7}BuYN[@3'%vۈ/_y`#œ磂jIVF4_w]̋[ uŽ;M7$30`ם`@8x;XzZ-5Ӈ06b|\91#\=X{Rw`n܉;'g$@YY t{`@5KTƳѮ~5`{Mp/@Ͼan^>5a]8p3`^ :AǀQp:l&8x.3G\0$=#xa|^/<9$MnyFz` kg6>wǬ0 {fƛ?l'/@ &;A^\"P@.;Yl0; <qX.\HO쾝~3hcWc۠Kzb 74N l0`wszEmNbh'P{`'oM|v'_L9%6t08pH: _a-bc݃IQN0o,@}דΏ}H? Ů0av Z[v }Ap` (j8z?@*`_n2 aԀƘ" "a i䀃q. F@_׈*J<8|{eţd|޿\ PYG6 61D[ޜdae|ZK/aY-vDy#$B1@'-(~ `{ 8>~==~[{z]<w|t̓5M&8l_IML ƆJ P,^@8}>fsąw`β񪥲W2XfmGxT8㓜  w @46r?nܸc<\ru`50v9p0c1ȇBcxol־\YF\x^& !xϧcCA*$OwM<6KնC+R r~PeŃ)l&CM}bZ*Axw5k,X`:k F_.~&@܂!ND,>^TqC%M@ nCȽ}\Xu9vYy# }V X( Ү$J}^|xPqEuZ5Le(y9C apZ]&P(yQnϬ o༞siv u~ m=^eN x)0puI8~.c@N \"B:tQA:B2@q孋2!=l͐Cl0#Z|?Xohh}s{J*|E{?Ē/o?P=>#.}MC>ׄexyYSFTAǵnn6!+#c%'$aD~' Á)LN>I L, ɪ|G'F'>#,$s 76^}fM-Mun=,-5e%V %lȃ] .ld@WGG/O6//ߟ=0^+saj2\.Zuǝͽ]սU}-ͅE>~e~NΖg//OϟxwC d8n/x K ;AfΩYMAmYѸxO'$+uaÝӣ51`X(xJ1)|N0A9.1. .FF>*^RZFZ&F2^ƒ'7_{ÿOxgBZx^1GY/a9t5OR@vWY9 E&|jbNwo#C*R3ʮϙC*w Zn^VbZ:.^*.::OXI&(LNh $*3D?qT2ԓ4657Y|b|vĈ|π{1h P'!ZN0^)l3n9l%}-v ۻ+K²RRJϓq=/ 4>쾜Fgcq<.('%c%d#Qq1QѲRR2ғSRrSuU6UUWe.>OG 8YÄe&f|Gv68bHXh H)*iJ**J *)Jj}72i؂DHl<<#!(J R6| 'M [= &R ~' "AQ6'M&mw?Xr1)o>5x~*u9}_ ?;G7|"AL[<7"lI$?@DF#,Qd#$$$#  gWXM,-=k7C>LL&`laV#X̒,2g=Z4En ȶːqprps1R1 9|7Z= yUVw*~Q?8 &%'xv7I؎{ؚ# !rp NʳAw&dAR 4B尿u_UCTNO}rt9 BԀ>qb9[rnQF7zm/<ȅ \Y-],CІKJs̗2= 4Ru,aLJSI7a/HFYQB|3̙A`̉X:A$rFCɆ@D~Ca1 ؿRP0N<xS8O| t7!s;՘#YvL}wGyk1ez8:%Yg4ĿkDTl̔-IkPBeZ""'U5J߇RpK$uYLOa'v55A y:AjsV'x8/8*%xpE0j :2,|2mTFyG̭JuI?|K僎7`{a{zXCgo/My|dYD![riEsk>x54 `\q@["HjW 8Q+A Vep 0-7}yC+68 śc@bB='~|g269F$7D  ԹvO@y<#9-7E!6 #/Ѯғ*c4>j53\aB_= Z g'L=A"t6pd SA u@6&XA$Po`wYGٿ(Ao؟Ppx7=> ۏ|qyp@ uĄ[ ׃(q]~3 9tBx,0-ㄘ``0/onWGV׷WPGx1cv$d.|>62 2AUNp; xBAQA%ć`׽f3=KI?݈}{`>>woX~pOg(+.Aghq<xǓ#2`_xڹu= zp 7~ ` a ` |`g }a3 >p|_ / b5xm_P&j]On.}=F^k= g CK鈣}2<+ '[Dp#4  ,o}*e~cpF/%`}R5/̋O̐7߾|<*g =&xgbo]_pHxj@ :`!A@ҿ䃑'@@_+~hjz\{b(J r/*KTOrZn#/Zp=O ^8?P@tA9ǐ҉T, ZGqpDō f`ҝT(;/e*kY>G0;:L=@&Paq;wx~C T~7ߠx988iȅ 20SoP- .c~_`qO_|=n?Y%RmV1lt&*՝S,%bRAAULre+Nuȕ"맺)"FbҾ^pTfNk' 算 2԰@# ŅD!?eZ6\\]V7zՕ~ANE2Q0SgZY*ON(TilN(H^y%.3es" +  C2@YuHC2u?@ɦFSRgKc\5\D:$701$-ՕMdL5|d}t< \\0h!@}(Tbi,, LG)r@'^srV1u9ӫFZ‚OXXT~_# !!}ªD'I982N`tEvz7T]ew~S_|S2d/Ǧ!ƺȺxfdbp>p4\|HE d(g5nn ]} \;-zJ:(YI ظzQ>$w|L<|44l\tD%%dm,%ne|Οw+~q ?" aZАEa E7v&BQ$Ey2=dLQu%)uuUaE Q}I m}55<9OE! B1HdD 1#c,&7Ё {.V nv[2ibfgcgXegGcKkC3Csc/Kcc{OwO#7+nv2o~ _\'00hh{>~DFWXW8٘|y ,7k60kinpl;.ū {ه7`?߸8g;ې?K0a#^ b,؎u  `. ?` gL" p:9h XBа6! "X*y!|p\ FD(H[GNWl8G[mn6G-fnۛQVuwu85xvw973;}Ly

.{8[>0W0x$X @z}b8}y9s8 ` ȿ=o:G<:?p},pV iN%OUUȂNg vOޜ4{2\XvaqfCbVKGxmxFxla!x:;@ L>98@L[@4=l"m8 ;P_pg{t^<82yOSїѹ'O&>m]ʠx֔1a]l_ &0ouK\zch x^Ȣ**Zr` uь7wzlȘqicO^0c^(Bx>n?h.0}*ymܗZȅUo rN_D@EAltP0/ `d}|Ne"&V#TrBa_!>JVb$ )35759756#\(ugs @pS( B-qV,5Q[^8TNDف;QKE5?qIgDQNiWkkrsp_Xp+Dаz#"AX$Js;;-:<{a(5./+ ks\TVT])cwyO2 h#uvx oJqwr,k06D,Z@\jg<*agNMJQhiSh@PX,ݘsef  t(Δ?/_}0^g~D2(Cf0 禿>CF*, ѭǿ-g;]whXXhȴO8A EH )#3t478yyy9;ytD(ZHbh^Xrb^hXZPTBJJF6"g,+nO6lEV6mmSŮ l1p.M ty!Vܽz۞<{?|;}>"}సBg`妣c$cDc姂|ĽЧK|mtSl8p_Og=6 p9~9iaAl86:DnZ*N&&lR 6g<9˜i5c1*] H@N%@dCdC@AB|=`6M׏ݎ#;x#9xzݾ$GO0v48x[vf6/HX,!B >Ix[ w} |<ϧ>{‚M| H| ´X!0@P$_=<`Ws[?1zB r>|xZ*QNhFLFw@G߮ VA`svC?so77vL>L|&b v`.!.+$?8 / #ΓHXݧ4 _[&1(/' sj>5 *(|Ɖtpqz> kՕY,̱  Nî!?kA ;pxtt?zKJ}yx| pLe=B^ܿ&~Lf@@KAXa7i oFXL <J l84e ?2& @8 As#@?]"|B|!  ` nн}|y?^*x3ʂ1o f/у@o׼'{.=xķ1OL=? (8k!xN (u YpHz뭥`y#'aP pcngMgޖM8@SѳsE#$#~^n. +; K?]l{|y yRy |T`@ `.Nq4Q%UXhuRo;s@9^:),餸(䌹<$H(ǣ{OlKܸ5Zu}⏻ DXo 0F<ofVpR| 8 y LWt2׽k7]i  0+86si@tY#%F㥂!!_][;zwtֶuW8y>a"2#:7LELJMQOIHPQR>3QF|}xjlyzaWYz6Fx;N볯vJ Ȥ^=7{[wG(cZ$t[w>%?\~º)2.00I ̇TA˥#~;J<^xzjZJB&vl+~I*Yy9)< 4r&ufEU@Q?RJ]ui 58408 rISE(:!2-A:1`I^^`aOZBN0{Ͳpձv‘S o\v @8DAPԉ%%?`}<|i.opxwcV#x?]]??|? @᠇t,Ŀ{ǀ߯{a0W $`X{AG&\i8+g/WL`!1^6d+=8=v{;241uw3t~$LoXP; 8"@^c7KM˅‎F`bpAÀ~}tt4.>6FN<@a@ D$PIl7= -s7Ӂل MViGsĂ8 R((]bt~<2Ey-v[8e Lnkjğ {Z}xn  **!:sHP+ k`a@A0oPN+Z˛\knM=0;>`}'$,(&* 4=wt,t*)ow5 H@$ðp} 8"PaaA sɶr'xm*{@/=_$Dy0 `$ g `@ 1 xHDDH $Oc=BCypc Y ZhJc! pv Ήϟxpʐo}`6 `VhQal̄zi˷w8incԛ"$Љx !"(P'~&'rO'^nqj䗣N`FFAClI2\=pa P02]+ok? d@ԔLO%um m_cq-_ *\rP>/}_HcB0y?EUwKN 61npl[ ) RקpA~7QI\\KSC,7#mP0[QK_{`'#q112h&c/u1h̰?o!^JP\dZj3ڂ(hGRhd@g[O7ɋKg )"4.59- SnN~ζ7wׯ80 aYyy `ؾev7&/埭΀(8*&>,'L^Ox0"L$THXhؠԬHψN5vuvdblr q'{  p-ũ'DL(Zp_24ܢi' F;A4{ID9j{^TG^Xhw y8LL(}bϗgifp"K _0Pr6{@E )-n-s nX8N/Аo:I`P?|*gw>#] 0& P{?0\CTJ. YCHS=DEدjbh@0> &o_ʟ1 z!+.'\9Lj>Pعѽ U/qmsnHN(1!DM1`K@|.#zm_LRRDEo )mq1 | ײ~2:2.b>ʠDȍ]O8 B}{=\  7vj6{C'4iLr43dU>lckjhhmsB# 67L '#"!" q2A+   g*u bS?g2<"%/*@\iҐlE"|%1*xKJ">QП Df@P(@kmYP~y`z "CsPSs~hh$J2 BX^oqIȮZΘ75"iVd@ ;eQ|B?"cT f@_RD s ZeW\*223@* LJKGʬ&s65TҪ| cS8s.Xj"&V-0VJe|?jn>)N8K4c% 'Tl"<ʀN@Ha/qfzs9) da~!?p?\ʭLnQ/hCY@_շqQto/>@?*( 429B{ۢ%Q%I&  X ͣTV !Ԡ/3W*p9MT )""I hC $ rp;) U4/7"| >[Fs=kٚEd9,34Lp\ĩBk>Ĩk{Я6 1|NzVT9 ơH-pr0.jGT!@:A#1,ikχ;Sri͉,%jcb7U1;|WDt6T`Xj Z?mIlϛ_Ӛy]\DFp'6΃'ćۡ/bȬf8>6SxZ/dN Ee^eFẂ!_қtoݟ1ޫ C1w3 |WMU0fR+g!)I??O8$ɏ #W#ܵ_IASݠr;z|&<?¯UlF1SISA>Q2!zW_KшA85$pa@iTL7aAy]^J\=q< r* eeJЏM*q+Qa'?i8/ZќAS]:P R4O*J,Ezh iģVA|E#ʇr5PX!EpŃ{pD'J:h438U ڕ$~%&_E4ļ5(i R?p?C"(w))P Uœ|"'U fزH漊D0N0aC;D ++0CRhTn!>V*pE P?aIG )W_@]4_˙U|}@!Z3 @BGXJ"逓BT ]|VҀ\џ1[sgR3!BO9\eO9|l, q?3C[3ϒϜ K{&g!UgwOl"NNV 1:95b9w@`X/V(EW>8^3m&`C 9>0߄fO )MH÷pFBnl@Og#e*Vt%V,: |!NJP 7e: יQW>}гO 70Ʉn* ԫ2$\ ٗ4%IGD<$ȼD|DE 0\{򐇞߉|DD bOk#Z"%\K 1O_>~a?WN.^.'=Jps0/>c_IhTCZ%_bX> #-'V ^o`6z*ڈ9`፜ 4bR~UD9"XSkrЧ_+{](q}OA62cxOadVNegA"vx/.b^͇YRQ/'#<*׷yn}i< !SA:?Пf"^M-79*r_S I{09CxYijU? >7@GM'YOOj/'Y+@!{@6V@.gϗ}PV|IqD^]LTE+'Ľ0#{=\sF g6;$ .M7ҤOtIw޼, s#}zN+P2%ѥjcF`gEs\ ~(J Z|Zޕk7g |H*EhdaFg8s2|N;@\H#hD)|*(~DOL_P>,sU\!_-_cUCWJ|RPP !OI ݠ_y8p"K%Xdȫ6b`E44/FWn`+x9@}R\|xQ |%Yo~+;ȏR7 =K'm#}̄-7?(߳Ol,VcvS\\G+|H:xm^QdtuIW/G]7G цe8&hp?` XC?_5tP>b3i3L@* 3UT/H n;.)ݸ(7&F?]lH :_xPպr'柑UZՕ@7ARpYP}ACċ pPtOlmVO/!xk! |$v߀輷DP|W$Ma*\O* ƴ@j0B/T`o|p՟1@>,w*DGϣ CWxOT* -Cj0;9tS\ ܰP_pU}D7$@_1 @`WtNL 9 FEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! IDg@ 8-Ɓ6 @"WG ?eT')E`:W?ރ1 TO" 5HZ޸FC 9ӿAʀkk`|yZz3N5eu*HaPIs k>0 ~aZh jdqx!SX9Olb0>x!q<q`F#/ġN .Ap49S3>/ytb5ܔED|8qމs~Vm)DOJ[W [$#zzp`6/i=$3IђySOYQ5^@`NGD 6;|a6L g٤=!W#9Z_e@m GT*W4Js^J8E ~X8趠b4qEPfZ"iM ׎R-R`ˀ &U>O/<}5VF),~q +(T`{@EpAāq.J^Kɮz@Y 6ɴ]@Gو3(nаVREZJ sI,( .W XBr/C?.sg=h:5^gP0${CkHu% ѡ\]@G9z`AXF֓PDd_73|~##pgm@n7t,+q/]C+QBaQC}NV:7Hמ([#0LҪa!&` Ǥ $eó"<r}k˹ؠ`#@x Wit׀ʈUC PmPg$^ 8N,h:U02 aT&??B@IH"@p* 5@ "@ ( }3T $^ PRPWp<,]DSH^no$9~P@S f*od%2n&@J~&K&Q eZ@X a\S3ԅ7 T|[1hK%Z j&b12gGF#{,k3 ^~3uP& { Jf P7/~XrhY`A;^l#JXnJ#F4Wj\W \;YM- y"DsMXó[2X8SCDHx8#go,|^4bɬ!GI ;xOG[㛴2y__^1RŃs> AR<& Q8 p,oú--"ENSNIL%]BQ:``& m2 vR$ g/Òb&6]OIb=5-T-F.ҍi_阴G dRQOLUir/N ?L(00x=%h,#,dtC<֓\y>)"yEO@ ih"Dgt 2clEuĀ'$jN#%׃X4%xOݻ膉&g0[G}Wx;ddʥe2+@Hz`8Ǚg|}2:aW.RS:-{FzaLҖ&=7U%_3H=0>A͜3lH pJFPq ?b a >4Y2,@G\Z8: 0#.1UW7OTgűc&0L) k_׀'8@lHFI@oOX֙AP#`?LPk6MaIt&*Fx5ïH|~Xʸ3:@8ϥzN#cW>z0d R>@(F8%p8)=5W2H@,l:\(i#{ڄ"4l "@i*' PKӈ5$*N7@thh ,hf#7\󖀍r&otb </3z 74-hA`ꩉ c/0 _Cl ̂w1HEP`Gx&h @9nV&>(Hg CC?tiEh S# 8%2QPoQؙ ,C>s,ט߲|~3UoN}(ZX.Hr" N|~ְ48r#p +~,"op(O3* V{r&bE{I u>`yGU[gEM[gNa`SѰụ݌QouI :+Ք`1XJ~p0o `|cW-C^Oށcb%a?hGB3!u >!\4F$'gs Z9D5" sўg7>R 8K=@Zí>be[$ Y-I3nLytx7{«5|F;^ʈ1X裂W`–%{.-twO *GBXIV ER_5ín:BObŀD.7h ? IT\yfweGx&@m!\v[em@!>P `Y nG;0@ÌNxu0 #PlQ z!8ހwzfV?hq #HBE]UZ0p8`z4`+o|/zS##@|!>WyÊ綷5 l@;4?  o~5t?E>~tA^<xִH+ @u@3@I.Q t+7?6H /ܥ%7>q&LK6lC5q8~+<# L=!XB|_N{r ݕנp@p3~{4~O@p$7Y.m]7`jѐk_ZG]P-;I-`weY#P:RU9֧~PCH`A4cҿ[10m"S:7^D|K ai;A|>&5FDN2Ġ?;zTF!ع7t>.10,HplV{3p5ƒXh3\&сA_ CJǰ<6=3\+{ **bhnxG+ŮlF#0 ?H7> =tG>8^~Cl+@ Vm o1aH |L'|44 cP!4(Xi/ƀ;_榴Gƃ`<OĠKc_ǐ[W x8L&A84|K'Ja|BӁ6``&s@,P8BXŔ` S؇O04G)3`pzhzg:NxSEo@ / J 3 eG4H*y-Vh?d2o.xP&DP_T"BQQ0C2Q1AlOU> (T)Cl G>x# QԿl>@5B (Rz L{ɉ#YO H>rd!\a ~/&XzcBX(J3Dk~'Z>:kwE2@ O(g=A'b  # ˀ,hXYg^,' 1{Ip|?vo}~T@"!?0;꜅c0xFy`V@1 kLJP?fdRXoX=_:N40)84=9J I0`H xg=@UE&`e/HW &-< @]E04ɰ3@4Ca!d R3(nQ?$p@N3lTA=*`f-2LGI\/ :fR@9EPFp4p GOg&ldžxKuwfl6hf9h3j F7ŃqX.&?{g~`U>; ̘jl~揶 0sd44gRg_ {30KU6kjg g.O%?];KA X@d5QWH| X]qagݠipT5( PsǨq%rjbYXu{  p 6/J@? 2$KPm ~9F@NaaVꇑ`l)0 Ur3ǚ c|!UUSzM>O*R5R=x wֲh: ,@1OUU.ϵA9\%p665pC5  'wN(E_wt$y~8)AoQ8 .wĞßEޥ3~.#*z(^x, PNZ %%d Z RVUR T5H`\g@ &U[ D>7nEzrp$jax״+h.pniyȆ*S 0(TGug_q =hS⚿:!d'#i1QnHOPn< B zĎ8M|ߛ_@Ja0vt)Ei.-:2uGng #W_ _c^? XeGLF3OU?M|HoKT0^ L%]T >PP~_@e;-"\>~_u)~<]4@" aZy )F  Wu*@* YgX\>-lr `hP:k x[!PF1`⶯?C uOI \T@O\QML0 7Pn!c 3`.*;]GHW%)@c]8@6F h{VQ<yհ2&`>>*=?)`'($z? [>(lX`^xuzʈ+`JK@prrԾzۍtd ϐxX0 Tx֞!0P?=G4bB 3;i\`8@+L A_@ ]9q-Q^E`bȼYhmuk5x g02B:ܽ 3+\"+ y[1O:;~h+Q~oo`12$<K}D;ZdiUf ~z-8m1g.ɐ0jr$z{B~>AYO`FPHx_޳3WEP~VB?!es@Dw?gsf7&0`-Gh4% S@n0I?0`@7 Y\~/>|x,;#8VGp@aVYŐcV^@$.o^#*0AK:d5`^lP`#8W TkB^A){7S-< 7 v-I}t!]#:Yt s#PBDP `aC!xR_=?X=j5%>Џs}q*?{T6tF@B`߀3 V)<l;O-Va5{`hs+-b&o9s $,7z|_ FL1oJB}|O~;Cki>k?n~ASO4דsL5Rm 0cZ#Z+\:@K h e&L(St}H`p2Lo?>|La3B?`s Yb `(x1{Oə$n (^cˍ>з@^$e=\x @Ϟ:p^򿂄Ѕu*,'!t )W)eHM=;`y?`P#DXf;3 ħ=sYp^ 9jLN3V-F\\ n#oPD =6+۽!`28u X q _.1E{gp1t86@ @@ ʀ|0(3:@xdpS >zPaLl='HƁHA)q΀{2!&`'[2cu-d>3H fcqc0;HY,#j<3 \8qY3}odI /&3C! ^ k 3)BPq,`>Q,¬CFZ<7_%#O`ВJ 3/& )ZBSiC>k/ "0{[`|`A_>5bHb8/.D:n@H „b@'.X~ipH|w_u="ދ/ j>mW/ضPc$pi"h$/8|KKc:Ö#[-~qVt7w,JHd[Or#h[x#UAj.Dؠ#C0`HN{ W{@SPd 2EŎr_Vp/,:^` jޘxxR%"кLCMa}iS<8`fFx#¬x|K.H?0Wr>d#]3A& &K`&K4W2]QR,/|>A"fT H;(7np` Ar}6@[kYF4` “#˶Pk 89 TA[i31|2Dp#=@t0JA,56Ɓ7zvS& `BMZeݺEhR> \^|{p;̗ jDPGgQ>^Sꀙ!{ @ <&@E(3`39fiDBrdk1d~pH M`^e]9'NYl ,pshMqE\ )Iբ$3^eA*&C`"HK0F0nՋLu2՜z`1ɬ# 鲋 Y͐ AN0)`&GA$`}`hvG4?zu0ıb(f쒠Ps0 F @)oC@6ZZ@/T9Ɵ`6Ͽ؈=8~`]~8Rǻ)C +`;`vyJ/F_Z:/&WW Y0#<\o[K?9z@%UM[~ї2^|`c)?X@r?^xw%H>N!S,6N:*F|`˿aF? h < xs#oYG>ͨrjzhgߠCF;WY#@@`_s:ʝe)txtx&&KQ`D(u0;'x,[Y.iѽ< frƋ)=|#^k`9U:1Q~ԛ- :Izx|+L& +|gj@ 0-HC28VAu-`}(?a]L& 1$ ܔ<{<HRpRyDDrӡE8Gd*+7Ȃ*'*vۋ 09hF7|U{`qWNj #~6@KE]W9l F##1'!8CF%:U Yu=|bs ҊG48翡IL__"*8xRӬ^#__MԶ BXu#Xq!j4@&0}ެ0 زU0pky`5` $=*㑡8.<ȎHʔ{1T은~Ս*ߡ r|]nc1ŸG`WQyߏkUx^UCG_<V :o&9_*h>(Fg~{d0~$e+r!pA( 5']Ӏ`32!{y%竬؁U)>8\H` djp3x HXAF6-Êx1F0#1#pT1E>wƐH pd9=h+eGhO󨯔uXP mQa4! }'9i`L\x&~T,MZȔO{0g@+YQ;3l7k$rRktܟo'"k/aHd({^$z~DiRZrWviFC P2T~Dd)EH%;^ @. 䢬<1$2qظ y*AR 9\ T:r;~FAJl^hCaTs7Āɋ@{$5PJ6ťm~F%xp9 Jf,z7޴32 GBe) #phNA~y!^T<`Q#."@0k* ݰ|DUU~k E@4#8WA|( C q g==ñ Y`G$o֐!To ៧2-"bx0$bM{R-BB bABnӀђҾT#Nvx%"3 @0jzF~Xz p3U"@ER`PjPGS#X(/,DEIG`pOh:JP3ip`^K20A,5 -FP"g=o怫$3E2`%P$:D,*F 6,z:Ne@R+#p]|Pb&P3 \?oI1YV؈`c%)4WUc\@/eN0g~p]!Ԥ) +N ,xxRP˦LLGP~銔3HegE/d"_Ȩ#ļ/e}0aKs b"#~0돪(Ash.3[;tB97 c*R`{' We$g<Wg^~wbݹXs4n|?4Sީ+:T;8=띀A5# ^lKee/L]V0/?[R3d?L&@};ϧ\Wˌ{5gL`>W{`\֍R&`dDhoR3T^)>B_QU-H?TW >5?M9i*TTև20Q h3fA^FW g+53Bb7DiU0"7641RLV dYoH@0h?dlw&oFw`pg"y#12v  mΛ*5Y(ݴn@~H@q{YUR֧vi/\~y+#a- !y']UR!NP\U*0U jfֲ"/=&?[f(D++ ?eI%,3JA-j % 1/2]g |Ŧs$Ul-9`s0)e~nAeÅgJ$p 4Tq@G*:R/Ox `i2gEΣ$3/0|_q}S #H ۄ'SYa0 #AHlC 0`LJ^ F&|R)ω5! .*@E2:q-Ā9 K#\+@zPO@37@Qy}/@@v> @A`$*HH@^`Hrj0a6sAR1HHPI2ezGv*m2~Jv[/'U@-sk (!HM*斝N|ViMʠrKP¯ڃ|deUhe"?+\|X wY# P{#;-p:';~@ ] i `.} C| q'G7Dq_d p/)B̳/3(nx8!,3h~8!RQBGƽq?6/9 i]^$),|bR vTD&@4N?_jg$ARon4Bz!ϻxH!R"K r.kΒ|YzA~ [Uk1&ճ4EH0bQ}ج=>?#8hqA\Õv:&c>8ܜ x.`KcGX^g`JqB Me`,9F?% 6IK+u?"ߖg@Ey鳤 G'?$չLw@ -}x0f.AZBs"#`G T|Й;mHrpDҨ#UzK@PzƏ>wn)ܑޜ'y6wAu BbZ09ޠ*bEg8HhR '}Ÿ\:)иα01R$g1Q~K:%?LtXɏc`0w~JplPdz>s2l2?&|:Hk9F7$Bף`4!7h3!LaU&?xD~~3,t"n~΃U ([.xܔ8yF>N~d?0>< +ϒcJ>G~H[ oi~p>| [ÅÄ-t,^7 PA@3>mX{i֨P>?98xev|XkdORP 24~ *ywq ':vS@bLg>H' ÓTt ن2 Fu0=?& xcq"QZe OwNN+ 0 J#A>J~T%V>!כԔ"BDm3(j>( ,W>I?\hu5J ~|>Ylovy:2t"Af""BPz ;,amH^RHG$H@| XOAE"V@@?3T]ʀx>uT ) 4TP$k55O*j2pFrG^dL~I< Dܐ{ @^"[l$S$  Nb44+@*Eol30#A繖@Z|_"hTs hK&l.K%C@L n^1IMԢ*.E ѕt;@.* pvgN@P 7n4]tnCSI>DCzg4`3^VKu$P)if НS`f1<2tZ,"RYe iB5 qtAyXҀ8H, 1 &,.@x*Q!e0(E`),yRh[*} ޺Z ?(PI`g2+2u G-|bÉpCa I$.EM9P6St uAr9I<_3( e(>4! ,Z p @H M3d[Hl񀫈&DB;1by|&Wy/ozFeF-t  ^N+!HAO/He0W{?^ wF~zZ$@m h9+/}=!8kY z{H.p?R($"Eo=ހM$/x{ɀj 0 HCp@LaP{z! 8i-S@hi?/HM(ܳHC2(/P{˅*^ux9Ba  " Jh4]+RQpT.*ho$KE{w2_`̷zg`wˀoxV`?^[?05P`~ =E8Uiv>e="Ua1<VOƼF`|ZZ@thA?>e}DfzW72dpr8]Asǯ- M=!mP^z;} =@_(Z`y_~!!p )$xp,)! N@=!YAl@@7XQQH4H 6P؋D rS Д_拜@&l^X4`?P)?s --zaM=4 8RNob=+3 X"Tнx o@=%Pm OŀϚt$,dZ$yS \m; c" ` FU c@/ Qx=xDt>PT  }^ x?=^<+yWt~,4 h*ėDxp4Fs9mKZZxA!xf+W{8l~<٥b! `~my =mSwT')HCmY=eSpχa!?!د_n9u{1fP!%*"ao(AD?zHpr?CPMf5A}eE zzoP"SMx+=Ct9k `8'NIPy@H!PO@J͙(KJa@2@Hz]Խ-lF8+=i:=Rc% G ΎG4#t A<0Ft:mz/(Tf ,d`|_]TW.gd~ ʈIBظ ʗzx>m0 P @g#} Xye}|=Yurk 3L@` u X1 SBɣ!d KTUK]} h`xခ@p8'1sB)d(`|5#i:TEbjs1Z=Ӹ$xkse9AB<.D7Ä;=AHL]\q3^ťu;lIU0|VxR? `(E !9P5>ki @,FJaj'cihzE̓_ YN*,8ܷ"^#;3Fn?D/h3W?XᏧrۀD ?,rUVUoD:z#s/G2#GG :L2 £ <!#"o@8N?1_yyJϊ=SPO ~:AÀ͡bj|j_L * 0A UCz:(@v<уn AA1g@(?ESK rZq ^ %M9'p,|dS_RχއƇ׆owo,14_{;??٤2O ?` xBu(>y WJ{Bxt O'3~?(AV>*>*A|pĿ26<cmx=o gxOCC@N8?0 W_~YXڿ| <'V`A{}rB#$Ϟ))MO p x#px|?3>x$ @qzY.l4! p4[p@_H g] +J<w=`OՀB4r?"7=&!$@^vœ#r:B0'N [ϽGBR KFL HL_N_eх,G##vyDoX XQCre?@g18 #`xptq;St6 0K*_f8|]r2^鎑.[>r|˼V@UW@_>?9??n(~ 2&+?鿔P>:r P)`U  0ZB;sA <(>)8.<-0ll=k>zy?p>d(G'AAEG<o@7ڟW'' 'x?np@_\G5h'x , ~w<3{め92}1 (  JDmZdKANW0^!/OP GxC:@a(4LT"N/t7_X/޸ۯh8#<~~Gjxsw|yg[=z!g>F6ոG6?oBN)[`@ Ox7wFG Doy.Ttg.7^'r,;FC+K:(V?pz#`݃tOHq?4D~#az@ }Ě`}7}8S>*t@|"] F W !\R:TI*`h Su#\k .D9fG0)5 LGV8vh.w0~$&Y`%;xz0迾<_!vd0LĂl , K+GFTܒ"A&8D0Aw@/@82 /h!7\<ȧ+G YCЃP\]zi:A I!2H(KĂt ,1!pT/ꐹx_Z:$gU>>?s@z{ hXx}%%@]3'R9 O?@aI=p̓PEtUK$+!d(7_D٭|SAQm4x=s@xnҵ)҅\%R tPYc}Avg~i>Ħ\W A _u;`),8Ooi(3u>0Gaߑ7,4,ItKs '49-#ICg`aX~h[w_-)򼳬 1  L0@6ygc[@z06Im3aʻⴋ*A++h:>oi|nv,&w)65hQ!a6[8 >ߒʟ*nߝ YCyw ,#7tya[o+3N 0ݛH3JK`0 c,PC{ 8K Y#V&$"?|>Y,e3 ɂІz1rS8=3YCFjZNKc@{fvx =8 gڀ`!X^0@( 0{+>X}Cw-%%Ԅ?2@;Y} 8G}lhoUldL ` рF08,C}@ ذxP@(  16:>(@ p@p`8L>AA9M|n8ˀl)N85¬D PC+KZ.)Pse€`29~e~p8{`a 0,>d=&rj> xm<0Iz! 1ֶ@m:>Eg^?|.P<+ޞλ@졯  T~8Tx0D`C(ivthN0] ~oסn;˙~D#;_0uyp~q3u~ưBl=BQHM\XI&kF҆D+,c>f$ ,Avt>%}]v IǟC5f,- JΪ<j7πOϯ0f^ @3,]+$҈  yx3o"}=y2`` @p3<7ptedV 4 O~8s" PŃ>Ǖ2=?=h CX*~QHA"BJC'9 P'EO>tsol(nr|~9p6M+sf| +yJPɟ@4'Eb4*^Y?'dPi7~  Ŵg f`'v*(1|`>Xq@3>>:>&TZl$aj%R큟oby?3Gx0j +> ,uZ.E `(F|A1x#D:7k׃v} Rf( +­ެ,B ېhI,UGcpNhБ"iQMPW,>j0"!7P$V_ UL0r>rk?s?Ơ?9G5w7fbˊ[@gSd` {0QMeq`` V*f3&xtE8G0 MY!LIMx`, $Hdٛ}"Y+p ɺN1q 54, 0M̀c<`a f1(O]x?#@YFLID_ _______ _ __________ _ ____________ ______ \_ ____ ___ _/ \_ ____ ___ ____/_ ._/ / /_\___\_/ _ _/_\ / \_/___ / |/ / _ / ____/ / _ / / / _/ _ /| /___/ // _/ _ /___/ // _/ _ /____ //:| |::/___/_____ //:::/___/_____ //:::/__iNCo| `---------/___/-----------/___/-----------' ONKEL VANJA THE INTRO BY NEXUS! FR >Ń>Ǖ2=?=h CX*~QHA"BJC'9 P'GHHc16~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHh (2oom40k.exepGIw @@@`@@z@;@)6@\@F?@|%HI6<< a.N<< a&Q ,xN.SF F faB|a /IC"QQXNu`z;)6\F?|zRFN1 IRFN,I$N8JBg SEkJ SBfSg>f dVf dFf d6GJf d&f d ~`,~f Q\~`p~`p~` p~`p~6f d f d"|;pX` f B`|;pf BSfF|:F>f d6Cf d$:{0P`"@ :{0X;pj gf FSfRF˻cĽf*JSEk%Sf`9Lo`z%(zT:q\L:A#*5NGJL6 ECA>:62.*%  A$wCy7J %&:258;>@BGKS9?~=J<987I10/Qzޞ8#ޘK[ BagK¿菌քԂ#.9CNYbksyc|{wsoic\UNG@93-(#,|L:p@|u< 2; #'+17=CIMQSTUTS RQO?@NMKJIGFDCB@><;:86420-*'#  TzL S|/x FP=ş3 k "%UZoK:n"=*;1  *42",!%),/03A==&08ʝ<83-& s6  %( )('&&%$"!  GLFT^#oMb,9!"+?"m?Efn:9r8DGQ8<=^#x 1ӧ8D#HӃ8H%PA1Ӏ@V?0=xc N4D1388@\%.'2 0ֹ3+C`./=4 ;U1-80A&$)42&@/ ?2N۽&//Q۷..$8 ,;`װ#4JR G1ϼ>2<P8<%[ >%E  q=)2P <<:^bUTLa81E >q6ިy )< c e<V24>'ހEA[>' CNn3:K?KE?z<|BGBضy#(<;;cGMG 4 s3=6Lx 17d1<(3%>7AAM|B! ІK9/'K(   t972&)VH<  E/bXE h qZm-E\0E*`\S30-S9,53c"b*6%@ d0l 7vЩ B y) O\Š<5 ȆڏQy>).Z(=EG Q|W̓*"`M*F16^M.Cgb M'i HMY]4zN&bxO`-:r pz\H ` F.)v2`    *    !D 5I*  T "   U= 6 -;:1Ffkza:/X"   " G R$"   4*/#!#.+"!   $ B T, <- 3!%&0A'  !9?4#<"6 $ W%!,<' ѡ $ϻĸٰ  $ 1!!D3CN<; r-aJF 8*DP /&-, A&+YC .N*-2G S=#"%ξ 'ľQ2X⡻ֽ#"* &T!*RF& 15O ?<>H$`J +$^@PKW+VNE<( @5N96Ke/R&Yվ)@8 ҵ ν( 3Ŀî>(^.OB*  (/3E2,O7@EDG@OS#!-Z;Sx&%(<'5"r!躬Ѵ!ˀĒ φ2?>RP;!$IDOR-A !P0 fG}:#^6G T#$$^ EE.pRGУ-ĩI4H J 1;:U5l=po!+:)P0<4O`@-9,=3CoS΀ /Ŭ*ˀ}('ze(;0_"3E( E1?l=q[f3%AKV.?4G'ҚĀ灺꧀/ }=Ut)Fua6'|,_2:6i?ĀԀ!' ؔ€B9s5x&g[ژ ܀/Dk@&s45|J:9w_c$V袀ـ-#9#'|~qyj),Zh9a pp. 3 HD%49(4R.Ik#)4H=3+d ѿγ߾ݕҨǾع>ڋH$2"=Rs5{ c$<&"[TJ-oWLا 4ֳLؿ$F""J -GAT`2ep03H0]E>>/D:Af=+!*U8M+ԡ݀ ҥ&cU:XW-!'E8:Y6^KY+GYLo$8DI'6.:$țπĀ#Ӛ mtAqGhg^qt 0[=*>b#[(O4:ئְ0 ]/>^=+eԽ/Y'P4I!#]O.%T$ I:E 8ƀ\諑 I-d,F5"<_?_^'~@^xxZ"g~ob &ޅ~1y97,ؤ\ _jT S dbzP""#$%&&')0*Mc.0C3V56H*:@3 \1>==2x[9876422110.IR*)'&P#!  CGZZ 9e.rp D-ABCDEFHIIKKMMMM#`PPyOMLKKJJHGGDCCB@?>=;:865420.+)(%$" D0< ʢG[Ps #&+-/57;>@CGJKPRTVZ]_acfgjknnprrtuvy;or1!p{gfaa][YUROIH/-)%" f@?+ CF $().25:=@CFJLNSVZ[_`cfiinoortuwxxyz{|| }{ywvjb`VTPLJDA>950,'$!¿"$'+/159<@EDGLMPQUWXZY]_^_fcfehihhijlgjjinghhfddc__[]XUSNNIDC@;84.+(" G\f %)-06:=CFHMQQWY]__cdhiiknnlsnqqntqnrnpnlkjifc_a[YRQJGC<91-+   &-071%FÆ E1 f 0 G_!t#: a/g &-I+\cxNeC I<; gj2T1T  Yz (nrS t8ѤP;P<gz  Eo$ Bg4b Q ((J$e@ 8 akor bGs 1Mǀ<>MhV v.H y' @?@&O   !  0Zt $}* D"+3 G`.nTi"B.Nms-p) A Xd,8bl[cd J 6) ,E0 XO L`3ntpj)E$+ b *U c*j' Og `rMl+NЅ!ъV #7 % ۖ NnF 7B=U+ !=o#cE O  *@K2C>#c?u ) pGaԛ/ ! 0 Jv xL(& *2s ,%/6   ss     -       (& (%   /  " 6  GbOY     '4" %&  " &  . %0B>3-&  -. 9( < .+2&, ,Q (I# O  6% $6) 4 +$6(H#(20,%!#3Gc"  !M7+ *0   ,  % $ 3E!%)$@ )&$ +V(94 ) A1 '9EO%1 7>+7&5 ?)#,*9873:  5 !1F0 + 0!#! # )   ST6!  Gd qaD > #@'*.O8 9  3A  *l9 ( 0;+%8%OTA-*5 % ^  8F ++ ; ;& J 2"+ 2' /H1A5 8 7  0/ (?@ 0$ T7ch35Q ; eM >#,*5%p!3'4P(w=n&t&EZy,Ge}9eC% }v[3M"  7!VlЀ13J"#;*.lD\>"RiIS .1ZsD' ]+C (6C s0`GG ,  Y3$8;7&-FFLg~T+? B@]<"5`%'2.HBiQ %<3D P?QA.(K&.0(πD# BFE [E ‐p ``+)p6zhbPfU81A'wAV c T"Gf'LB Litc29 @`!Fy[hX<   4qo 4G$:إ$844Ra4ȄKtT} fZ"D:a lf  ,Wk~pcL 낉3wA h  --6I:   !    %   Gg  - ( &9+&     .3٪D#; $+P <-2 q  ȕ&8: 6>:t .س+ #ҧ=4;+A-R< ̳% - M3#EA>0 &>Lì@@)|B  Ժ7v;l '  ͓7Fӕܑ *&O4$9c83()" G!i\@.)$B $N )( &Bd ܱF)AY1869&-6B# ( ᱱN O5JE -LLLLL3,C=~FP_о~__G#kehh_<G h 3 B  ~`<QX <.K.Mgp.<v$4>A;!5knuFTfoS$̶_palc-dnah*|͈ ~BY6gh<9wH;/ 3,w~ȳ@w7Y@KR 5 edamnwolp zN2) mo b (L{D%ortni\?(SS f/ zMa ̌_*70@t!_z&m/P[/a eN1K$ C $  !_C?*4|F%h",jp!H0B[BEi"(9G$lqoP! u@!9 @ȼ5@ôd: !?-qqC!&8kş@C}q!8/C8af Cw?CeZlӀ Lz!ex~t!Fp+@!T8?/yC~YK C?@:4?$#KU!#5C7Cte2F3qW!T+J XK!o*!tCy8 P9 uC"9~?)C0wC `2ʆC)'Y@ <R(C# hC(E,10 >Ꟈ24 ?0`G%mhx?>KCC!S? !1Be&ࡩ}: ~ȡJeNHz~y/ZA>.G! ^CσOAկ~ϿEG/!@Xv ~ ߀G@U@_xEųQC?TD 9pK!邇@p$I58=8p=|D6!8|oCLB?rχS+` !yQxv!=  8w/Co_Cx/]LJ<x!!%d?b_Gk!"OG&nۅ)W!2yVU?e[<|(? @5=6ǒ?x>]@UUc~ ~e(5Z}WP a ;U!1_aSP <0Ϊ Iq?otpO4"!WVP2!N)}ՓPTN:]*4P~Uu?8A]u 0x  !TU@8>!u`|  6p88!'F`8 Ud`BT>9`p WFu`c&R$@աP:_t$8%4"o=!0!! 7G'o$o!/ ??!̏յF/9;f~0<Vfxp-z!`v|& 2qC%#?c,4*!u9~Hު" yc>8q_ |?!3Ё ?!~@ ?7CX!/,y7>!Asq_~C~o<3=C@'r>^y3?‡>w!u#!?W'!~S@| !Wǧ`?f?3^!A")!'`2,!~$$C7 D~'!}!4!?!>G(p)+:!+!GЁ|R}!Cf!t)CGP!?.+7s!t! !/^c&O!~^@s!/^! !G!W4T!勂G`C!+!B\!? !/0BC"(!0?UPC >T?Es!UɩQ(ɾͼ-( !5|#?8#O!_<^(?ϔZ:!_=~{!/o#>} _էR`EwCԖ~ϘheQ}!3»@T!@!G)qL(S !\ta@ڟ!  !hU?T@BS=? @C?T-]!(pL;$_9[G ֟[C{VG) $CO[=C:P~[E$_ڧ!hڏCUN!#`KO ̩ r[ߢ)  !3hU0 .1AN-d@![-!:b[ [ߣef~"[!},[=z6~&[xf/Ѹ5:vc_9ԯд!}G*r&]V`!O=L@@)ϡ յR`C`0%P; hC~{x0`Ke@Hs|` '0֎む :u4!ߡ (OE20tTHZ/ @gC_ @4$XC*ThJ,pXV!?/D/-!s t!Cڧ/eӇCPl=m҇\O!*!5!5h} J7%!ha % R! aCoJJA*01!5P (!?@!BC( CUyj vPuЁHA߆~9!BzG+s_lF)eTt!KD! ׇ5)ߧTTUW!C ! @U]x!~S/*C#+WP+l~w@VCwb -}C/F?!wj*5!ЩT;A!C_?)j7!(!Abi !_`jªU!?3p89kʮ!8o8\WJc5?RR`!X >笁!|=\x=?! ! 8C!?OB!gA0!~򿇏i'(/⿏ C~ ~|![?/8HMTx!?h38`C'G,tߎi!O 8{!K' sb!_ *BCP`c!_=&?1W!i:Is!/*?< C!>RX!K"!>!Pr! pϽf!K;X//D?z||||||||[o[7[[[ /~[7W<94S_JCƯ?gK[W7)Z[ߓ][oB_~Pd@9[_k!4uH!P 0!|!t C=(5[ZT?!8Ǎ[E!~'[wtp/?[._[Tg>?\`HԵZ]_Y5ڏ;ͽG-uL-qQ6!8U_@`[L?z؄@x[ !3Xzw!}g`Oq5XxA`EMpU?]\@?e@Y0 [V= ޻q e[Z5y`|!kB߿(!꫿{u=WCC\!! ׋9}@ L)`A C)0OmtxC_9= C<#[=Un7V \C~qf J3 x " ! h[ՀE 0HξG.vB́(YEy {@4!F .~!K?}?$Z-b~+L~ [=hR\[w #偁9buPIqy/Z|_[Ǿǀ?0_@{_k~U?[w3> &>/[[?&[7W$O|[J[w-OO|[SV?U=Ge[?|[o_+U)G}?!gM[(K[PO}[(<>?[[@hj^^Cx@w(AS[w@xyQ[D}pt [)e[wC [k<,t!P[-x~t[BG/wY *k}[A0? F[ -?J A[?Z[  r[w[oI20}J[P?-n>%[w W@h[. e ^a[w y?X1֚GߴD8!(x? NXT_[@P b[`_Z[wP(8CL[[ ~[$HH[[U*@V[[ /V+[;-!o + Z@ *2!S@=U+,Z1Ɣ5Q[!+꣨oGr` <F[wX`kSQ[Md[7QfOɝ_%#/!G0xGl[ZoQzZ@9b$B4[N@xpaTAbw@p<,fZՀ|_VV[Ƿ 6[o}pǟ&CC6XgvxRyv&!q`qK*[, |2U[?pwZXG03YCP !/+,!/SAqN[C \[ 0 0B[-'@$[#~!f!?`C|6f0w!f>35_b3D!|!|+u!>,2! !<>!C̓!?7!*!# @`! пz!4_P4/! EЊ!G1yW = !W` !?PBC/B!&@!,?~E!?!P&1E#?`gf-!oq!?U @~+!S?q(WB!р8ǫ@/l^o+~(8)8!!!; C@t{!d!O!|LO !x!p+!+8?9Y~0{Ct}?9"_D?_9c/?C7_[9#F?@?!Z#o @pC_?!u?JSC9x:9/WC9/C̀?G2z: Cp%CD!C :Y=C "YCzz(8!? ! K~v!| ~H eP!ցAC'^!}- 9?!~?! J 30O+0eyCj3_!'>BL_.C/!@=ƒ?~ @Vŀǀ?p@U@_?Ӫm!iT9 K!Ȃ"$'!R "5l7[J,p WC?$XUCL'?t͌~_i+1t?!J0 m  ? 8(4G3{a/Cx _C%h@'FJ hpK!d k!"CK)W!"2L}NU~g?~5%xa ߜj(!1_ gCBCoyAbAh"!);V0 2!P!B_@Շ @/!g?(@F>? ~!8AoPv0h !UTU0`s !Dp88'!8 _UC>!@>C`p #bu`,sPտ !@~(_!G4|+`u8U߾!o9=!0! 7!/ ??!̏Nյ!o9;nJ1!~0<V!Pxp!`v|=O 2q! %#?C!S b_G!?9cb,3! yc>8hqKa|a\|`!Ё ?!@ c7C X!_ ,9y7>!!8sq_vC?N3C19r{>F!K#?‡?ȩ!6w !K7!Q?W!S@|!~W!)ǧ`!~!}1!"%G5}I}'LJO|PY|FO=M~0/Do3^ICL'(_$~CO1'O@G?*ܡG%/F?ŌMFK /B< GW_C DvOFOh+~!_O!/O8:!?8\%>| ^@z'1 c~|D/-jzğ_(/.ŀI-WpX/`y ğ!51 pBpG6~vy|Ii (pߊ0>?~a (Q{=Gb;230  (| 0 ?Fr_͍AQwrKh_?8rwa'_%_D%_'B%_>%_%_O%|/%[%>#[#-##|C#!##oq!C!%!-!o!|K<![!!"!o|<[!2yCe-G7PdyC-o|K=[!bo|=[!r{C-roooooooooooooooooooooooo|ȽC-ro{[>qG8%oz[>!|HC-|ȼC-2oy[>d 1ox![!>$!!!!|H!C-"!q##C#!n##|[#>-$n#`D%`'Z%`>%`%`O%|`%傻%%b%X%)%=#+#)C#~#<'?(!%''ƥ& 'O%!&%&6)U&"&>?|]&#>'%~Y@%~Q}"Oy&x% pm>?~JU,Ky|S"G9p$E%J q  c8bH / -A't?8'0tg': > ŸC*r'&=b05'?' 'a'ys6'@ ? | A'@@|@'>'0 'D=0OA0dC'*{L0' ''A@?P' x''>F'G9''pq9F'!ௐb' r}'9'%(?'%Dpd'8b$N  G]p<Oư'0 4 t'y< &:<'o)nmp`> ' 1A-?L pA2?16'` kip1nLG:|Op=x PE7FEn@'#``O'+@o'E' '&'?' !pj=\&'u 'x'Kz'db'('' ''-='%?&$ \&&&$-'G'~||w'"*>"kCf/i{4kzHCLqD,'c\_'WR/'R%>MHz_'p\'i&-C'>/'mfx'q4_/O\.'|Hk/>Rx''>HtA'?'!&<>x 'ނ8fgN' 7G;j '9!N5('#?''"Cq\'X'{0'('{''A|'!'<' '* W+'{'0/w b'U>'ɻ`> '`$ MqC40~p'GH 'Г$1CA<: <649209.*(9G=|&$9" 9#Pc!,Pvis$'WAB\<:j>"X 7!-GBūx?t /<߽G0 N3dc{ePk#0~ G:/V=sߝ!h7F +?>p_p'pp S,5 :BLD Fy@uNL<|i~̏ th _nJ>K-f@"!8BOCp@Pt@TH@0y CyC[J6ՁHMnIb9I304@И`2AF`<y^P3&x:NR`!#VAMfp0GEx`Cl׎B fZ(Sg\J=5-% =PC -PBdPA $P@89:;=?BEIMzMW\biov}",5?HQZcks{C5B %AD@Dû&v{skcZQHGAcR?5$"&:91Ɠc1{wsokcgc_1[WSOKcGC?1;73/*c'#1 c{qskqc[qSKqC;q3+q#q q7 'LЀ p@"$'*.26:?DINTZagnv} %1=IVcp} +:JYiy0ARdu#4FWiz}.p[WSOcKGC1?;73/c+'#1c 1b/b.b-b,b+b*b)b(~b'nb&^b%Nb$>b#.b"b!b ~^X> hqGB|{skbYPG=3) uhZL>/!wfVF5$ziWF4#0<<88440 ^b*Q~Fx@ 'H,($2! @@&DD<;;cw0Djhh,s J@ TSsYoHHeK ' Q@Q0/07P-R/_! 5/Ax ' X\TK~HA-BEn@=dDRX RCbiZ @X?BLP;ERCBB2D8ACSeDETBDl@DA8z+fCCBbAuNpGC!gl)-;Y;96@94@ɏ902Dd-rt!|=vym(,Hy$uQ47A/=?M.p5<@+0M q5}@40{GETCjA>L~\204Hm2 z- f+y">h,)  xy N)Hv S PB3&D 4@ 9e)((`(c(s$*q((1^(Fd(FkuF(#.?(qG(Bw((/~((!|~( GDI(#Flry 1CVk?b.msz"3EYm#Df4mt{$5H[p'Hk :nu|&8J^r +Lo@oGE(:L`u/PtFpv} *<Ocx3UxLqw~ ,>Qe{GE: 7Y}"Rqx .@Sh}:\(X1JaxŴxaJ1@+  uNLp$H- n eR$n Ё -. B*g-#;J3BA> む@HPJNj'5R~qZ)UV{hg0?BG}u8N: Dzv\O^"'+wpc\ }E:fAJAH5HffE[ |@gNpQ@ H:0`n! !Sg"\$i2/nc/ . |9"_s{ \|3` P@MoEGFmAƔAAJ?tx:yx2pgo`d J|?&g >v A guqȂ`7ָ't?}Ab?D. Ѻ$O@p7Pm 'fS$XjN9?|k\P. JJY?=(OH lM=H:H_'<0c@0BjP> JoJ@1+ B7<7~a޴`SQ NB`Bk\b'Jx! v4t`Bj J` h5OmHI)BЁUc ~\ rGJ9 $ |ݻ9yڹ:{׼@Ճ NҒbϨ6~XGKIד7ȂgŵRáA6ݽ1ۻ18DWpв0TKV-uUƥ8~m`۟WӞQϝOϜQӛVۚ`n !<˕\=Ӓk8ԐqN5ٍ&͌v ˋx%Ԋ4扙Mq*㇟[׆X݅g.U"a3݂c=ҁsU9ԀqaSE9.$  $.9ESaqԀ9Urҁ=c܂3a"U.g݅W׆[)GL>(pM4ӊ%wˋ v͌%ٍ4MpӐ8jӒ<[˕< m`ښVӛPϜNϝPӞVڟ`m}7ťTu,U몂KT񰐱/ϲpVD鷐7߹1ۻ0ܽ6㿒AQĴgƁ6ȡW}5ͨaБM ӂ@ջz9ظx8ۺ|=߅H Wj/Gb*Hi1Tw@ d-Qu= _ ' Gd+E [ m1{> !!"E#$GM\P$%H&''(D)**}+:,,-n.)//0X1223:445_677~8299:K;;<_=>>n?@@wA$BB{C%DDxE!FFpGHHaIJJLKKL1MMpNOOIPPQRRNSS~TUU?VVgWWXYY:ZZV[[n\\] ^^__%``-aa1bb1cc-dd%eeff ggglhhRii5jjkkkYll-mmmcnn,oooRppqoqq'rrr3sss5ttt,u}uuvgvvvGwwwxbxxx)yiyyy#z_zzz {A{w{{{|A|q||||$}M}v}}}} ~.~O~o~~~~~~,BWk}}kWB,~~~~~o~O~.~ ~}}}v}M}$}GNa|||q|A||{{w{A{ {zz_z#zyyjy)yxxbxxwwGwvvgvvu}u-utt5tss3srr'rqoqqpSpoo,oncnmm-mlYlkkkj5jiRihlhgg gffe%ed-dc1cb1ba-a`%`__^ ^]\n\[V[Z;ZYYXWgWV?VUU~TSNSRRQPIPOOpNM1MLKLKJJaIHHpGF!FxED%D{CB$BwA@@n?>>`=<;L;:939~877_654:4322X10/*/n.-,:,}+**D)(''H&%$$F#"!!> {1m [ E+dG ( _  >uR.ev22!C Tu 3T : ~lGOu} >V PARm?X#igA |bˎ/= | 8Fd <1x{p @mDy ysƑ?nk(Fw@*/*: s#G#0Om AB@B4҄5[J 2 0:~QONX<@`3<`&A*>GP_J"DCsI) RfH+3CP- \Lv|TH*G Ea*&-*C-( -&B-$t-"]DCHHƒgBJɆ68"`F*BaG^2p>P!:&Dr6A+H!҃DBCBDHCH-8-6P(<2<0'DZ11<`0:FA-?-B)\C<~Ck35D^5f 7''0af&Jh4 : xgP|;Jg`UfF 0rQsb5:Ѩ?QV|$#sW XJ`u񂢰]1;\FpUb |  g%zBN>?kNʌp3b4䳑J@LY(uw8~:1jX)'`Rf[QІ e E1̆hȀCn* !)AQj hTp H1жz'sb`r F{ w'`FO< P dTSk 4b"`$ <Wħ ӕT~0T۽T~1=TTOdTIKxH'WK'ZRAR"A4RBRFBXRERjE^|g8 0`s`C9c= m dG"Ħ2A8E8zpu82}!H? /`,N?4}58  X8RFtS @G?݀.@  @4 Gv@Kۉ lvhó",JEہ_0HP 4xZz6`(,4p!,]2d + [V Mrla>#0ը"mGՐВ9:c#2@gع«sCP=L.Pg `N?  6czs)3ݱiqS|y |2zQ+bڐo"g!WF'ij|;f Pw?(6|֎clB+Dž- WN-fR 2{H宩%ǯT? 7 !8<s(D>#J) aZx/cRG XVb B3R͡7_Ձ|=T<(L1^QȌ   v/f[9zrda.,MWq ,RY0  kDd'Yb_ҨQQnD @1P qRPApK='8s'NNQ/Rd "H"Ҁ ,۔qރBZ/JW, _ 0a+ I. [ Ĕb+["EC*#i'ϓ(@0TAÅX)~8}2?B["Wm>6i3A}uvKtc#hÃDkaՕ DMD eGSl_t>?O`Vȁ( w -0yU jtpPܺF6<"``^ƒ97Ors9'J@ +*+|倃Ex%ƈ(wǫ=%a*mx\#`hoښ"x7~n?D&и`!02oA 5:sc@+<MAܒ#>D"[/X(-JA9I u LÁUS :g1n/pXYƋ9e `Pp<OA|Ta|OЀe yy8%4>A>t_ $?%`A\ 5aJdi!瀹fڻv%,P$Zpg)<,]cglx2w@,"BD&q`hJ) C f?/x}zOѠ ]߄ DL𰰰9*y<1\/i"h@V Sk₣J-RRRRE!?A 2yAB Od.Ёx @B!_H; uB2>!D/rC@ +o _^\[ZYXWVeu? C/<`5t%, "jNT#g#.T<BQ:".0zAV/~=_ 3pt!T k:Ю #''.ܿD29ۓƜ7U86 85TH$ q!$:ƨqAJ.¯j~ P>J"! G F, % U oOIW(DX򘰑4t9 Ix`ht)w + 򃍂 .(΋9ҥ:@]ZFG8ҡ|9-`JJ`=A9;)eꩧ%LEUU%3Q1 W&Ax@`oFAPF X 2 |z ϢyC (0l@Q+5r= ԁJDftdsH` ``89e,Cn0Bt_h ({7erK#pȝ *o oHv+U̮@|>ɹs*A :_/]EjRu@7;{sҕ{W"ߖ$W]aރIo ttyeW6E_NemU.#x]]]` $ް/{ }\+`OGp]!v`X`_XWS]]}v;{n 7!/WB^Uݼ>:cnwtEgC@!/ے.:Լ ZTZ.+_%]W'8H@Á/+_w%]W'8@W/.z+ u, 啐r[Ȁ@o7ϙ?L+o ('+zĹz+L?p`W .d>n> o`v hyplG,rP'cWA_v:fv,uC?/T e~ʌOQ ~Q]S2<0h>`wWzϲ0*vD+PCG `>WX~=}^Wg <1PLSOxSs#o^!|!<@n@j`Vs(B@ÿ>W /{xn+$W&Ij  ͫ(>H?d\&Y+E$`rL|&RM 7+n+$ߌ9sD37^q8\o7o?#| qo7w|? q&FfdF(A>n^Fe乆j #4=^f7F8/N:p! ~8# ON:p[@ _N:pӃC)ӄ 4*S 8ONpF:Np:b=8Nh}8Np:;ޜtp 5M$? @n)c&u8+\Fq1`` %$ X^g h\m%~K%]Iqk\.5tKƺ]%qI\k5.tK%]Iqk\.5tKƺ]%qI|k6>-tOƺ]'I|k5> txn棵̤ ꈏnyc-Y݊4>`Z9XtHZyn>7!x >4#!;-r==Lex>WXG/V-j F'w]e_DOW~/R}iJ!.Н7% xW?xS/B4DU`r~J/5H#//?[jd᲎CtHLaA;n|vxH)4#H(cݨ>h@.8Ǐ_?YG )'/g@PxM\Gz3/H $ιpw ;2(- }cE`LFّh~d@]J$nm?*r/h񖡯XYZ.DW ~Y$#t[@Gґо/mU8&aU(zNA#V:k;/ZEg_kYAt@h=xf&k45ajxS4G0?t0G@P }q><<^=>Rp-`"?/z %>GB y;piB›cIc,K@' ҝUw# m'i!iN߅ڃzkGr-b2ZC4-(TH:Nxv/n.8Kir>8gBF*J"0L|%B_;Z|HK';ϵ_'^+I{QТ% -5=Lx&_+Ra>-hg 8I4}Tf7C E%g"'&&y AR:]&s㵀5.l\ŤXy: |_I mjKY cBmh%OticX[tyZqgw iD>"oԊ_!ɭC] $H^J57ĴH3R!_&rD}>t ~m׷ Y?"EYȨ %|i!zݗ5It)8 C}2 M'bA03K >?-qZA[Eyt:/ĸ SHbCX }b~1'f-uyhH& ͓o\ gY $ '9Z| |1pթ̼P»Jk^ ?׼m|X~H[5=$MD^#ɧ]-GuM!x`𻻐W`4 \ߒ)(ߤNq c] t1'5.__ @|)lY/;GC+rAS^Zܾ5xU/H w>+XX \jAjh!U7wV`))~TtwĮy3*IP Ii>Hc*vk-+Y7+*{X_Ԁ/`TpG'|>urI.G5d< -I<#TZyf l :~`_\܈wkz<r|oya|!w!\UWL9o-P7 ~eOnK^WR%2]yW o֥|p:R~/C8|!3C,K~/֍Î; W)8FNcP);*][b:_V2x3Ⓝ X3*|Hz{c@RN!X# fӖXx_\JMg ϊ|i"RPOY#Syk,5)JzCLpVD1zUUĉe<8˅0<" @4,2*?,Cc?DèMIDBZ@Ft7 #pw3X7>- p__Ϯ< 1}0t+p:tN7l^ &n~vI|?j<>4X BAZ d3smu%lI2#( ( Ð8XS_9Çq:XvXW`:x٘< H"pB>Cc+N LJ"B _Dic\ >nCPe`6>nP ݐN )UG>h: Y#Amy/(WTHgUB# &$,@\ u!!{YU\q`I1!@薷@'vT*wf pX$n <H`~Kfb/Lׁ4G ӿCSN|NN/w<(!~ f<0haû!+ZQ~7t)Y>̀-C.x1VxNT [ၱ#s@O`C.88dp[ Xw/`(\l09W&Z+tc0Z@P @2pSTȄ |!z$aH1i:֤(_%o: y`1 PJ}2L_Îم2za  R"J6,@u0Ԁ! YT8 B'y ٩_xeuIPrg(Gn iHCy#nv/ s&Z)JJB i`|{Zb冱٨d\~pGhj600 t?(kdx]f[14!y= ye-_߈|Jb Y`|2 Phzh< +0١{0{qQBxۈk,->NC;/Rbe<f#qy;H|U7Lp`leXĉqk9Ѿ5EԾ D P`jnO>5N JIǁb?CBީO wl zԋt*Vm^-?$8W 7y]!s}HEA3@Ad@> $_zizƤ۠ x"D=d>R5Hiqkv1wA7* H.AF&Bm)1̄i 4umF"F9_A: |h KW|X| ܫ`. ]$B)/6ʹ́ςJzkd]r.H1ď:Ayհ_„C\ !e{r]Y@V )o<}X$ECSˤI@ U<0刭 ݒ@8M_E1(TX 6k0eX 55 7 .:7)~rZMS~7kCGRߴ@JV`  4/Wv<#EgrH-pXB 6 ~8.;𾼭x;Sc*a-#͠!u x5zě˞Z)H+|C ˻AKq C ) Ag_N( 5y-Ë!~h @ $0&r| <֖D <ΛPh6SC|`ĩ )Oە_udYV߸]A:׼ש  4#z'@ :Mаag_zl/< ÇN]!sLͼw5QooUpQ@< N'T --j^zQ|5SÒ0{ 6t! t f& 4 u#64ܥ0gmgv8/Я|Nn~C͑I8pܗ G z0`@Y pC5<|EȜث<,9R gX 55!/ *5ݐ1`K=_r#pqLp x l~pk+<8ﻐ vwTG#CBCTP857u 9A<`+gJh9-/2FI{<4 D>*XUaYx ʉ {PF|L@iP 9`p_yc`S3I0L4Ѩ_7:BWE&i tp.iVF.s(dÃ/7*`*.dC,L_zrǗG%J{` 2!03AVW`L;-<`H@D*!p0!\4;5 H`O#AP rCC 8[+Au$ !8F`0@W Hf$_ACp/baȼ(zZJ7_3A?ڼWJq<wRJux \._K٬p3Zmݬ-k6K1=ܤ>1XY x00~з~:o /D*Ւ A DK$rA3C !RKaց;D)Q6Ha| Ja 2c; ed +ƭY\b ):#!QBq"FF|Y"THeMh` 3E "DExuƓ0N8DtooS7sm7jw4(o\k,8Kf3bov@ =pE:ËaoT#?CZ4żMA]EA7pr4"%cq>Ac7 ߠVLJ+1/BfM ;dž탽g woK\ȎPq` & oz@ko`p^ 7pw]ah %Zw [ұއCGABzy<8(> @eIF>HWi`.gLJ{~RC7҉|X\cŪTV=x꠯8\.^|W]aSx<x;&6] n}-#zd0֖.ry8"Xp yh"$$oAo:x;$0z-9sqKtUt*ߥ濎-A}7 ڍso E#1@4ukDa)8#=:95434 sՕUu4s#RrA>ĤE%eeF%f|\sc$dDԴ%EEeUueuA>Ƌ%-[pK(a@fLj4p7B R)F" Ei4%J.hf'h(iij)*k++ cQ&E= ~ yƃxDC x<,8- PN1v eݯ&roqD-ׁ5C Q8@rnBBۈK(!XaLm/FRd|(o6U `j3:AZ `3F7" @t#S'Лs-, HRȑF`lGSCdb z1J @Crӌi7t:Ù / ]TB[l. !ğC;`dpW.F]cD(?O%X5?d|< 8p"ݶ7Fk1NFr^"/xxє9@jc^n<^^g:m;^=S2}aBF~MN=ȁ /IȌ0C4[fpJ9p$3|j`j08t,}!!llMV$ ZAKlGrRB_e-BC3JyGp f XՆufmR?bɉ_wK!xh(}LgDI)L5тƓ% h O'F QE6HA"  Duy ÿ={]ͺ= ݸnR֕3Wn¾$j:ؕ}PApagD 5 :۴A|DŽ@dGN" Aȱ5  !(V{,lL tm_ gdCoDB^XA HZiAF&x-n.H-W_M2gN|@o6b@F>,q-/[sܢ \BpO$锠M$)`QrT' 0Nww:$+L.QdiM6h1G0@O2)ÀgѠK|(L!]0f(`: !OhCJβ? G'\ JSx2 r9;]<,awK8 j`@§  A]JJ-1cXe PۈḄpQ ."E\L #$xY2.(}|Xp`Ē&EvX75zXCXKGw8A\`:d@( @〆mq Á$–osNW`V30?fr3"?  UZ`I  IC$#W4 BaPr F2IF-^ H\Llgl,gzi17pi1Խ@lЊ# H \1A HsA=h^!Ro?\' FZ3צMNdlN]X'F:3ѝ9(5AخА-5/`"hP-9 b&t  FH N'! dLHB%M!0Y0 %0,_ H1q !ǀhRb2, =T؋h˥A>Z(pB`n=$z&y7 Ӈp BJF #)KOMD *F^[Q,df)"0 h3X> _@WapBoS<@%`p /h#'x$X pTSј?R7 fL@ai (!au'ai?or[;Dc #8N:'aNtZ:C'N6]dC֮7<`@ ''q/ZtZ:`_pa1׆JL[ N߯߿ONL]c?`i#!bрŀ}>+xb]`u0<% nn hB`\WRM`IE!`= :74@1~~^( #H x(XLx'݀Bz@s@mga\V@RMIEB-; 0. iEzA=m$(fXE3"h dH@ 3@ #H = 2,i-P*(`& #![>ˀ!yğz7<6p˯`PcdH>_ @@DyA a1Q}Aѹ}ͥ}POQ EH@v,+7P r:ـ`glLU\Ҡ1&7 JVdCB0G:e610GQ:qɁ|D QtN!hf0AiԤ"P1-(H6Dt$ @Qt=RJ@UH IP!D"h5xP푪g!12~q2>@`#I3Q@[Yhz'E,F`@Ub~m A\"%饲]Gp☄NaA )@!C2(g9A<ds"IzBZLt4u>5 %g3+7]8 ̙d-rj7H!B? A dF H^ŊА ZXr/C_sz(Qe7XP 0\(rl 4%$Fzx3ҌiiUl2U1Py)0 +"$*r%!@̭F.*0tS"([ ՚ (` JYX ؚXyY> Z&Wv$)+4c8`;tyUAp'йmÉn"@mѐAA_꜖ Ÿ6CbCCB_p2/ (E}P!6"ٺ6 #`N? `?f #`~? `?麖 #`? `?Ɩ #`? `? #`? `?& #`>? `?V #`n? `?黆 #`? `?黶 #`? `? #`? `? #`.? `?F #`^? `?v #`?L ~j bldlh?0c1!1!1`H7dxKc]F:4ѨEjNSt]F5w:eNtk[]Fn 4Ѡ hnDt+F4L# $/$%h|@0X9 Ntns]wF:7ѼoN{t]FB(ÄG?_  @> _ V`DtnqWF:7ѻoytӣF7׿:Ё@W;@HP@x+!"]7F:7Ѻnwtã]F7:΍to )Į#Ɨ n*zufvQtfFDGa2!xAmɢMV߆3WMlno>[t: UtM&"e7mM4'@> $<˒ɪOiRਰgT xlIU5TY HHҲ@-f;ЬVDȤk$[/UT\ބ"zʺq䬑فr y.@g(eyHwHkZTƶ:D 8FFZ0x~SP@-ay3)ApX7({ {@[FiP)@=)ZBf* PQͬM `2RkGFר2M\: &8<bHoLpI^A/ea?m@.$7H+Cz\ ..MYhxAr7 `YNʝvL;$~S =2@X/AD2H/PAOy'>}sT<'Б9{y`) J2ޞ~wIw`aO@"R*NL{>dT#8*&9H?I:%@7ҘIYP\RZ`z4R,ߩ"`Dop8u|R7y +\wȨcx"p:#R.rj :p@>.a_Ay#?'dD$J`" 8@>dH@< =%ܔH<p ;!= %.,R"f-Ȇ5i>vR.\^xKywF;a4n: ;@p"E>d8!$ڠsLؔW.3V8Pqx!YI$KP?e@!%2D؀qϴxԠC ~wp|,J+4z@@*ЀwJဗt;%ǀ78qy1x/<7<k. 69l@y='a@PRydQ`H<+B0) iUzɀHtS:P H ?C3S DuT3W@'LX{ M+ +LšVgGnȹl’c.2d(J;/L 5v%׵czJd#Im8\E88 0`(@p|p5$ǐ ϰ y%$0v`$` swX@z@~#a8ذ ذH9>$ 9Tz 0  E2 89&$@!ځ@Xg?z 8 (2@= ]?' Pȫ(Y p9; ȵ#xopsp9 fbґA:B q9o$?\ASQ8B€9p+('?a@8`hy/"DteC`@[;x2 wH[slpk4+<@ps\G

v =g`{7> ª{1 8\P ,d.ԀxMg@ǐ@6@Z  "P- K\r` 0N,pܹx0?p|:S?s<p5qƐâp0N QԀP lX.?] lx s8@y 5:yp 8C@P@=~<=Ov<\(YQ`2K7> B(x Px%$)ǣϏq S<4$?x1ܶ?Ϙ~t_ qߐ%.|Gf:; (~;q@+lNxȎ_H> oo8~À) |9;8t89.p;3<8<`pyn1fv '<<;m N<>XPcz0 a<8x.|: qgp @@xcPx`'8p`?Pxa<``+@8aK0p@ypx!ik@s?|`1xM\0# H@8vkYI&= P@x:,`=&@> x8P< zQy#>´|m%" -jXH``]3XP1P ?7zM Kht@rOI`?PQ?@@4B?@sK|z4|Z0<2ͤG&@w PTධo Đw ҄A K7 : @A*8?C4?t#]?0q `?vHdC_x*y|Ɯ8<  p51=;?ͧ@|I;38|sw3`F?76޼;8n x.t($>1f @sxzN3>2Ԕt>et ="YoGsOp?'?@ ۊ3,,3Ω|\8~8{K ,c0ɀT7*Py |P1bb|0 q;i>|~:}J+?.}8x0  0@fV[~X=ѧ~[* 12@?0'M@5qº`#;u*8??0ހ.b6ܥd@%6Ț@濸$ ?>1@=Hd|<6~\?ƀGPRptpȇ@^:L?\k"3Ht\@1TH(pH b3aTѡ@l=`@ !wPcÜza3F4F'`6cm=8}@Hj}>}'0`{@ְ` W 3PYŀ8@pPƂ+@CPCqyШ i=8?ׁ@QKy04:'q?؀;f@PI}8Ew^Uؒ -UJ`?s @^Q)׬+=@9JokpٷPz}-@=W06y7ˍ)Tpɦu?k< opSS8 $@?S)@~?}/wv"hA0,b0@;!> Y6 ;X(xP`65(<+ʂYۈ˪x9ft. N!0XhylMS |p1y@ t`<< <}xD2|pl€* ?R 8tz3?P=.B><p<@ ?I+:~Wpp;Ld~0s:^pcl3??|0A(}|< >dpd@c`NE&?p`A?~Ű8S P?)|t-aN|8&~xa@~8@|6ѳ.xeo<880Nѝx<~: Cw02<7yJ# ~tg m<[Mpcx?'9"X8pMc =@X$' ٢X/r])o^܀ `!]8&@ @IP$jV@EiC$`Q QРhy4|<AxL4J, %JW;Wpr2 f@eͰa?G-p:-2@(Iǀ;`_!?@;"XxQȬ<>7wfx2?AxF?Ax/<| '<x)/f?=Rh;7? |'(A>`+w*,7Px)bBv=Kÿ3@OʠgB-pv4qt dDD:@\``H BzL#CØ6`b7N7&e1;.'nA<<{HG-x& Na< }FB9$.}o|'s;s! I??>`&)D|x)d8O2q8΀x?sgp8Ө&? 2?<*@ !q)0~cjyυ I: ΀xsQ@8vGzhP"ApA%0:Xn%$&4< 73 8Avq8@@|D @Gx|~`d =.{zL2+A 8%8C_ x3c.P8L|$b`2ٲ,?r@@lqHq %@dc>8Oy)@5h ~ߌ$~'s S) b:pÇw„y!J#`sC?N>(1!%@D,8_'@M-;Aya9/5`$gr&AP0a! d¾))Ly|~A @! @) ?t_@0W0@@ 0 *oJv9ܩ_=*8@pyȪK< G,^KT)T]:{܊BntrESޙNPoH4Hd?T L{R)*`@:4 R6eR *IfηMKN,‚فFu<Jd&:]X|\j7xօ$Rr0Я.GǺdž4ijDhR2hʐɛJAVAVj`{ fo љ)#3wi5y{ՙ.f\GF/ڽ)MA>I9 R.oX+9K4:ʂ:@<),~YWquUhOV$$+E}ף[1ڐI*Ld{\M#dҲf%esםi^Fko>B,ʈ)bAWD67Qzˬjd$/Bv!]OSX;^P+5=BC~!l)HJԍV_/ _4sLT/i  t6Hd62?+O7<׈,W'Hs4irHKNDRJ %Tl=TI` YeFq5o2 qٔHA_W"=E;EɲJE^m+Ȅr zV23Ry17irrHC}f :$H@<ܘ (L&ƎxE,SA(H|B)B?şAa̎DڧBW)?<.>ƕ1X~;jüC5Hx0P)[U*\(U`r)U9Eom(oRڟ ck?N5ӎא-8;R AkCz}0=?1 *ctwV-Pԁ-fAf$fz}x ;pzmVz a'"~547`ca[AAc%m MQqpPx3uVfXKЅD=oa=v4XZT\;s=؇Ǝ pH@ઓA"6/U Q97Rn&$ ބ-tw .y^&3)h&k[%*-؜ CZ(;REYre@wUax`P]=V2V 2F -' k JA[& 9 Zʄ6.z A#d#^{G ĵfC<66SքF|~?:G_DH?ȥhVNqZUR >R %Ene;ߪZ+*0R""R1GLC.a#vlp7,`s4H}KGUGM7?{-CeuK6B+w HTk׽8jϴi#CH` T'"rdNi*UF+  k"jRmn,O?G)H^!NPa>LV1VtHFgL5+젛+2h+Ҙpj- i+! C}h@QG{7hJ6֡sB3"zH¡ GmE Z\HBCka[t?QLR ֥ Y$OZfiӊΪsjڳ_%`j:}ߑZ+>kbBf#SIS@¨` .^`A\BtSr%^t%IH9QtXjP4Y֩htqm8rxqǍֵ RmRTԠw\+{98cŒuVSAkes"[ۦ߿B)>;@ݫJ)7)O8i>)/*#Po!aBZhGYh_25TMEkOK6K?Bs^"vJFJiJzkf+MmLn[鿷&2F"U%PnQ=鞳k4I; @LJrHRT\T"$AmKUmRPlrAbgBTegKMeLZ%h4b?LY xS@`rUEQTTB)S\:_!Lq_UK{[U j4$KJЉKd@ZRqEiYHG%BA\Rmum]Z]7SjEZeVQ[?UY%-i$uB,P52w6P=Uw^`'4BzWLݼ]2$.6jֶiE_;HDRđ%J%罁E2CδbKKG$"`3Im]L<=%xVLG^L!yq@鬟7PN dP I%rx ZHFPBy%VHu%u^ܲ ft^B!~eϑYhטeLm1|^d#+^)m-q!jw|!x =mxx7Dja|n"I#`rC )Yo vP;N.Tx L@)b$!Use7QȨ D|oVXNOk V+텇k;,X `в6QOT=W| }|R| !- ZˇQBCOy,OAr7g=V=+~ #r~B)P 8\#&?*˃(Рgǿa /8B @<pTsþx㧏r|1_?LV1=00{+`iƥRl;mRϊ_W)0\ :eTFif|8*0B?31goHXrxCh@k09@QOz[$ 뿓"Wiԋx㶆-4=؇Zיx)>f{=+~F3㴁k:O|Q]Bi/Ǧ;JuJ꧱V#Zg0~)PoR|7X !LL洫C< OIA>~|T~>BY=֐/dh8f[U0~ Rw( E&SB9۰0'\/Α Zvn6,@~j^w|V/ ]9|E7h |R&jU0VP [T)>[@[9NP$sP-JBGҨ`ţҶPԂXpJ s PLaA}}ҚJAA֌PH%5hFXUVԫCX JE &)mzޱNh5)9A8^V<\@,9L(x^k(IG _4jym5HU@eQM V8(kn@?϶Hr#a Zm!rUe`UOV&| kFʏMJCk|cpkAU*+glh4-誐i%v?JJ C;|)j%)*L+1H1(@ +oj>1m.mZ!DePԅ ҄akl=C ui@B)nH)JkD|{NJ P$P#N-() 3 :!ihj hdL ƥ# ^ Xq@@յgUU@tXaL[!RRuhdsg@}eU %%9-\V&P+_mVegYp%gAPxPA`@@5^`H-@I}UXTzJrzjVwMxbkɇf:@v̋]J!@ VxuuX PyTGemZ&%ė*R/Ln.Ρ[N ϐ F̄IY-dPbv>V h j-umI`vJ myd' ^TX}RJ#c/U7@M3Hm\ȕ$GºZJF"j辵Nƀ ZZ6Ң$v"OUeUz 7=*,G! {V{IP")TYX|! EӞ4B@Ue@[EfRJP3#MJBhBw=(Jdg "  &ɂgd&69 yH $"Ic s:@m }F ue(4OÙb\F84_ U` nҗ^_!7ҽXHU1f^RM"V aFEMjR5ؠ DHJ%Jh@f҂Ē)R@)R5z*(RȽe $kQj#-TZ\ FA-Z#9AH+Y+Ή;:kĄF$VB=Ax:H']&5Z_Hx`'-{oE pG; 0㻠b#hel &@ ^Yq`ͅBrGC r"Fe9@( J%RX[&E TyQ1)i0qЅ `*=r7\i+fZ^i#UPP,U@~|O ZG+ ^;.B:>ҺU/ũ6צ"0=Qq <'1#OV PI\T9XD-!R.8G|y; *ZP~nm1^@jU4TL[pJ֡v/) +;J2ki.]} hZ5 V٠^ $ ;XC ">Hnc:~ _W@qfo`_X_,4oeoʏ x`0T%dv\(@8`M=(,43+`(n2$ r~𚰸 |&L{0.(+c`D7R2ep&e@\,C"rx5? 0X ڈ,3i 3 , 4A|r,?(E44  eV$h)2h  ]ʰr2)إ4I5T +$ʽvZ&:,N KM[jUOI"VJƕu~4HrR#~(R9@? 08}|* G 9jF daUT]#xX%4K *j56,H受v_XRWT/5RB A`%q)`Ӵr0(F#k^ɭ n"z'0ԔIJf2ɹ6 ´N} Hb9YR+R!j~B#0'z &Doy`G%,Y r;)́UA2ѦmoIL?HnP507w)IKra(Y}ˌĄ^N[^+n!!'M5b%_Ci6\zvo!5SA *eHo"L\Fm'SɑafRAv7z69)Q<$f2N= S!I +oyW-j!$@k -oUh$('!u II$3dH\^%U y@_\auBB%.p g&cY욤CRmJ) >N@m)no*d Ҕ2{tFWb|>#FW)N3#@?$f^)ț@ ^iI0?% +ՍC)m撲W6ȦwHf$I 4>'R#y6Ô蒒h)ySJD JH*Ref%yWv7+p} xTIJx dH =Π m!lriiI+eS,(=`9 "{U@IRХRMl $6u)d mXRrF)6C;RMdUdz5/l!IZ?djG Ph K&!oh+h!D6 :R0DAapn Ȭ+6)Fl(~$n@L=mmS"/^#dUB1;Je0 #D}YVtP@?%#|C*@A9`p9=0H`q`C9`~ZG%0@~TvH69@r#>8Pxy#@RD @9pyh1$0tEF?j ˌH@? `myH`˴#6郏 V؍Tڜ@H2B/Iw}E$-1H? At6ǀC1?X@T\o%T\>SyܰHpKPfD@/L ݄!$6yfK;Dr?fHn Fr9q/Ɍ;\@y1 "}R P? zHSqr3md##IkԒ$"GwW@G:ElK Z@krzHH>! PܐXG*h:~n0(:S2#a>`,κ!G> ͽ$O$VH(PY,7QRH?? @ьPm܌ @rb6#ȬA C뙍#~Dpq|;78x$@BPHrhp*@fP1UE TUSt RStdQt$t52U,Ad-p At6ǀC1?X@T\o%T\>SyܰHpKPfD@/H)/0/.-,+*)('&%$#"!      ~ (4rap!!.exep1,5HzHI TXH&HPK,x/8a WQH&ֈPK.PK n (g @BI<,Eh|zVJ $@( Df 5FRJ $@0g\JS@gJfVJ` DgJgRz TrHAgT$N:Jg"@" ((IXI f*I g/ Dg6$A(""Sf$W Be$Sf$W ^"CN.t%XX`>zRb45F/M@VK &@" AfPHAa8$ RK &@0g2a$($B" ӒS@grf ؁`"MYSAe"Q`XNu AgrHAJAg"_Q N.ANJf ( n%eN9ZLNuK|x~z$K" Jga(ae>t0a$AFgpaQe$NugNu* NuDrgQNu* `0ap54Ffaepa6paAGg`a6D30Q`eNu הNF$Nx\Fs^  ` EX3fv0Iyt%Lj샄 jhXnц$<#$Y TC|mm0万QYa;ˁ2p}{g,tOB#l9W(>5h<`FdF|qϢphVG mdtM!8Ӑ?AP"xm#]# 9K ]# F_ jclaLy:ai7Fh<@A+ C0p`` Xk7!) PeDS &@s!4J 2 @NR"(*hH=@OR!,*d̢D=@NR*(`!qǟJ,- $#|2!O]6cHthWrY&:aw1 ?7 =^^ƀh3z\XY2 DqL{YƏL0 mdRt`$&.0]8o#}~g)QB`3`I^K E dXbHɘ' VG*T9`d & @a .nj"KYmD.`bkAA:M EQ*[@AI(%%P?G&!aIDвN+Sk\^?J b`<i!т (0k&& ZZdd3ŀm2  7 p^6DRkDUDZELhp@$# jō"'X7҈ SƁ# l%-J)ސ  %iUoUx~48c?ApϼPq#$<|S0I0(zBH"8`Y7@ r!АdݽI|D 2X;@rc ݕ"B  a-%,^%C$),D|F $B J$@Z  1T~~L8()=*tlnA'(ZAsCHw'TܟGy AG.郠0]ߜ(  yp S4(dV$,YEAtd3!8px,0#<#?ü=Ü>ì<Ì?C=C>CD A9P”# p?e$TTenU$^X tĨ T J*X(ʪҢ<E@PYRFPOШ  @J*₲?f!`$2D$+ J!/*'BhSTJ zFRZF?"Bqx @4*/r.@$( " (TP`HPP99K`A(! DH9./H `a d⃉S`Yz%0@?B((h@NbPxp(?y@X <*Ax@ @@ EB $( @`"Cy+zG?W 2x-$Lj#0rǏ1F> ˌ~?#|Z|s=,} @ȁb@ (zbȆ]~C>P @LG]@@( ?-` )2<; 0 $LAy# @ z$#?`.~E(zC6S;6ACR_!I pt #<5U[&4c!LyCy`Hx"K )P[PHЯBG <U~A o 1y<tpE@cx ' @"⏑vGpZ$በXA !ddrdz ND`= V@ EQ ``d >D8X%T>?@L =/ Pp|U`AO{3np>* {3688tv{4;l 0y=6>AF?`p$Ivfx=?c}=3t | AcR?68d?f2Qܚ}&^ c_ccpV69@;)mjHVAlylr`&!2s@ ,Ċ ?Ѓ>!q~CC~gW@<@Ey?<<wxx<}}<>4O>$3 ?O\ϧp;z';q軻 B'_2^XS<; ,!@8O'x{ǐ \3Nv~;'w{o!_9ɽ/<9{?0x8`Wr~=i? NFOQ/r @݀K}8=V~]ݿCwPt|iq>8@4@|<]  D|rzr] zQA{B}o&p?ÜO* o!/omg{y[H(0 9$@8< pMǻGzHt @|[J~a} \ބ~U70feԀ*q ? A! sDEZ3`| $T(hK#2Kx hi8ꛘ9X 8 * ` "à/HAp- !3C3 ݅ͽgKc) %e3' ?31Op<,K`3QcSSoÃ!@# @ưB| H@ דQL#Ah,!`#hA}?;! 0$jL  Kh/K}?_ﯯ>on^_E,F"!%CEC b!O0{c"w^QNf'FPQRc] =} M-]?P3=VZarDZ<~x N 0~y 9Z@QeM@OGKؐ S{> hRqڡP` AY231gfo`&FGGfgK^lρI3' `B.1 1POMODFK)ȩIgѱp%I D |Na7f olң w_LS[|\**zFfFp $$$D9X~Ǘ^x@>+].M UE%E9yi )%5%u ݿN01R3]SԗH3ph0H0ENXap K^f4 I5Xx@8b`>>8b>8hȰX& 舨XkGCACQk3$1" g $ n ,BlLM p0=>::>99;8Jb+˟0, ^dDxl[4, LlMi"82`P;gC!AN 00L_>>x| 'q0ڣ3=<:*PWf%q%4TЛL ph((H(h qǎ tL,Zhx(hHa/-|wG N8lpyp{2CiKy P>" 2$g40'3PGϊ@7ww7L2\5J:W\bxoq-:PGKh4㓒RQ1R0QTT'6&.hHEB5 NS18a;]nbmloo-,,.-/.m6ie|JB3 tl4Tt,: $$ddhhx$h(H?@$&p_C XM Uhx|*O'\Y [Lm42< (`b`0~q  <q11A}XH9WO/7co4i.pMnVphǙj4.OǠ onn.n 89= l[G9ۥ] 8@6 sĄdd$Dx *W0PP*^xd')/okO}O.N؀gHQsHJ? ?]"%2X0ffFX*g|BH5v';p\\`}ߟbtZJ˂r,к6(>>:22>=!69= >& :4><e/p!E/4~ز[(~h!0iFlY@p]Dbgri*bg7op:ݾd@xq}&p'P P o7Z}x{yo{0O"C# à8 A!`j✦/UQ" B U !AD6 *@-=VnP13x/~u舁p"+ӽfTrGtȐ#i8(0"oڀ/px$T8xD$x> B  5b"!;r@G.5rRşKHEGV=M@x=O76f5S!wDm_P_+OW l +y{ o`tC@(@hZz|H8@/H $A 0 2@lH<^sd78;lm%RH@(pS#')fRr0<"zS CV>42/6 czU<Sx>9%-SF~;,2 :* 2::*6/Pa`'ع(hAP0ޮb̬n %SӠX@iz@/V 8^ l[IL/A.<0hchڕUp@ qsۧx( _pZ+ˏo]BK+jXۘh'HAqrt4?WQRX_~ayu}[woUO1^Z@VE]Njx8Xh(J qb=\wfJTPl3Ֆ 'θa_.>}}M3qEyK CA=OAAog J@`Bb;:Si@ z?H{97-џ_8QqIxjv}}vs~c }u z{smV}z~r $nA$N ?Y?W"b ? wa!>/>w';x}A$x JAD! b q8 * q@|3 -<<6`!DFvp- Y`fx tw^ {~f`ℙ4g <_+\IkeCo{U5eՍ?ˣ5,w/pТ@K 4 QH( p0@xhlrW,,/D?9?U C~xf;\5ӓ7<$,::>/4Hh.hhx 2\#2# 3㳪 ӳeal͒}_(pUCCAQ= 'KhӒ1.(I'Dw0T'4,V $4T$e hx?x> en~m{cjtqauo V7և]8`tx$|L hh("<,\l|T$D((HU S֦7;$69.=%>"(82"!"6)5.>-;? zvyk` ǀ EEE%eutlWGSEYEAFFH__M[ Qc.vwW׶gƧ{;n ?4,`xrtvia}s{wFJOV0< -60I@KKX EGJNHLNC"ȉUMeZXd4 D:8/Ѐsv@__TRfo_hמ`΄p9$xeBI0:&<x pBB0vn`_ )xYr/ ! Gt{ۀ'š47o C9(" *H<><>>3 ,Q6^I>>>>t A H0TdVR* ;7MG^ŏ<<3n .|7_D q ״|~h"o~}f00 47^=C  ?&jcf_2Sp<#3a̠   $<  Qtl~3> ~{BSmqY|DF3: ,>P DRf}y΁uTuݚ>K"R oW'W|"p25x+zU__y? gd2/_DXy;7@1K:iXi<nƇ]Hi * t@@Xw6,s~Ğԡ@Ƞ )XLq__^LFE ne5ʬc 8\7 ۙ@OE"CD\f$vV5~RH PQ* %@*q8%p & Iiڝi?rN?c"!o3@1*&ZY p`a`nـbWFp?_gp'a(|z/@6#: |$x?B)XU,1<$CBBrkE4Ϗ _N|lK@ * GQA: xb#B@Шx$8(}$,"-#ã`a!s_p(((sD\0hh0 8иN⯣Z-J"#ZѸ@dW(@B?o2aTx{+ o%#Mw{|_}~ʥH Hb ?H! A %(!\.   @@ `,$(PC@BBp0`@X`@t_P` ?_?ߞn 7@My_߸"8]ã{ V(x8{{5UPkF]xA~#P>\k1F=Xay z>`>@Å2O>DW(ڇ ~Q7^pwVF'_@A`AfZL}?YIخrJi :eB  6_>8&+iY'\)C Ǡ+md4'H[!eb^pbghTA6,OvB;7DB"vвgA1qBB 9r PT]UB|rY|n* |X? B}j"\9rhd,)%%Y( e& ?;CyH/  ) ᯐb`s ^QNc~#xR@<,AT/G  50CHȰ74T' ~N tF}A=A 5(P @ ` VĴrp}|d?%pheL68-%t@ "p0<E?񮅀x¤x |Q.6\т֜QgOxL+ 2IRLT?<<8i` boYO>B A8A?Bȧ$nXB?f *a`}fDlpߖ|F } x<$<<?}]!< |Аr~=01|}ú;D3&^&fǀ)Hn F5xO?3! SuKD@ ?W"qpqq9>wy] E_8Aik-F/ ߐ!mS@H5w:WQj|Po( Oh 2"%p2Ipf8 =E IgbB-'K3dWV- V@LM +C@B9BP`o`A,?Y+^<% P%8;>]]8?/}HO L@O mf+2p\N>yd=t"0bewIөd }\# B& (YdNBs 'P<|_> :%=,V=?zvY @TYb[Qތp!h@ f@( Dcn7ؙ_Zٞ<ϯ8;qg:ۓ>ap BE+v^{<Ivy1~|s  C)@x*tGaU8H$p:0'q2>?>=8=&{ߠ !(z{" C#@"a '~A0o#` ,?7\\/o0P\~OlY=(8# 9?쨏T><>Ԁ+[]03pDӫ5|ps}JXu|鉳YF}yPQ# \G {!3 (<> 4 "H+ |LP\ \€C n.aA? +8aL5$Ђ!q@7J_n9{Ӭ1rH*Ua|1㌻[/uw*8 @l )9 Z@Dd5SY{0<ۅ/ЄACB/`OgsUK뺒Ng#?#B  рwA uP+sxԐBN IX?^pp@CE@B<3H^ηή/~rg\Ő $ 7eu@["D ;# uRЌdPx|h '瑸L[]q(3I!O "@`amS^Xaac/%TIɎ'gABWc(E8DBK!/@!0QDkЯoq͙ n "QRtq "dJ0 A>=Fy;|E~, wC#dy~kAA? w P9e^8}+)`~߾`B+ }F BA 2]>A`Qh/9S [ď_DP 3FKdg'gglq>x?0P#`/ueI~~ƖNqG"<8 ؤ2@|.)Hj4`P%EA,J |>! ; =5YH` e;M-" H,.O΄jQ¼8l uhbH8GvAo 4mԸC[>~ <\G`0~a .w7Cs<#\7jQ0d$+`?ો {se~oy0l -C$`.-c5[@onD[‡@،Z8u pA_K=A,0 2|._yb?ώ"@@AP |`p@t:H+ R%"C @@<~Ƣ֧}t}zTPggRBQ&,d0@GV@`AĊ{Hô/5p/O5x z6oH_a(FP`@ @2l~gWݚ{ h/\ `0 ݺ~=GxtvB H( a9Y  r 0 ~>.eVqU e@`0PysN^ooB7?oO77]$.|$@>@=S|+-?}PK )`P"RJh~?OX"Cƒb* :  B  K$ B#Ǐq !F҈cORt*Axj#ƈ<CQ)Ed3''C3ބh6c1>c AQy6(}+*:&HTh0^#8% &hPc?MaD`a @)ifvO'|V}BX,p ?| ( pbPdpI*\ p=@~s4B?vHquD!=@Z$.@~t >ݜ_eg ;:!9%< s?A'}DU00o_{D# x8 r?8Q H0e`[ٻ a Hԋ|K%@7 v*A 7,$cX 9y $  0cǬ<<8t)1a=@  a`Q7aAb??RL̂3 Ɖ減 0t |ߗڒQta o6Pb [ o);Hs81/S  <ߍ `@+: ͘E`g x) 37AE@Ci6 >רmx;kQmAA{~8/qrv}}XӴx(BH@6-Mq#&lr@ Ge@^ 㸏τQ>:Q#?Ƥ 3H!P@ DRGE P )Ap@ -ylLԵr4X XƊ0< -pm5iGqphj,d A%KכD)hԼx0#Gx8 xPdUJyyezLGxBVFIDoT Z9 /ŀcQY?VE?&pҖlx*?.)@]8)6 s&V%Rdy~|}<1=.U " c(O?#.8ΈJ@x @ B>TEU$ '"<7"+AW qmg#{>rA`!. 0}M@@|YOPY?BXGa`yJ @FPvk0'TL T4p 2 0#] 3̓)Lΰh'{+x@Qzq{8pv`>x'q lx%.2] 1=Dط\ wӣNH g<?3] @a~$ƹ-'C,OH M 3}J  ggӃ2] DR$;4H b=8U@&q+ׯq0 ?B3\J4b @,Xdq: nquh>a3)' P 's?9O@)[ .1L">8aa98 n`"?x C R }$x qh:I sK>A/X9i`|j&@ 7Wh?FiIWZP.aKCh4Uڮ0# PLՌ<=nXs1Io QP!X,7Y"|C&25E .Dq }$|x9?^-~ Kc P ,aЌM'T/hDx 0NfH$BPٺB0h 4 H(r_1 c?͍@ ,951Ho  3-Ƭa@+Oxxm>d' `:ZhÁ `41(?|B]Cu^!ߜz|²{ *%JAD  AyQsH H:<3g5_n A6I(H78Xș $I@~x>no@nބ xbxwLo\#g:P$/׵xy b8<{|,@o[[E180?3@A)7PW® Bl)(""HpZ{8<3<`!F.D)P8|> ȯh4ezqqa;/ gT:U&  A +xt(Z$psL~Sc@SP,#x< 3ڼq8{fߌ pWQ?Ql?ƱL V> " h>~ )jG'xeT`t|zC}ȉ '87`aAI3 |j{|fqa G8"ց|Frtv ǩx5"'b'~c2|HIDp8mg !q.xkc'|69a\KpÌg_?!Lx ] Ibb}y!3< (/ZP)`']bۺg< B!֣0 $䝖E8&LrǞ'HՠB Q(P[ fG % 0 +"8~ZբJ=iV|JWLJbb&נI__%HYAQ! <)(fRBOT?ABA !a]eC ! (44+cv z\Hsh*DpPP+j_u(@ j/æ_Dh}|!:WIfA`;2mO|Ch'ǀ?/1Ϫ!L4 /??h.- 0 r@B0.t?00-&A@ВGZX||= ?h w=9GԝF >A@J5N !*/0 O@@~]!x}xmV!kN@O+|8 _MV H |!1d@X` `~#}pn,5?lb'8WPJ8o!tş2gQ~NAB77$F +8ɝfRg !6*}I"@NՠbA(p~Ci+s@@P <cO|oCuO3gTh2! `TGg  ^]pLC0< t|!.2.spk{7%A/\@A/P{""B!@dPp ? 5`D<b?Fgu5v"BP 0Иa! z?A@ ¢ 懲N`zl!ogPϼ.Ơ (bxgFx@)b |>y Hds/ .W@<42}}F1A?d u.9ExI;)hp8>$FF8/XҖ;~tւI3@>fFL A3"k>DO`?9 |n$PCP4e pwD\kˠQCCс׋@?`+ (wh@dd"{S@n`p~7@/C*-4K7"GhLDO`9"zJ Up-K?>*~8L\'\VDΖ.C,&t7q ;Ȉ #]`Lq ȼj(ӯ)EY\~!# &PHk,a0 3~W*5 ;A/c96=;?ݞ#?2ĺ3rK%ɿƑ`Z ~c`d?1Yw*Ԝ!88F́y!F-㰏">)< o> 7%gc0`C@/A̼RJ? X W@LO t4TWW54۰`fG'eR7ִ54srwt2PW`e BļqpZ:6=&2 H]gy~4fk]L-=~~\:ğ1 9?ȏ h  >!=@ouFs??Kg/sMRtvj) ; ZW'aW7瓰g `RP!{6oK1 p HG7 1Xt'UGo6 * p~pg@  OOK?!!@ߺyN@ ?H% LpPI`G'Fc`9c5枘/{'L'm <]y5bqs<3/<\}& D6ʵ4# 3 ?s-!\ ۧj\癫1rNGP#SR@ xX[h-ZMaJt%K_D+?=` 9o^l@!-?%< E@A ]|!.8=^:^X]ӓCM#=-ݍ] }S3?ϏNmi ıC#`ccb@=%)= ,T\8!#z ,4 xD4(DP(7@CjpX}Ϸe'8Q_?<Āq#aTy>͠;{ɺ    `p@ Ё޾{|};V,`ـ^;`w `g!ɉd#1v彿y} ƅ$i8ix9a$Fŗ@* #+z@(02 88(04 ,< (<:'`Q0vsTQo}Nmkkz~m鍙eۚMÀw-Z43H B&Ylbrrv+66>3e:|DLeCCGG'Ƣ#v.Exdb"r:b2b)ρhI9"1m/J0V3^[C1aH0 ag\DXXFDG}}q?\[\\d|dw`pdpjz~nvywwlaY>4RhI (H#/zU3X@ p٣%_s2I '' dgggRVff``e %Q?WôL #;l-mm@ۊ @(@8uk q =(֋WC(W &* ψIpb8XXxtLGB `> @hQ401PDE*[ .KBP:#a< 1!!d13J_>5+$9)#q @ w7\=_\痗)-$ $׊b><|B8 ?f^ΟOj /~^<8t48`Gc1,F!"$zs9Yd0uDϞ:Q'"-cyy.&/PBE@a80/%b ` ࿿Ny|a }@| [@dwapd3] q d< ^=Ni8+Z|   no1>D?y ]P?0]؊}>q(82;40toDPb1 V^n_'gɟ~]^Ґ шg4 T'!$?n/*Cpu=&7-{I|vHqim1%`u,K dt {G*2 a!00 3ab(ShH " `ƀx$J oqaz 90^T[ 8,\UlqW16zOW,!%˳ڼ{)0Li5~7ϘO$48/-'bV ̗g[s1r,c ߽}@A0՘x@5O 2D apQ`01pp{ }DžGBõDDG@Š@@XO98P!;hV'"@!|:0+ļ ($1$ I)/'+E1<\}t,ԧt{x Q`]Pk2[An%ӡޣ8$ETdD"_">'ެq`pШPv@(=.#phhؘبhH0?dM I( ZA?#e0[ 8P`3t@g 07Oo8" 9})N P J?Ū' G\?(eۧ?_Oq[e`Q, O` +ѣS``6@40K0  R 8.pBg<Ppu D `p!pl$is\` EԎqRڧX]T8`\@ ,HR.6b3Fo McF" aPu,S"o& APA$ñ܀*`S@W:H${>Scq x}{>!4v} h@!q>?!f,_80n12I1az:AE`bn7c P?GX'SR1B<}D0\bGsPtX!9($$!*?~BB2wy# "/O`SNj 4BsU؋@('X*5pGih φR @2$$ p<A*_E>܂}4x<{f$`1d (0y8~}o`vBgw=.#hB< !aPx{@t1z~~vE<|`љ1`jxAcbIPO.ƏGm$7x8@_@C|=C@t_22o /p q:(4djϭO4;![7^ޤg2 c|`\sh/ηUBbm(Ph0~g؈}͝)"xl楙Ya=9$=4L5/ }QP8OcXc~|mC  pPpDXt<p>B.()t6 3㪪B":$ $?FP4n9%'I<B+W 'gs@@)Nx%M Wgǧ?nmq?]xja1P!! (T | gW?-W9fHT ?4Т%~=P|lҸtPhl Z nDMLD[ʇrI;du=:K*ggS=pDl/ bowwOq >F `l r*",wP-A 2) XL0Sj KR b#b, _J"2|eH;đC#c~34084/#Խzn;瘨XP=^_@ Wgg3C_ hoP||C, _?=8쐗(($e@O&0Y|s{twPxtt|"\ $S e?POf`3Fia~jw?::Z ow|jNRZFv^v~fQ^~ ?3q({7rDgC~B_PTY?ޙز4CX_X_ǨP7v1ws7VWgWfp`i95-=luOv ' GW5&'6״4T>w_HN@GAB雁9`BOGAO.sP(32#h63l#|pzQ8[#u5#?77֌ s㣫<?Hcr6O(@ -ܐ!I} wC2@D-': ޸'G@'E`L'9 _hA)\bB' w[Nwa>nͦOcECQSb_T[ vt`Wq-dy)J8~_ݡa C><h@͎]́MDrV plYt!p1IAn]? 4,0 *ZO3!ڃ@, X'C%ʞ $H:W@x^$A ")xJ.@| 0_D =LGu䀽JE.l;Os@ %aQ5XaZoQ8N :]cld/M =]qݰ.8`gǝ\aaf~`n3tbnohwoB:)a,"P@C`@C U#"$%`'!eJp`X @@б`!| l> yG@ h>@C!?sK#ڼשfqpZ{ajzg:ۄ\_88^Og7OvV[b@H߾bMJ5 3d^qfA $qϕx=ĀzD 20ϐP#|c!Nt=I D!Q|F"£f! !'alz t|rz:" (|: h("h`G"xޜ>q3~ulF/ဒфN\x gg=Zv3럨 ,8)_B "e!A= @| >|3Lϯ59X7 ~P?Pb"b5==1:6%&>/ $$f$j/xlFQ7 <$zr 1nĸ@h<>$H0wp'q-5c\Q0~߿co~n{`q Dوd7'?>~N BBy 08* <<:6] x4_t>m$Mt@@|l }^ \^3`C>ߑ~ G0_^-!9 4 r{4!_/Us}s|E_4  h|EA{43k= \(><;>?+>/;E$ `uiP8@x`N~RHy8 'm] ~x܀el> O HzzQ V7PF#"=?Pbr@;~>0_8=`1 N7ϩ~??<67l ?ȸb0焃 0=$p   0daAX5q  2d?H~:8|%3u A5h ~\o! F=Kxc+B^@?x,/k N' z ~"dH2$? I%"0 LT$g 84(7TB5 I9{ϸK9\?0/8|ufv}/`'Ie38 [rfh Fc`X_ޛ #:%]4 @ƍhL CqVPD@NeՈVz[.#Ө1 PJ^+T\pP`h\8$h|T||hX| 4xyOB+pdӂx>57LJCy{9|Ƅ|nApz$D.^n/h@#X tD  F1֙765432I3WwO/׷ ٬T 4hp$ 2aa%:0 Ha5Blh,!1 P~fرٞ ejL 9 r8 p}L1ȞI^᪌ 4}C0̓wwWg'g}xLAbGAEGFDJpp((u$+7,E} C!࠶D nڪX⤧ C=Y!,_  00aePPPyxxMqit)j%`0xDy]5jpVtRq.CYh tcYq |xxy'pmJ>38J@OO~RA~*+%r#J%K }](o Php*А@X 5 F%c$j.~Dyh& Ȝ.pZCXy5b Y?9BFM. g^hpxrJxOO#ԁT &Yo4G>0Q,K5XhR!Y!.~ŴG5ؠ@3%F|@  >PZ ! P(! F1@AA@@7hA6^7H&(YpVB0?ϷhHZ"M8P/!@>>aޟio@C55WOYB޾c `(/P8`9p_GE\91Sx8q>П ӣ~7$!'},b^]v/d I"<=82 I8wG Ud|~YRU~B94t zLEpDe TbL6FMu?g)φЃ9kM=Fz]@:M< bCC |L-p@!:Ք׏܄ xC ^_05H z@E80}Fpk28Д ;7箄.Oءgpb?90d|B? `{|1"#8Dy{?<8a@@reهP/T?&~ )3C @=#W` g7Qi0bEb@wC )93D}|Xh eɞ  (ӿBX@D=ppPC0/7Ζ7癀??50g^"rz{~̣I{|ݟ@c ˠM7gDap%pg#ՠH |v0"%?#@ =@C΃$ c! @;E/0 Jנq@jpPA;   P .PVj̛i1Tx8CV?~dJ=@9 ?wM ԍzc~yEc2iUQ@>Y)H/A>1P|HVĸ|t׃H3b>?><~i2%@ K c &2/C.+͈X# Ā4$ =I? 4,DANT*`'4N\Z%bSA{PB L(@` $ +D^_b`__>_?_^^oo{xx~yx}ۛTC(8"<pxk1/ ?<y~B` `n!lH @P`4P0   / ]  8֌x8CV?~dJ=@9 ?wM ԍzc~yEc2iUQ@>Y)H/A>1P|HVĸ|t׃H3b>?><~i2%@ K c &2/C.+͈X# Ā4$ =I? 4,DA8<90tsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9q0<$ 5yBeRnEtIcDrEaMs.ExEp8:Pƹ @"7@p HI^<<aVN|aP/I<<<aFQ ,xN.SF Ffa0B$n$*gԂԂ$BE<$ԂԂAf"$BLNu>C"QQXNu "7pzRFNn3 IRFN,I$N8JBg SEkJ SBfSg>f dVf dFf d6f d&f d ~`,~f Q\~`p~`p8;}`v~` p~`p~6f d f d"|;pX` f B`|;pf BSfF|:F>f d6Cf d$:{0P`"@ :{0X;pj gf FSfRF˻cĽf*JSEk%Sf`9Lo`zhGg.qx80(XpF|*.F`9G<3<7Y? 7Y:7# aF :B / C ?@?*Occ#x|'Lhq8xHw456G/,/Gq57XB9nX->!F.6BL(8407 ?b&XBu\,r~/#GY8 71c>$? /VOM|_R8b.){~c1a19M)~8sb8 OD! x d'#f6x1=䎶!㣊u1;  q&2f$Ɠ/ ?l|PxY?_7&~qm7~Bx=kcOܮ?7WxU,qJ<[5-n:7N qM=.LLGĆD?6#.tbhfCxO )^L1s%1<nP܈t$YZ%Kz1:?Ƃl ) x.ƜTȇ]D'c]X*WCØ!>3Wq8VN C'2Hu=]2mW8a 3dqI29T_lI0b~4)."c]SԜfFhSw:6 (BAs6sM>s>:^܁.cĉc *I?uw b |+%WL##Ǝ1ƿq?d"8*L1 ǡ[b-& =-r 4#X_0   XX# N/9c8(;, Ѣ@q3s cY@1?x,b5/Qx %(Xa 8q eo;@$88j3 G-Jq \R<{_#8}  GG1F'7"DBc1|8 B#$?cn)2#_<8!&xZ<S3Y|ebE͘s 2H P bYB}Dm<L-sSqx;.hpdX h\hE@,$LU 4 3 5Bq D&b LFaWj4Z &1Y Hh~C  Y 05W:L9%^\QC ,qT;$;ʣq l.G8 C] bdt:!4 =%ޠUl !Ԋuh&<@E #L^44N- H40yVA b( :(4b0 Ƨ )H)D g f&c8 aXU8".Ȋ?r@xtG88 DK?ZoLA4, 㘍gĈ_{0!9p!co ǼaW1p}:>e1xC!x]Cv%zx$| JR #% ,O(}AO|||]=>-(/Ǩ|DE uH ^x̃c~-"8C]z|/B_#2%[< 15'c= _-Oq c3< x K|>Sb.#Nx<{,#9/<?!Cxo"2Ţ1C<F)<*{x& mx!򠋥t(?_< oba8<:>4'HXxU8 <1\1k." /SB +[cH`S-pQ& e'G+ ``1Ds15}]q8 E`r=7.O3nCEJ=x #,>N1zfE[ !Z0&'D. VLL\CC$D'#n ~@8D##mL; @8D'B1 :U (` ,0b(aHX#D7ل96Bf2J>gxrG .e?|@8Hb{q= j5@3y`U J̘!fQ .&уt"`E# P|R `JPEXW qM(W^ J")vQtX@D 8 F$DF*$蘋PV!1 6tTa#pD}C"ˆ1;F"q TMi$kb Qې1]DG`# UاcGa+0 {tIFls ? Z 1pCT(`88D X`F(-Q bh-q_\؋G1c"&Fq-*) 2*(W82@s8%&xIF3 4 :_d"FTQ3ʐa)錘ZX"/1 :t::*] xCa2b,6REB4D8G -UN%#-ӪDx-Ƞ' o="^p+=SYb9iȅ (K`LDi0z-E ģTi膜3$J,"Rt/lvGh % ^l EtLqٻ- ] X  8/,T5X4K8ު 槐5>LJ^ǑKg3\Sh]⃌,4>S@<:zg}1d @  EGs9:IqFAET4Fag8H>m@񚃶y"+-csg`CH9*0#l"1FP쇣:+zU99Ӽ9$kTpXh~YPDE)f` ^uF tj(@cC*u 1 ^@!3 P\ s/*@ AN4# A fiiEƽ;  Ѻ\: D ;u8I$ ҅@㜞&bQrd) qfO     !        8J"!       "   *01+"+2/& !$!     %&&      8K`    8~P  ;5  &hl!'641+ӿ b #:8qs>  t/ɾ"=NN9Ÿ:F^+594O O!#@˫ĵ<&,!I ͕ );4" v%7=(@-bmnK !Ѱ O|./Y} X.8L >/s\Ct",0$@{ *0#"˺ֲ hF # 8W3|z "ε7PXF#Ⱦ 7D',2)16 ƽ%GSC5ϡj    .F9齛 J5˿0uk#î (51 ׯǵwE]y qڿ E lBݾyn %&'" ֵ" >L@.8MI < C;^% S:􋑧%.) &')$  4??7& %#  +* AZ_G% !   (+*+27/迪;HB*Ժ 49' з!  */' ǡ"BH<&ü &8:.  8N'-) շ  $ʺ.1, ɸ!   !     :ZUA     53#     %$45'   8O+  "m,o?pA=17 brRK9ҿG`b"+/Az ?!!9Avg-`y?D Ts<6VW!"&7 \N #h7G(    ~fxme18 f& 26% j9_ G8Pd> Mz  =:)( v9{}V ﻼ ~ʲm#YcE RR 38 (2! meQ䝸Q֊ ֺ j  ȹ   1:|6*ψ&B9 +c!l'%gޫ: A@Ė?c'  T>" #ҿ  $yxa(d`?9j8Q%U1jGfMq| '60 m \_v H%)}tB8]   =-B "+"r {^vi;:F^S9i5k   -]Gda>3~ q( s"K,   v٪5y~(M('&6O# 6ђ|'"W\ (NJܼzZ8R(nDcCM GB =ڌ(9 ! czK 3E v|S 0v҈`.   5.c  l~w(C +; 7[5]# d F %9ԯ7(c(En}GXG C8ecP~8E1>X#>!SŜ3x6^H$*Q5("0V ՛B3{ 4_A-_ ؞i8Si 8 CvG  !#  *n(3 N 8\("  A${xؚ $;r:gda ~D #;   u=ZwaCo'  %0)  GҶ v  F(W: yʣoA= 09F %%  !zٟ$Bm;?f/x8TZ+2  /6 ^>c#)`! ⶕcRb 58_O9 j9B1OGa^cуOUGq''i  j$'ƣڜy@: B]   ڸ' IKǶgA I &*    $-*#$+&8U!   1:4",3% 0>9#   ")              '-0   $ 8VB E?P /Lx!##ʺ *-' 34-* Ŀ"%'  " > $#!Ma~i~eH1")" *8~>p1ӻ·2= ?  " B&zO L" ®aq KPs#25/ֲ? (:V8GǎWum$ nu4E 5}uT$8(j9 '  fo08Wy[|/^j$T:   !('"  k  /߬a5 0=@<2´<7=;+&e FCZ\&:87 }e%%+9AC5 ļ  r  jPe~x3I(Q kR(#Yy ` a_>*9YMq(N~NF]c bWW8X(qj 3x;Xy8ٴq2(#Y' TH=cT bc5+ km-p  O}("P,8  53rv t%Mx) UvFmMac #Q,D `i t? [.C! Zƈ` NK ̐؋Q\d4D  fK QI %Z Ƚ".-  8!Z^PAa~!&%#.ƅ}b  #0Vw6 zp2vv:tT(5b+꣆ `    #+$$&  $..!    $+& #.1+ &(," %0% ,3$    %8"[D    $9B@."3!   $9@AD=/˰ESY[E. &06"Ķ!DH?0Ⱦ  ӵ8[tueO&Ӳ!BPLB.%8120 !$$Խ,.1BG(ɷ 03$ &. !'ؿ 4Tm5ā #锼O~u[G=%ԫ 0FJ7*-'''$؜/Mpwd>?#Ȳ'7AD/ӿ""  "-).=9"ũcl:īq5.ba4"² $:B'  E||GÈ-;YC辫:]XA0Ed[3ܠFw{kZQ9߀7gQ)Ƥ +*6.h²[+HD% ޸:6 !&ÛþEfqrgbbH(@ڀ7^iE ٫2wa33 }6m Tfԯ桀 "' :Pwk7}Ԁow5i|pXNRDʰ!.Z~}C b1| Eߒϟ,7;7-!/)# Ÿ -;FKC95 8&_#V5$* "$ Į*:VgohHʹ09"     %'#!  $! ;}k>Zxxc9xaWw[ᣗVxPCYBXT8/01&c|#>< iX &!xD(Ab[>\ 7B `pN@~0<=x6c B:,@8: 5c+d(aH @ J+cC z (9J  b(`B C Gbt_5"-Xz! $b!y'CGo 2QrL H`vë@.@xh`B/ %JBT e=dm1`8:7&( T A:FT  Dp  ` 08C      re`!8(a/2f` SI4!ݍ=R.hgx{@   "$%'#""((5#%"%%",0(%%4"'($!%        &$!(&$/&06*8,<66<:6<4:<.<26$;!7!ndпݿڿ !(&,074>6GGJIqJLFLLKHLDCDB=M33:13*. .%""" $   傮ѿʿvހ8Gdv  !!)$14)>7DDBPM#SPQQDS>@;>>3325(,""( W~2ż4?V৳`$$'*,*-0.89<;F9PFPPSSl@P\Z[LNE:@)1,% o8*cǠӱyoŵʾʵǯо &/"43E)Y?UM[`K``X`Y[`@`F+AL:1] a>+;;*%3'"   ĭ  ),01)9=C1dIa]f^fb[QG@-Mg 鿴 A "@d▟"(+?9@c/jPNbjjjcjPijMjTQQUUQQNPX7QX9Y/:+?/8,e(+??!# .!3}q>/_??ߨ}_|˿!?X? ÿ?1{kf$ߋ/w ~@p-x?. aaϣ^=>Y >?04 > !'7OY;`@.K.Mfz=W97w)71DOH.IRATA_9@!ts = %d( sdioda neilirata?>>>>>>6w0C y@ CGr [x8'1?_b)^b)^b)"XXX|8S0B1/H 9#kJ8-fh p P7;X0PƪBX<<9<Ŋȁƌ9 ԓs7EP & /;^*;)y|Svr܀-b x p.4O#|Oᅦ1W☞+0'% ##|y#Ĩ.t?2& x.b{>>w v0ut@tPs`r?pqAp :qot(n8mHl?XkAhp2@xith g0@F@ePd?`Xpb?at8.g3Sw(_t8yqH]tX\h[xZYt0Wt@LyPUt`Tp@s R@QA(P:8OHNXMthLx8KJ It0H@GPF?`pH9CB(`ρ8H?X>h=txsO ;t :09@8?P7A`6:p54?3A(981HR9X́h.x@,? +A0*:@H2$~%#@HL 6Sr5 scSp{[ۮ1V/ $N;Qz X>*jyS^ߦom,2mvs:$?ӂ"t0j80i&`wK-<$c i ԁms&:R HDXԯ$^7hFU*&@(c*M"H*-23FSk*<RIa%(B%`*$ j%Ţ4B 3ه<"~a|# og 1 a9L'xcB?<>; @bĢ+xB@TAR3ekS0L1A%YB oQiSf2LKnX@2Ç$ "Dfpjz 20"  ,]~<.+E1CL?&MQ;7QClA /"W//KNAzAG@ DB!@!`D!Qƃ?@4@H1Lg8z'Lt~qN6_Qe{7Y}"Rqx .@Sh}:\(X1JaxŴxaJ1@+  uNLp$H- n eR$n Ё -. B*g-#;J3BA> む@HPJNj'5R~qZ)UV{hg0?BG}u1N: Dzv\O^"'+wpQŎW+:fAJAH5NHfҿ fE|,[m_@83lsgQoH:0`EvC  !eSg"J$2k~n/Hc};fM. Ϡ9"_{A{uq2qF`APჼ@M?ʸo?8>?>?Jtx1:x VpgMt?` J9|Ġg vу < gq?/b . fN$OT@p47Pm'S8B`Bkq'J0v$4` j'J`'zgS9"O3 F?CgʜqAZ&,g yW]gH$487 XgPZ8uNf'+JKe(b z lK\HRN%xȓHN3"ThAyBL K 9BJ9MK*Ձ*(2f"BpB$<'~CRFQn@S$rpCH"F)# i-s'ACH a'%c䶨b#OW8Ut'G< c&$YMC^; s< hG0<:jxM\_'C؃כ"x= .% ^'x'1bÎś b'XK+'x# "?'W,w' '9Op 'O$ ,'X'{Տ'?''Z~4'Q'/'hs/s`'8O/{ g~'^!'T'?''p'/''N''@{'@<S>`87p2`['>N'x -x'؆' 'HN 't`, E@5 hY0N'H-| b| g|<;࢐7EA>As8܃'(?U04qAOܱ'GOpľ Q?I^'8A7xKv؀Zܚ3W8'?W'xx'`^f'wwO 'o' 7 O'"P'&q _'' ' 'I Z \⿋'' ?'?''W'í|'''~' 'y9g'*''E?'''''^'_'L'$1' i'#'C'~'׀'|']'p'88qj;_$`'>'@?Byr"bil.scihpargjI) }bJ5%ގۏؕա*ҴA_ʅȴNÊ,пvʻx)ܷKƲM߭~S+ƥqd[VUX^hv֕Iw[4ڋ4\Ȉ8'(<̈́b@邖H|B ܀gJ2!5NlJŁ SL q܄L99L܈q K񋝌Mv7Ƒf=ؖ{y{Ӥ /T}ج @y5y XO]ĀNȸ89rĸ$˓u_OFDGO\m 'Ca3Uw) H f&:KW ^"#_%&[()Q+,A./)12 4w56K89;z<=8?@ACCDE6GHIKULMN PDQxRSTV)WMXnYZ[\]^_`abcdefghijjFkllmnXoppqMrrsVttu7vvbwwzxxyyrzzR{{|||0}}}~W~~~1[g>~~i~(~}}G}||;|{q{{zzy$yxxwvcvu*uts1srqqSponm0m]lkjihgg#f/e8d<};:8J75s431 0.6-+D*(L'%N$"J!A4" gJ ,  {Y*t(> ~R: ?ʒAPc .Je N A =b"0< \1"PI#( vC~R g_in\)/5Xk)]xRBDj$fFT0 W U zEM:#4(`E[$<8p(d+IFGVϫ)yDe QCր6|D`$ <> ^ü" l='0C`F]o JkJGCz :"3gS⺅Ah2>0YAHA2F@ 0,\uVRP nD31/GsN m&NyS#,u8;tW>'^NB;xtz+)S;@f-Dˑ h3]Dž~]B?H3[[_cc^>0cd)/ HṔ} r~4' H33pA319 Git77f0K є* T&#N }B&0@HU@1:k*: ? 3tG EP T 9%rtA<>vtrp$" z G|-|j(:0a&lHGFEDCBAL$Af. |=l!A|=.̾t *8-YO6SȄJr5Ȅ-J scSrRpA3l ph>!#`d `+ǂ#$¹N5ju@FL.G zȑP;h,,X;ҋH^EXV@ a|=I-`bCQ8<e7K:6~@KM,D"yHa(rzϬ%N$bB@L"QC:ʘ"< PX H?LFdCӁ@;00<0 VhKb2 & 2cAAg@"Np Cx,H  0@HU@1:k*: ? 3tG EP T 9%rtA<>vtrp$" z G|-|j(:0a&lHGFEDCBAL$Af. |=l!A|=.̾t *8-YO6SȄJr5Ȅ-J scSrRpA3l ph>!#`d `+ǂ#$¹N5ju@FL.G zȑP;h,,X;ҋH^EXV@ a|=I-`bCQuAv&~}|{zyxwvzz6arkroom.exepuwR9()HzHI TXH&HPK,x/xLa WQH&ֈPK.PK n (g @BI<,Eh|zVJ $@( Df 5FRJ $@0g\JS@gJfVJ` DgJgRz TrHAgT$N:Jg"@" ((IXI f*I g/ Dg6$A(""Sf$W Be$Sf$W ^"CN.t%XX`>zRb45F/M@VK &@" AfPHAa8$ RK &@0g2a$($B" ӒS@grf ؁`"MYSAe"Q`XNu AgrHAJAg"_Q N.ANJf ( n%eNux.?LNuK|x~z$K" Jga(ae>t0a$AFgpaQe$NugNu* NuDrgQNu* `0ap54Ffaepa6paAGg`a6D30Q`eNu NFxFdp& :BVK sԘd MIYF dɡ0=$PsIY3f|Bp~!_B\Q 3>!_YK~ė),8x (;Pq-_(?`@ox)DHP} w# ˘pfcAf|BψU?,E$?rN@ JTB*%D.6&:*2"<,4$8(0 jh]@" `2 > o=@R 7j3В`@+G0ܼ@BXdMCD pI1DpBCc AX=4=R&bM#o@g-ċjO.(v`p|p\btpC/B߇+nY0!1ɘ `2p N B3V@.B ?Dsh$@u{zԟ(0*zd & l$E )DL( ; be`e`f&(FID/$Gc MNBL&>NOI-'0 čH,C@PJ*"ZQiDPRv ?$^.>ZHM̋mfn"^l"f@J"JBolI߂i^^̃EBEREJGYjF~8Yg2ԘxoH yZ"B`/PJH@H2\wDxPqIqhide8  H,xP.9 imfxp (&L.pY?ч6}F?‹g0 Sg -1#" BNBP  H@D $pg$C@O`u|ҊhdN(`5 @ABVDR*O]դihX8k2"jkB`h#'0\`#qNn3BXľF\C## 2<$^X%Y#)@͙+ 0442"(?r#0tB#l@{yzx@vnzh+\\1f`b`<6@b=8$ 6 \#぀ ֆ" z,`}J@YwE‹&f@):O.Ȭ@EL@%4 6 %:?3ʎN%h$UjFYhu7/7BxlMy5gz""P@@f@@O/K!\a (ywu~ J!7y`πV~*RN@"Bv~B}}s#^a @@ ?fd !aュ7$|PCCkL A1`y@IL "?NH^IJfRBf@nk)?| !=n(=~L'x6 ;aEI@PE` 1o7?lC瀡@ ?$(Pp@ Ҥ!$!A888%q;A^h-8CA[ A,/"a[~@} P  j<RF &'DA.qSÀ:}|ZzI KVB &CT1XjL3!Pլ O@+(!($ԛt00u $ AQQ2FF* TU(W( i@Qxq&tAxF*"dD MDc DA/c#·ps0bW@ @ Zxkxo Gqdᮌќƕ--@DZ[hAV'/a'(+WC0yRB|<F@@ VzC@ ցK w whsd)bT]7Ca ,Ah0f4M@2 tM%dMu(b pX]F u +FЃ@ "Ty$@HИr@- HAH&)= `82pcF$k^8!y$+d^@@@K~ 3H AH @@< BtDAhbdF6`Dj@8xoQE' E.-CCCQ"2PZ І (ٜ  DX ֖>HL<j!1̱m- \)L*u(f "AŠa? GMV&GG$p8##W;Y$gGG3 $sl DT ԠZ* <Lʠ   8 Xu J<ѩhHpp0PMИhHzRb|,4Xh(Ib@W@@@.@ @@dOk=ŀр2\?TrRbB|݁NRda; #9.vF:Jr504PT=B4@27.670`GF: s^#t>=@(4-\js K<߀KE`@|A]k:*C뫭 ¯ 4 I$u (-rAr4|o܏rcg_69_vG> ~s7>/8_p AET_h AE4_h AEt_pAx0i4`"C /8`C6 /8`8_pX_Xpϰc x:Y?h_Se Rs$J:u (x/x""h Ž@**O8"hOY2" T@h]82@?itzHC L‡@X42?ItxUH \Ç@x<2?qhA؏qF@poD~b=# 0 .;@(Gb#Ο3:u VvS#A9BB>X+#BG~<x]N8+Li+t҈1 YdPhWA\:S& ~i|@~҄1(ݧW!]\U{iJC*q6_ZVuizrҌ13HifX`Wfa^S Οd0*fBAAylu[@b }* ԭA)1/2 c[@r 퇻 -!%uiD݇l=V waPFÇ9AXe =p7:~8yEx Ag$p6?G=8QFXpU`up06ᏸ~pC @燯 ^q {+|?0?`  9@o_  0Xp2 9gz "A\ |u|t7 0n`ׇC^ |3{!!_y C|JT< < hxw/a]|z 63 8vp![ð4"9ExA#HsGÞ`2/Q]`!,/lQg}gLu@6nh"M͂]H:=>&5C;cft›c@%+ɝ6< ufK!tg ~rB;(=H. oƆ ?3` gB>>tgC|@0 `0PX ""x@,<*'L :$,A)'J >d,,+'6 9< ?BxA p )LC$VC@e U8 hp(aX (SNl4 8hp@/ 4 d R#FDh*0Z 4 d YRFFp+ѠPc@@ &8 hX,0*M4 ~ yR〭G~`  *0, &&0 8/S&`뷚|,?c#x@hxAߞ"<#n#dD܈g<*vsj>x{ܳݿK-u6~pL`|^l]:ŇSc_/psv^>Mn ^N}å9P5?۴i:+v.1ccA݅/a.?t}M[~fyG߮ߪiׯ8S혻=x/8!-vz(ǻvzVjnU{b6jk<5ŵ;kn[T[!4_iEW?3qt\^S31s}Ⱥ޾+eaa̘nT|o\LTuTΌF}V״mUg"aTxYk fSVW5[;#Smb.*RޱQMY՝^9GOuC_ Vזzx~O.HHi-jhJ*mc:ѶR-$ITis:|fXwtme|q;h{lzyqg3~:]p-4(G|Ī|%]_5_xDnC bYUΔ_^)*e5!vnGn5o=ǵ+̄# 8Ƿs 1y"?wy; ;'QPU5DE;*]F/t$ ]sVΙ4u?DxFC?;e/|S^tvqw,cCj ؏X"^d"EpkMmwTMWT>oO>.~[[ue9H&>w32ZjD/ߏl`7bcW6A4 Et9b@laC ܧqu0fse=9 RJ\9z|iEFH- B>b?;Of qxِv֝">Oio/3=pɋS9(ckuґN{NRPĭ]uRA@nG><3uD݉tqWq_㴐vO}~vv[]g|v0Eo]ۉ5k_[tS5?O7w_ʙ=IOoݚdjb5)/xb|.y2Tۀ,rUug]4 ml'jwc2k;!9$y rEDUnRƺnk2dԙoj(cuci[r ir8ad4S*[lYeg{lV3͜=K!1߫10u$g}T 8*P+ƪ&؍@sO Vk( ]ZU1A@X'Dčk1 X^}Ӫ n;ΐ)ǿ^[r8KFtyd8 qZ"\4/T9:2'{P/iZgiەeIV gDqA"Q Q?@{S=>vx7gB8 8͉.@|ToH-oWkʃLb} J9ӷ7\a NV VHvxmo.ω%ּv3Pmkp7mHnѥllwU42CVuT.7>Z; Om"?CikbR.zӻ>6 y̪ԊO"Tc/knvv~17'g[chCbe#ikkv^5/{eludm} }dJlmGZ5E$չ1u5њ՞aӛ5mA5Ρ3Q_*ٟ ({2PNn,? /NGv"^y\` D"4?A ʿ>ޠbFF3&x}ɩA@ׅ=!JEḘ%xb7:PA;Ј>~=`lGa 7 y:xI_WD #;] {lutOx粍Lnؿ8 Bywpj;n]rw,ES-rEDDqqE? ]캞DV3 x}0mH/".կ#1PWF#P(G; #>t-{aks/5GObŜT>GQqȏ0=N1J|l^`%.?{A);s[h`HRx}3 o-~#Cfd}TGڏٻş߹ߥu[ ILzOv:N/͏t uت"ߍ"0P8 Go~nao?jwO9X{M08"\Gi9ow2ˎ};WjC{w#|πz3`Q4loQLgEk8XB7fvIP;x?s؎vGvyn,3}k7w_'Oofe4<=2Ƽ)!9H\~>|>{PyYQ~|~[\B٬{g{kTce:r>|Sgekk!{h56gH36vj6?huH\jdwѸג^[bruW)Bգ6F9޻⢲3zMc23Zjڊq>U%$Z*UD%)Q521ڕfu]eeNEAn1U,mbfRj%*mm,P5Zj wy;M$l 13}{LmRdjV1 v7M{ַ rmj=YgiJ)ն]Bm)zWulAyl JGz1;_Q]k1-%:D}Ǻ5-.(}כǏ@g<?7{0`n~7[.3Dſ8~ x uqEO.C+C~]`4 ;R7 ךz;= =ݏLRGm\Ao~Bc+]̒&/M{ H^?ϴw/.fGxP[bƬi\AB>t0 lwL~!H1uabѵ\{?;5?]:j[sYbg㊼?;[rtw=z*{v_=~w0)Zظ}s-9kÀj58Jg@ qN%xW"=WAF`o,q>G;ڷ;Q[p}CA9LAeMnΙ֓#4I(4悺s:n~%v{\͚m&. 3'R= р q\BkUY?U[Ϊw_?)ˆឬ_5S՜T1We{LsvۿK.Ua,a 9fM< VwSHUp dpgVՔ<9ǰuTzltrW[WulTeT3%1urɿ9V!lu5W}Va7wd[[Q+E"]_F3l].+V[_lQf[3medq3S5q;]UMu;0?u[`6 AG>.Ƽ~mW8|m3j6 ?_c6 ꚬƔ}Wdb-B`3gndeEب*v \Wn@Z&UYEg9jYw6dkA:QlW(0;ZܙX= }];BCmWcgg2vvp`n4py~Q wc#" s o Ryc`J]NЂ`3. \[YI8{]}P4~ۭ[ͤs߰?Y*͈nOhngq~|r,gkec&2uf~qv''gzr~v&#k>~z&rfKv.k~w?5/M\iˇʪx۴ ͟ 츩Y6b>}1Ժ-ayl"Ly PUȆ S~YH]?1d€>!G,Eۙ͞_(Ex [ۦswUu]kkPLACCDo^ dej'{$>dϻw{q<ޚ{{62vmC׽{ǃ}@`Аȇs 8EȬ# eX@)C |R!| cݪbu(g5Q=S^W{7;Z>.kك>?팗&o]T!0o[ 0YQؐ?;s.A u 6ewxw~zkz;awA-!d;ٯD ÷K7b%C.#yj 8_/%L~\aaWfuo?z~۶ؔ(vbv2Ftjq[&ݡykyԅG܇d5D)CEop`øQqcW3 ?m!cq 38L[5?_#9$8ؠf*&>d?CQ@!c'ݢ-0~;tzO b ͐/H ,E#\?>+c|é ?2F@cϪ:QY/`xMot>`><^~u?Oh+w8=~V3e&;njˮb14ׂ AOac bw746"hr7C&`;uWHXHp>?c= /bfB 22yţ]h i6Ύ.{a!øo+EPIGS -c4x3<}`~B;c\v<{$>aȃ~4>#/}`(]G?XZ`}~&O]MؙV7[@݆pGmL1 gGA%9w{W]!Y57;۳ugj~<滶j˽z8,x\ۍ.n&HG0cXuzz̬iH>,[}cW֧ ,OlhA-K{) @Eͦ//6?F }woCc_U"?m6duu}xO 9WY^Ji>jxu! 5Xvw_>@P]1P7[."^[`lٻ]u!tlB@[qKw^zn{9Pe?q0Ik~h۩ٯf{mأǬŋܳ0:x@{%R?slFLf.Y_7Uuսq?_<m?g\mO9 L]OڎZ؏Yhjʙ+)k6a>rv3&3ژ:853޿Qb`Xmm E5?o>?cuձ5;?kX-1[CZa3*ܬY@͆Ϗڶkgo; ز,-ޑ+Uuƪ1~Qn?߂߾ļc=_LOԒj8~\=f߸EǝIiD]DFCQuǝ| g>2bu"}I8}wmv8 B9:@_]ek|H_pOQO1scD8Wo÷~<<)ϐF =Om7qq~rφ?d`=IV6?{ ;wwNjPRm+ڼ+Mñ@H{W߁Cph.dJ :{-A1sE6_T)hM@NLe[/7w𫾉\R#g-֋AĮ1v^7K3xq}q1" 9iG+Z_z ѳ`J*;4"yY w#Ӄů_xĶr'.:K;F 7qoj5g[\ ߌ!#sNZXUjd9hOY*zڋ#|$7}ØX u#m{tC\<_YyTfgVxz9;;?UscYgwl۶m`#kڹ*"3̍Bߟ욺͚ܷM5m*]2GW==8]XBi陶snoqonvF7>_>r~jgoo}0z#O[Ч@]`YmDHbq >!?*A 6ݹۇިGÃy^ }.p*,_\)u :{xwxp7[DQ,Aȼhc;4(x2*˿t A]\Gy7(0pVٸBk sH uu${#a?@r bf+fxAS! ahM)'6> `47 ns57A06wgZ\Fg";>C?żyOoŽ^w#s#=ce-..cl&$-4' zӗlŮ lԟ9u&F?c>eXq~8s `G {(Wf!W*n;0ۡlC٩ة2Wqc{?wq秃6Dl#~osÅl^ݶw]~ Gf&nûcNC&Wzvx x`g@ Ve?PƘ\nЂHS'x(O]zqgblIt=e !^j~N_ `sOgo_|+{|vlq[7_Yod0x(0n$4?x$@g% "Υ8C|v3.#2;VH Xwa(xn4jv1wq6sjwou'xogE#ln<< ~"wVv7"##h9#i<D{|wXa@DBz J'۸ՏW{y=/.#O#G3''a~ ^eDX5~W{ {eϣ~/c8苽-5Nw=&2j.=#l9?.ףO~lG3[ Sq?08﷏  X:H{wsx^?73m~w;wcE~χyŐ{[ܿǷjʚ`fu($3[z??~/sq{ߦ?osx}oX:GW~1?;5ַsan1~+˳nb6ivr~v .΃Θ\uŏ )רٛ,O [ n,o86wIx O^yUϠ֞^XOA[4jV&ImhAXn.Rx̕L/P۷ou`-^8힜!wJ b glNY[:꫌N.n7^]ٻIL݂ P@|1~ޏ12~7#p:~_Ϣg i/œAyp̞ϻŻX du)p8]=mIUnn=V1n0$7"VI088(WD~?X_`?ǟl=|P44Wx Ff,j> TltwgYI T o[k43LF=(!ցgdݹ9`%h-tB͛R5Դ$)+ aUĄFd@\Ak1U\R)եf$)t "%i:mmcR`$. w^2Kqd { B.B*x=dSkMN."l8XU p`j[.|M(Qdi<3Y`Aa'!, )B3cu*;?` *dӐ$ڒI+ W Y[ qN66#b""!c (2#`+J "bV yƜو_MᾹz_߮oڏ+d~[tg@p1sky}.ş[ǟ] +X=5Y ]IIֳ+ѽ ;""s==] ÿN}f,5N Ϭ7\k^7V'\^mP\n-F"CnpF tZ}O})L8PjW}`=~8r}613k uUcn l:] 1=5ó5wHr P5Ve?{ h_S u+Q؟Wu{3,u  5/vE.6t'AE8ރt2^s5?DR9Sק3{ 8}ؽ׿5Su<*]'w aM֤ÿ?_Q؋-7}⛌]왉m ڛǙ,_'>roMv>cؑݶǗN9]_2~O;,{^|GN/O8ƞHwʷqjg;nw?ķ~@s|;c&vq7,mxc|,\,Mcnwgv1w>nlZ~g>o{nk>4qW.'~vfo*?~nkwa׿?n7~Zu-danvࡗJ}w3o3>6o?mk8xćŭ貁g x?Mw"|v{zjcqvuqkqoZqn.YQl5Kc}i8GKq8]ٞڜy|ܞ~?\ݦ[ &hu}4 Gy8Xc.j2{j09߻zɇߜDi* Vkrg!쮧n ށݯkGhC|=q:w1uwzLLAMjNaw뒽g ~ƜFR~^27Jvw붪q3a 狼{Fmk1qgb1gf{u.Xh~o릏{ho&OpWz?~mk>o~iOnk;+V/~2g{;_i#>*e'}_7'yF߾nˡ/Ͼ͝Zݥ\G݁ٞvۆY߅߻٭~㫏Lnˏ],̜hy fYw=wsǦ7`{uqϸ_]t;^'ݝܴMŞwxoƞ.olI-[oO;Z>7~7;&Wsrp+gSsK繱jC.'+'T{~=s?o|~fsv&nk>w~/vvogjsp1io"꾷k6s'̨>kq;cެvg>3s]٫߯ڝ#+㮬hܹ1 lw~$wf?m?6(#<{zLv.{;mw`z9 ͹ޙAMc=:osҡpjy'ó~v@kv:t>>+׻mrc.Z|0MՖoG`+;S;ۭv;qmWjx1^[1[dS_. ?sc-Wv ]vw[{W7'5;졼f--vvu0~g(Oc}ͽz5tgn}jݍk}fG}TuexWVHWVmGoodUI]iGWugU95~ͯl5LLUgmk4경6{`&b7lK,ާferfB7DnƷ^GuZ~ -b=)Ŏ9?չ ȁ|鞙-kٶYG_9ϝn>K{g⚸4꽹X׻;v/}盽_Kn׵xu?:8n7z>}knձ3Gsk1vsg{C}czjaݷзN6f:x#v~޼G7FSok}#W+'Sin[e+K9oiٺޝ_u1dn5׬r]ٿٵߜӯ{^ ^U?v`^w+?1)ħcrvj[b@J6 ,hz^gnsfqww~?un?R~6|+pgγgg{gw6owe oCٜxJ7o:K\-ɼΛ[L ;oɺ)EƬ\_}L{gwO?i}=iqtZcww,3X;U+qm_]uYn'r{te"O3Iv5fZtFmMTtw}wfg<|l5]sgY50u͘w_5)pa&8u2aQ';b w_͸oTO'wܯ7; c ?q7۰ۏ #_kt jXQȾb"vWGM`zv|&B^]GMvln=MT\|RU͠}n7)սfa~2+ަszP*I[ٯ,#"s\3u5jgfwWfK0j.!<9٦cu}7u3py]wؔ[W7.Ǿ {?uUu3ݰj?w ;y}+m?|ۆMunL .};`?K}7i;'3=5g;_ss9c=S3iCkӀ [m;s zƣgs ըΪAf$tU{>Am&Mt|vM]6շ`]\Bztw|.^O#{ ?]bgp[F}|׮$`|,\`a] }3Wv6ؑk_=s 1Y?X7[v-l׼F\n}T DN4cpwjvi272PV J3nqamPExJۯڝݸCX,+6 }+sGOcNlv35u0u4횜9۰5?31]#|<v2=q>1x`yNvu\nM\H|[bz /}f5Lm~<VkwBFT 5X?]񿐻u4Y6y5W{9]YfmwoCWl[umCNb5m{;Ln|N\^cnn.Wl eov7C= q7XW[;s}]S1$,;v7;>1 {Y[G>d TfMZolnj6(q6=>TC<3ص[򸳓]Sv]^n\j5W8q??Aut|_b$B>wb?%-3 x7=Ѻ]-{[o"s9u5-FccW[m?ea5;7>?| ޴e;S19V1ʞQ9؛+W~P_wлc| ]uSU3=ӳQսs]{뉰?W?;WsuwU3D?5i}^S_r}WI_ 8{Q 8=zw{ dZ!x׽z7خ5v,q Vo\w|7<_LuǻETzP3zv;Zs9ۗ;9w2o-93{Dn-vv6N\>Vv<<@V7|VOxJvX=Nv-ï~52ݬi %nfgTp7ڢW/A?n|\Δr#4mOnnwOJ]Ǿó5'؋u6O4šnNvbwo|Wt]/qVei"n=.߽͗bj[lft|լWלoBOtBOx4xG̶G;U|/8WV[8s붷m17?ߢxϢLv|~g0k&qv9j$сGk-`.uDnBFڛߍFӼ.N6/rbn?GwX+Ngp x8ۘ6y7c(H~ cc;tcu8 vru[3~R?WsE@atnF~sZ7#x6幗};x~o[\5p08Rgqge1\X@oLڑޟy:ޭ[mM߅zށڝ\y:w&1{~?}Trjbo au' &n/z?~j_z}9[oݑٛ:||ןJ8_뚹}M_ݙ򙵎 {M zyz^DzC38ýGٹ ߍ8[ٌe}ߟ_wnx?6{kDfg\?RVk7fufLJrHkzn^=ۦq[cҰn^L^u9CÜKg7s*klzkbzncv%a vw[qw+w7}ɓi}Ϊ{ꙧ߻ 6ZȀ'ߌZŞ/{kk^Thn7Yݭ^O3{~wj>kk!?w*#z-{9ެ,u՟ǰܻ~<:9^Ï0˻duϝ*ٝNoqnv4rq{v{2~fw'|Gm㾻{ nzssV;߯,YعyqKWa7s7!N{؝{Ԡm߹xڻŞFz.u:3ˀAۭP+;qogn./`wcl5ſ{ٟK?LK9\~,Oo߽׬[ũぺ5=iX_$v11l>yl7mAw'#;!u#}}v1tc'bAd!,3?]w;]_I#6SmA؛{W 7sݿq8,u_7WE?q5[:Ku?{w60b5U{a쏃M6]n.H삝_ym[zkMofm"N>}wsc;S8}{ Qg3}k+Y8H|A֏{_1۽sqX@|w}ۘwPO=7 K?_d[uxن39CqS_Nu;}]>8??4އSӍw {oUYwP{[=~Uw{;ПSySiA7nP?ogV]_އ;7sX߈7>`8|0o輛ؾ _Ss?Y7sa:OF[v4] M[ά:݃靟+ k/@{~k]ͼ)C`z}ɜ_]9nj|#UWٗ!㹝#$ 6xkg묾y.c#"7jbnB4C mXʚك: JD6u<=>6u{F{X pZ$Lr5j0./,*Z 4Zg}5jv맺6YRni.VQÖZ15r㴃[s"]٭ڙr".[j& fe/wvk%fDp.ӕ*B,2*NLă*-N3" Ѕ)#P Y*eQe.C 9Pq+2N?t ΀E *$Z00Ch> \Lj0#8L a򫳥uSaN!#&U!\QRTkfla&B^a[pThXApђ14JҀo cjH艈лgn"..O ai72u=Fa "'gl9", 8#JH[ xUʀM(NO3afOEf (pAMznSrj5eB#e9svu:Tv )Ę6YXYoM bRIQsJ9nIқbc;3ǴtƞTEj;ۉBQHQpw20ќd %Vu4u>trvG"A&&@dLYJNɛ lhx9T*Bs3#MlbABLQQ;)+L זl(ص !00 x;&.*[?QiSID+{n5,`ja4 wL(1v vŒ]ʂӓB?"V/N% lpNmxxm)yUfUooc'=tA (A%cBrрu$%{P-ЖuJtGvɚ[jeTӠqPɒrqW A.SSBgS&?SGAe.AaEED)ͮCNcCBi¡_<:c||?pk983f?99Mg'3 { c0|cc{u?Adp}1>Ahg# <|Cd|q^h&hYn @‘0roFOL@80TQ@/V0,_C_ `8eLbӠRBdvSx:Dv_y/xqJ׀6?9[3 G)"@&v 0G&£&H_ D"I0 &H˞9"A )G#~Ax8"  I`"Jd:bI"H"T#8tMsc<RN9Sp'T DFbUi`#:\H^(5(0R  2 t&JQhrfc9870 u@d>]0UB u  -d*6yŁOOZhv 9(SOA4!`PA9@q\Br '(М]  8NP`g.0 \`'q;lca"ȱp0IMpH!h`ʇσ N& &`  op@ &( T "8F#@8ypz8|(c&4@!BeǸ\͎a2\EE*j LUr I LD6@Od}Gq#6\َ'v#plbATАR"a4UJ"QHA2hٮ@#mO{}uAuG(xu(u'rwь& 'LoGdg1qȿ!;~K/Lrp(38 gy{x??z; "8F#@8ypz8|(c&4@!BeǸ\͎a2\EE*j LUr I LD6@Od}Gq#6\َ'v#plbATАR"a4UJ"QHA2hٮ@#mO{}H% 3E X7iSaa.exep[HzHI TXH&HPK,x/a WQH&ֈPK.PK n (g @BI<,Eh|zVJ $@( Df 5FRJ $@0g\JS@gJfVJ` DgJgRz TrHAgT$N:Jg"@" ((IXI f*I g/ Dg6$A(""Sf$W Be$Sf$W ^"CN.t%XX`>zRb45F/M@VK &@" AfPHAa8$ RK &@0g2a$($B" ӒS@grf ؁`"MYSAe"Q`XNu AgrHAJAg"_Q N.ANJf ( n%eNe6LNuK|x~z$K" Jga(ae>t0a$AFgpaQe$NugNu* NuDrgQNu* `0ap54Ffaepa6paAGg`a6D30Q3eNu NF%xx\G;+1Dl .$x2P6b P6 BDb@08Ch8M'l+wrv˂粨}bgإ>)G@hrh 2ŸMZ)4X s-3>= m)B?/0sI8"I}O $ ;wY_.6=OP|4A̗@I@:@*T# E,/Z,@_p(%H @! W[;΁ ټxh5@HF!xKD#Day a܌ni"{%ѻzN @ nr OAh]) IܩF+Ou+Q/WRXI|n|t'=P"(>=>s0;0x ~:": r1ҼJ?O^&6A) `gC0dfh@8 d_)֟0KLCǭJ`$@D B  636&as<8ddI^H7'xFGc?l?\bR}( p!_Q] شgz0G_LL>deVjZ b_? 캃Һzl=q!x`)'}|fvH]tOڏk> Yla/ш)h`$P@8jAͿ[w :btDԑz p8;$~IFa.>9 n~*&Ev`r<nݔDXrس>GHZ,~7_\# 5Z>">x}4ZU8G `Z+g(G)m 8(7ٖa_EN,9tBH (D/.9b:%zR.C/8*+Q^ {Fysɷ}̨\r(  \Bwn>/?ΗEZeЇ@NKů'Ih@{7}L'.7 hc'&t&E';甅0A!>9{Dprn4 YSP FM BU{#[L= <= = |_2D#h^Ev@70S?[ LlfPw!G^O!LR\PS~԰`wDҰ )@o_RU!nHaϧ!ŃDX:h`z\WR`0:\guD('Wzv>,zy=_[>dhsbTF҄V3%Rp;,/"!υI V2t$0̱~TG,'>0? -">(=2\rdN%إmy.,<88PA0;7_,r  d‰b7uO,8ِ0eMѰ@ $%TUl~ <>f|ZjkjP\•.Ǡ0Hp.ޮCQ+ fMt0}7=Ȥm"5 \].(}ZX8t32\",3h Dh ᙁP0b !wCqA>)N%@䉄NՐ0ר~>P^N}of[= `#ACCr @Jssc} ^Y}=n,L`` @p( ~f,3)`3Fe`j6+G;V)8_w 7@Gf{7X3N|>A_F>B>wi H~s#:8-IdFDd }v?Hd3 F#߼,h9Oœ*@O{"U"vm.ps'9 KfCl6iU%); LðHI 6 5 aG B)\O'=+z8d# aYS"SN~d "s:!}` #KBwMgr# K\O$ O騈0Fa/ 3 3 d0Ƅ({Sxq0a2R c ]x,{4^b|by!ӈ![(H` }!Lڅl!~3Td`pO)P_sj)f+ݞI;Xn|=Qv/j9Ĉ=\:̄d jQEð|H7Zb3p6 [ΔQ7/!Flta PI p H;y\f1`x30+IA+ ~@"|mIOLpP( 9S&lEF< I2 )b^zv!u/"n]y @{my4"q.h8 }jvMX0J4dd a`I pHXqI.`G''lD<] -4JQ@a@#3{3Ȏ3731 $lpty"3e &D}{e ̲|Q BpfL1oǕň&j:q8D; a1aS8rcB!VGҵTs#gP0cYӥ,*4ش@S;H`' J>|C ɑ6FL@8 9r2bɈ8V80`pPp0 U㩁IH?vC4QG +n~&[i mޜȼ(6{1! b8pcr,Ei!bCvfQ8$k< W$[ 2FUj~3<$;2.)pA٤ B)Ȏ@. p(nPd(3 Dfd Dt?Oh@7 HluH^C^@$!1 ΐp 0;=,_S?cPdP@t / $=$vxZj jIL( *P!2 Ř>&1d^`;`4T̏N4x> $$C";`9҂pRAA]t2x&8?g Hpp! 4K bX$l21 gR| 5꽐$`A5aaI V b^LO iX6P4@@eI68 p!3>T{%$5t$-O.lڵ G>þ:`HA ǃ a 8<| @u".mX  d ƅǀp1rm LO. ̝E:lP'E(v_P=ɂ DX)y2@ 0iA$5 b{s-A,&4 CoDhk@48:Đ1ELS!{Ȃ?p%FD* CpeN/ iHM␛!7O l(A cLH X7f1(<.!`0Dpx?XYN>%=C0&]E&@@͹AA'!Uprz)H?( dGt|P[PqPp(^DYFZ\btȌbQ#k`,i Me`yqeI@7 ~`PLP_C0ѰpXpGUHcȱ(*Xhe6=Xآ88x*[DD%$? JvJ^JaBADyHUOCIFDGI?ɆIBlLͲ̚&aAʹ}Sī ȍ0/h+%4&(L#2&Q!6(!/*i% /U,&)-###%)&𤘧H4dB:Q9u C[˨7'd`fxahetmdm|elarfbdzkn`i>`.fmA`Yljffefb-hkadml7eGobae$\ RR*vn^9 )9U}CS [;7c3k?` Ǟx\jkJd2)3lt2 GJ!ʢBʢ~2=@*1s0*8 Q F-J()@AC j5I pc0DՃIYN(@j6 JfFN6NAP-Hr9(!#> *~X@Q"!B< _(XO4wՕLLTPRX@SNtMC>ʡ_iP0E/++ ” dŇG{?y=x]/-~ s8$0  Jƒ@^ae(%1n"h .PDH@aI% *IS DdP<ҪB(0* +tPQU"rt*BEede|D$~NRVV A%y9M ^ TYTNEY@^UW0O Ldgxxp);ؚj㗲4d֏Al\us"堡さm\]- L\ mL mM `  <=!$0Ţ,IO[M>DSD``g`×@ ?9?e0>h>W _4+@*MQd@? h|u@9@ &-"` 0N`*[%B6,R** @@,F0c.H-PK (~ p܀ "" "-p@ȰGpcp!&B * LFE) KG')@ o _ 7慟`4򀉃5poP+h,QXDy8**~ `eB'B̑ #3+;FL ,DJ@ ` W@΀`x ]Aq1t8 _t?f:PCՇ7=4DV+3Fi20 d`'UK0 `%QFFMZ0 `%рG@@M 6OA'gy-s<$i\-pA d)Į?L#F(1{A ` &K` "APyrT0 NP tr`/4>Qg(?€P9@$ /6{yڎ52$3ݐp?!чۙ?c O<; wd1'o$ݯ A՞V{[s-<:ܐG)p owO~Gg#0`<|_eߣBߐ8!@pb~@gn?9#`~OaG % 7?+,?# a1z?Bw6?zpx|߿f{{?|Oyhz7?kY./-i;{߇{WѰ~ǟ<@<K0+#@ Gp uņAo;6C@I|`@@k?lr P9#W9(52 Gj\^P%#Nk>ޟ8<jÞ4!xndǴ98wٗQ>6i J R8C;Ԇ5?I ('~1N(>W~eaALh;v9(4z$YrOF3w|s OQE!wgw8#Ⱦr7Ey<uc2c]G E"E`17#|[g>98p! ʕ xan_?͇#>a;r1x@? ÑD-=dw ` G ȹ~çndl`g_A=Q>$'aEFbG|9Ӽh1yNoWO…ܧOoX@Bvz)ɐ Yi@ĪOxM 9, >,s :$a4os ۞vGA|8g={D1/ߐ(4{}DlTAPex7ďPl붊x1AkY?Ǽ̓_8a}Hl*?p /c%;!Pzw0]Nq\]Z>_U۝Oppl<x:{ۉO<I7osv|u;# {~<<|3O?{;͏Gx Oɏ?#{Wwqۇ`%*q~q|=Gx?#߀<_RŨ[ U?`( >0#8p#F>'ϤXx;##՚:dyhvF8WWA?ܙߦa`rs&? b1jXp5ap*Lp A6o y?^0ߑ =d ~m OO?\ѿ_d A#Ñr[ O~,5Z|kgY0q3{א ghD/`qxwpDFQgxH{Zx㳴!)rs` C<*q%񙟐x@d&' uO=.1# >=#̀XS ?Xч w|a^w n (ur󚟤Pҫ7o{ww8}gP^w, 2Fq?Eo|= xF gWw!$}w""fGnG|8ȁp2=wO#pyhl츏[Ǐ~Dww|wuKyGB`pNG>>CwY_ߎ)8{<0 ӗ߀??wxx3c@[wp)18)p/w~A|@)x}z!'~e<&ppWӘ|s+#8pdv+K~I)H HpP : p|[#]!lWdG0^]qW\GH_t~p 97,@z~&6okW -Կ~`A?&2~9Dar?0A ĉG)FW~g؄12#θw܁)ys㿄@?Y;C痙G9fG dq<T~@|͐P1y {#˘dqe4qes? $ z+r<#CNdws#N8>vG|2= s#?uKt&7{ y>>FW+w̏P= >dt&Y1G]=wea}~`^1|< B8(88&(8x&(8#| | |! q0!Î=  vz97-SɾQr [ 4~\‹07j!9TgFTT"? n@&H1FJ?#{_?s6?a-{^~;R_dY>oh C2V(H`G@H枰!$h ##87D@J nhx/r@?*ZFy -'P\r|W :4d@`  d 9# %yPOG4p QOU$|B4Y?O*V,5| i _OH3<|ӀN4ć4?'yGTP Gy+@>~OD<>ޜGho?@ryG  @hpc9 4s@+r9Q y B?h# LT0^h7 $H 8]4bC4YyGhs yyqhD` 8 H@4~C?h\ k@ꁙc@9TIeQru28b Y 28ABt{@Ԩ"WdkC!S\2@GܩHq*I9 5!ӃHÓLVHL)P-N ǒ>`r R )@K}JhJ[!k H(P#@`KB*\z<@C3=ܙIRFU$>D0BFiH|Cx PJGveVF(YNQ(=):sgsN&i@*pEAlˈCCCCA! &hݚ2ӓ^{Ź8 u@H 8FGABt=Gr2_qFNPNN(.xBÐ p'4puþI0M/ÐpuÎp c'<8p~> _Κ{EDJ#30:?[CҜ~Nj(pCL <.D?a$uǮ;h?3| oq[~p1q^.p1 C.z =q"ڥE\>W=~ d=ssG?vK{?Ogn>c{p9zKg<_\b}c}8^p?烯xxx=%aZ$0{49A#!Ǎy^pap|L:DQwx? 0P8?'qx7&g gqpngx rÁ'\;Ĝ4!uA='8F:]p~z{n~ äφbz] |7\>]׮9Ьܝpq}Á 'Q>@|z8>~8r:pAύ \0_>9GzN*~H% . :Bqqq00TN\$uuÄ|s߉:/Q'\9^\cvێ>~k$P<(yW<{b {̟a~'ǔ<Bq >Hi9? \wÈr!9;t} pup/uI\>p_o |o'&7Ns`87!I>aN$\\q9A|pok)R ~_G#!O>9 <"G?!vÇ/@8qޏ_@P|bQ!!=4\ᇉ>~B"q=ÿwn}xݎ [;1,4pdD=/p`/`p|C>0x>X%0%ݭs/?@. NG\8pq<us`EП'>xxO]ys<ۏ7pu `z8(E ߼.}a O܎xB=8:v?Ðxp p:뇞z=q7uÓ\:ĝp!uʏ8}p ? \?8sa NxxaG4? {ܟ8gpx\"sz[<{]׆<ӏ7\ptpug ÿ\?(_NNzpu>'\>]pu+&qzàÏ@`$p{C ;=p|rs~GGO7G}?}n/?{5' `1r܂b!@| T@ .(C,'!;wٳ|xC8܎.n3$%\=ps\>z9N \8`_xwk8upʿ&uvp]{qۏ`\>^u\r:Z5pÀG\?z\?]p"SxI\9]~\pq\>{x}ˏO9\| swGݸz]'#ʎ8&/ߌuÀ7>uÀp]p?Wp\<W.? g?ȏ^rヰGT=RG\?ǜ.zsa#@:쇿:Î~"|888A~\?_Np?\= ~n{θ~G\?J .. 34 'x38v8=x!' |ÌN0ɾ /  p389!Qp{>Q২ u(n?᧟yP>ǟ8zyu~h\9p <ð \>]p(t=Ggx?u?~0?ۏ?!~ ?7&hpgpl} /9xAr~F)]~874(BOx,|j#6c&|;z:'_9pK)L=?>kE<_ >?Y O= !}_0{l"Al ?i^l>`!Gz Ѧr.}~ bEA r?ؿ_/p?`_z|(|_[>ȮM`LL}^m!4 ~_^J%E_{Okv<~|r!2S{;H=@ `Wz?=@S݊;-}`Lӿoa.A<|xx-Ϯ*\ʼn= !K!/w߿  ǀ>Fp 9Ao@  7>?]i~qx=5Ϟ>99>_|? 9ùq?0@~9;!\G}v09"_X"bzC+A~|x.@ |*c6ogqK ۰$`>>x |~7G`o1Y}lx>L9\| 1@|~0W~']@~K?+M{>>㯯>|>[~Џ6/?+W㏮?? x)3:><N;L@Z,?΄xrH>]|sc$>DWH|  |C;aGAgӸ?9m_Ϯ ?Y8a m@لgCio_x[͈~''ǜ|w@ 1d/{pq };7$'A7,@`K^ '?:g<O?P_1Ǟ0rN~ON,]b`0CnȐ_?;a? !hxMc\ ~>cG*gL?о?S?~ /HπZA9`6{u`|x_{rDz6qϮGTG<]z 4?ʐT>pGn#΅px6oƈ>H|uBP ]/~8_> [>y@?ܿtE„E񿏂~op ~D? 7;H?|o Gt?|Z?ïё`b2$=Xss C<}Αߏ-:h@:*$x0~>7~<~soi|zsI>% <}:0A\6Gߞys~7x?>o|0>Ay}: ԯ~ oxg ޾<9!f_|>??'85'?_?7߸-+xCd @Gc??6oo?»sp$ k;!}?MLߎ-s?㔃6, =tx}m=y|'>?@.HKhF?0< A9A\a0c ~O<gU x8yQG~+WKsT(D3v?> i&?; ?B߁7ϼ %9[FOZނ(P``8>91>01;| :T>p ~~/_-J{=omѶ\rs޿$ =9Q7Z9 ?x< b_l~b -|> K<wL.QFHta`} boXF+ k / n>*)_ 7p䇼21@pB*E,*q:H /<#<+S  .)x Y2KuoAR}AC $Hq wÛhIJx/4d(  ' h< IQ`IN4 Q M#? r{)&('m>p "u,`08{ %XyH '#bCr/883y2{ > 2|aH .<9 /1/}$ yC@:nއQTH~ 7x(Cw~>ONHt\HqrC80`qb< <0u(Fy1\!だ4.!1a"3=G T p)dn'>un@C +)04Bjh>;Fĝ^?p$ m# ӿ=p q*?tށ|H}Y̐xJdNh:@߽ kGkdy *X |!=pfU󫠺V H}j-y_n'qZ)}@Ve=iO98Pk6@08ڿ'U/Όߣ\F ߿ ~AϽlo߿bh7}1DGy{,c/퀠@>-6G'7Ђ?x}1~}=Hpwn>(Q(U+_s0&\#JJ?Dh?5>bpщ%?AKR'p_,fwćό?,!zg@yJ|P X3> ʆpAw("p;wEY\! NYrn# ?z_0F@~׏@QzN1nA! o@`k$?Pd>AuӐ$nTć0z1?yHa`^^ʤ;z ;?䆾$ |ćhy# %= Q"C}@x@$;!hrDHx:00om}< wIY,D=, 2}M!7d7eAӤ9ρǁÆ )o.9h9\ $s8cX?8O o0w^a$j '1b| aߒ? .8J4oPбpF2A,!B4* 1@S_<Sn=&P{ފIB3O3J z~ g({M|zoz˟=>Ck*S#whO 519|yύCG ΗH~1ED#J4<c2C $:0̐BQ!!wh9Tl4||9> 4²2QRud EL yKypQ;y?Od 4A3I |?A*#.dt`]:d3E!V@{ZdAb@ o|qcINx`p$8h<( d`]=H}x't/A!7=8!yďy|~ d> a3sg2<1!Fc#@א#@GO!=:CHa 0!t@$N_4섃f=C]$  2< _ $:^92H`8  gs4 @tO#t衜HaHsb%"0~)<=)N< 3H,!F ! %!F` ' !Fy$202`s!!R23[[cGC9=i< tH20( !?CN1d>  MxC, wP'ݡ6oC @!30@!@80}p ?(@7p@YĠ@ rE"?M $19CT piѢqŒЈD ($ւFH9A9@#0jf0#Sd 7bÿ"BC@Q,$ ~xd1C8d " $#n }@#  BB!BD@y6(i@A_!G? BBAP`/|"@G!B @|A$ 6hY0,H?44 'T? Ay<CR@WUTQUP":"47PYՑ)!%!ёUya(`# TI7aې1(!@_ Gz c oɰ ɐ ~0xVZ |xW1!?xK2;0"'- 8 Ƀ0<060 S canLpb"Ls@A\' >p >;Q &ƅ !;@Ő t crh4ⓐ9; w(p0v0riB/:$@?('d&'&&8f>M 'B |@9 %t!P@M\L͗W 7^@ ɠ? ^ 1?ߏb_*`rO_S?`iOt/ dt @  #908BGF}`!S-M_W{ۅ H ˆ.( 2{XlRQrjPKN`0!IO1`=xF2 PAp2?[`ȀڗLb޿ ς7X@nkt_.<!xD̸2A|8(c veւ:S1~唿u1yA@,S?+3Ɉ5(@CR(Inyd><{P0*aM PB*&@HB! 70 @A@kcٮ=>!? <    u9sHPR A +?0CPUP*?oX떜ca 0P`- 뀀1XN 7H0<~gF i( @{5-@@=@@#@dML:4 0BH@R`pK8J΀D3;|$ iBc<$!)h@JS 0\ W81"P LAA !KIXAb2% `ԃZ\0@HJ p px#֊uV\,;lv DL'$JP*1NX"(Ь*J hT@r @wTXJ 0@3,@:@*  @bƃ ]݊,TbBR"p4+!A R@T@X@4@8@t@x@ @DFU BF A ;D LBt@T(2E;(=$P*1NP.X)A4!   3\ 4P @x`  @v3>S6H F)` $&PN`<E ` h4` 68`B&1>`Cـ&T0`gGh?Î@A;Ysa&9?&p82*߁3Y?rə"?M $; ?L&f9&s3͞!L-& 33 7ɯpɟ?`F`Y P& @| }AӾ  ) ^9 #B@@?cC >n] 0.O?O`YZ7>w~y<,<{v~`,q_rtq ><`\e#'||x ,A\/eмw<F -*?]r+s뱘< <`8/V@Ɂ`OB{Zc0p&]=3vE `рM`q?>~F`feGAUWU0mt/1xH^|l`uuT?8x?1C8>{ L?;>#({G0 O@ xwJfCA0y=a(> c"/`*Q>xjs ~?&=ο{q?1p?Ǐ89aǏο<yGc~cߦ^cc;Ǐ?k??Ǐ鏟<?~5g(@I0C?x#>=5P?87A<8_ ͬ >r|@ K?k󀾇5 Sμ8 9X$TkK32~"K:lLX,d_ A1MTWh/WB<Dg=W.D N[~M[A}};k'=~JV5;;%a\6mAlqYFbzl_?|Po GU׸Xki2BB WUv]ANO쟮b'Fu?ԗ?`r}~7VC#7TPn ih""800.G 2(yގ.N\0D; dH87ǧWoG;3s9Aś$u[I qdžfPd&B(KK-9<04' k~Q5#@A8X}zZ\^]g_Y?t ~7zds$'X^|A\g/M:,fY5iqyyAz|0̨ 13;51)-/,2*-*~AXTub &?YZ9>۟N `LmY:A~5|+  / $=JLbVi]sKkk{{SijTxRep !0?04Ps Bq2WU4핌5'C'Bx;JOO)G(I o1 H1V|tzsp [[7tۛ7yشZv?4ܽ -]|=1щٹX$~lklMJ/k<@TАgdV%D@WX8y?"]wc.m-wUddnб[YyK3QlX!D]lhk1jv~fdnA4Xh0o#^ Ѱ><~{gsqxucKOGUQMHOŔ\O֦ߴ}mqr`kn{|蹾!W8ޏYsvgscݭǿHrʊ2"L$?)5=FZtp7ݥٕͿga{l.b@g5z7|1 gu_8<̍uu=C2 KKJKI5).# THoWS}Ӌ=c |y3* 1b`A|AsXgX_%~r|z{iF5}wV'WD%$$d5 TDX? qzbbrfo ps??Y>xGADA? e0^v manngl:.Q ))q1I%A&?1 avvngN8>X  /Y 0 %oAX`97 ? /?19- .2ܑ/6NOz;;f֎ח秇;sutT;ۻP?>!+#*-LCQPQa|=A-\MKsvB   xߟ(g #08BB`gj@=nn-.,-.n^>|q,2|V8u2?L4L_6 ܃L6쁮Q-bC+*13kRIc>vN삟^la-<,!xCFb>a>`=B}3/_^(  )VOv·04bW^NAPi 8 #7q _Oܝ ~so`szcur ,:>Q7rÇ= ͨkg UC\{]*Єvyo]Kw>aZ Ʈ sF# )$@#чߋÍCvz=$aFPGynql|>mIHP  ^;ۛOT j~>ʴXLԨg߀4L-m \P1π]^s>{mr z 3 .GpOv !%)2 %/ wh+*:9 #(PKl6Mʁ (Atzt[| JI)c R0Ѡ|/ NSl5 BwE`$k`9q 1ISmf,xT"*&FRXGɹӃΩHLD?Y?gr[ό|?02 69  ;g'MC+7 x} ?8>}pY@RGg "q~cbuh ƜE.G=޸{c`bb#GA#&%;XYY8:XlX|A p&zR$0HW./{F@ AҐ sy3 /DA}sxldfcjPp|~}|G"e%'FFDC=:9=yP/AxFEF@Af@`p Pu>}yy{|`òPaư&Y7,{CLׂ1 b~K'H$rP?s}0`kJ%X.wE!d6zCr P]ʄ#̀GGܹuP>>HdpxMY  Id`T):#*;eĖxPoYg@t7@Q0n c2/ <""üB|0dX,4.ab}D4w , *пS!$n/Tf5Wo~$XJ897L"%LI//42N2=MTFU>^4 4 tAY4VG<88 ߚfJ0R)&0k&DY4<T`҂L`\yCHɄ#H,b` a{ a@+WEq70!iZY0) !o"FDA4HC2( pbAQKAdv+Я4'C s"F^M{qgI^x{L|<H}@ "<`T/%!*" jA48R؅tLAVPGO Gi@QJo08&@F<4'هP ׺C<)Ap(7`Ӏ<G̀&A ?`<]CHT__NdKF :&ȿTG} Np/ ṛ@D %@DπAπĴ-'=x4AAAӡ"aI60"Q a z% 򒹘-`KAG3CpesE[V{՛hY;_#B0~rAfwHdJXa=9b=GM- ``+`)@\JP;E7ARlSfLQ같/$4ꁃAA2U$hx#@\ s6|( 419AJpKHҟ3_4j\J4x5hm^GjɁ{{ς"܆Yh|P"ŀ%9Ά|'AB>LeA/_P dK'Cov%VYq`-Xӟ-JL#fF#D#B 2B@cT^$tʆs" 2Mă6!3T &!a `$J),[2 lMq$H'p")pB5XG e҄Vhvfv{a|bhhtՁ:OzP*װpD @@9 `9p8-"Oa 2l9ǧ*P pSlpf."IEL&a'AM\ d8p1A<*`/AO`4~Ǫ()0? o(@NW`Eh i.<5Ml--ގaj@y|q Hb@l<08mhSDS`8Hs ))A2U(Фr9!/"<+cO!jg 0@MB#`l Deb@[ӈ #HX|xEaYYf+4V(՜u?d` ìdž~ =gRc`P+2;4 ;>dIyy{5@\ ET&?^T ᭡P,ord'  p p0O@ t+=@M?&$\RB`9gF lDf 0M@s"e \"B1tR@!'gs3}f/p)78|U 2ğlḰplHU@SQ$ N ĉxEs+̐F. eaI`q:!LLH4L~B3oZ' 882 Р`ɀ&hl& !X'gɼ& &!Jhd ɍӲ ) Pw_(2Cœ F@K8QZZ"pj"a&*b.  9m3|WƸƨ/P#% 2rN Y# ɬ2#)ї`1"  `D ]] uw] /` P'@< pyb`xIH s`[30KA9 AIЀp@` c R H  p<Oݷ9 ')2#aKhalG(84,25_ #P/$q`i$p?$pqG#{A?9pG$p h$s0G6@_@ @e@@:@\@J( ` `/2 . ,@ @@@:@<@8@?p+41P&;: '.%`"`7)"  /! /@3@%@>@@@@/P ~28@@@y@@@@o[eqƀzRb45F/M@VK &@" AfPHAa8$ RK &@0g2a$($B" ӒS@grf ؁`"MYSAe"Q`XNu AgrHAJAg"_Q N.ANJf ( n%eNߚxLNuK|x~z$K" Jga(ae>t0a$AFgpaQe$NugNu* NuDrgQNu* `0ap54Ffaepa6paAGg`a6D30Q3eNu TNF<x\@/E""mr4_7A 5Adnx 39Y:9 x`]Qn,cHI<Š"@TGA а~;zP$x 6C'_@&f \vt&.? 0 `P\aIb(Oc*a`HRBm&*Oʺp@dx `? S8 AgrHAJAg"_Q N.ANJf ( n%eN3 hRun |pO&O(jdp N$"<I(l/ / g ,倲l"4(T`,2(jtp NJg2**p$A. J (F SYS:Btԉ#B`Rrp(jtN#A JgB$B(""0p(jN$) !(")!)Q #i ""Jf")Np(jN$0#p(`,rҩ$"p(j4NJf")N")#pJfrNNq "<` ")"04#AJfr`")"0p$I`N#A$!(8"!0"t !"&0$x8"!4"!") 0#Dr#A n($) ԁv0($(0(؁Hrҩ `")t0#Br#A n($)ԁv0($(0(؁Hrҩ `N%N> SYS:Btԉ#B`Rrp(jtN#A JgB$B(""0p(jN$) !(")!D \skip m5OO(jdp N$"<I(l/ / g ,倲l"4(T`,2(jtp NJg2**p$A. J (F < -gQ Cg cg`BAB@BABB6NN$06N N26NN 4@A@A3`3,yNRJg,y"|Nh#gf*z#&#2NPJgJ 9?gJ9f":$<ON`$N6JgN":$:&:NN :NBNu"<NJf":$<N~`NN2JgN>JgD#rN#fNB` (<*:H,:@N@JgNpNuNBNuNBNu z :ЈBg  f!$LRA`Nu Bv gRC`JCg*zNNu*zNNuCpNh#gNuBNu$< :g*@N#gNu :g*@N#gNu :g*@":~gNNu$<*zhN#Nu*zX":\NNu(z(N:(# HNu":>$<@*z,NNuA (|Nu(zHg "d $N.`Nu":$<&NNu*z"$<N#g"$&N":NpNuBNuB fNu zN#BNN#g.9SG"z zQ zN#BN#g\.9SG"z~ zjQ 9f0:l zN"zZN zD"zPNyJy!%ol3Nu 9f0:( z "zN z"z Ny yoNu::<>EFG g\ PmL PnF4)68BCDEFGHBHCHDEFGBCDBC1DAC`Nu am zn Nu Am AC Nu0Nudos.librarygraphics.libraryFadeType By TSM/VISION Could not find file! Sorry, you have not enough memory left. FadeType V1.0 by TSM/VISION...  USAGE: FadeType !&s@-Crgb Where r=red,0-f and g=green,0-f and b=blue,0-f EXAMPLE: FadeType df0:text -C58f This wil fade the cliscreen to light blue and types the text df0:text !'H+!.8Jjv 6b ,4R^h HH+()7D-,+*)border (*TE!!H?>Gr&a.a& :|g "@,xNb :|g"@Nb.zJL|Nu  GSg`CDrQ !H@<?gH ᘰ|ongH@off*g infog`&a4NuaNu"-A$&<c,zNNu(-"A$v,zN"-A$&<NSfNu :H@<?g ᘰ|ongH@off*ginfog"A$v N m hv$"NA$"6<N`f,.,xN*@Jg,xC:BNC<"g,xC BNC"g,@aNu"-tv,z NAC|#H EN!J!|E !@ -(+e@g @,xNA N *gz$@&j.Nur(jx fIx` DASf< `g g(@`pd"<,xN:Jg((@)|DAS)|`NuAx"P `g I`(H&pd,xN.(Nu(jx g DASf `g f`zNu(@`p,zNb*pr0*2*((D@DA J,zNX0*2* ((4*j4+ 6*j6+BCD@DA JN EN\Nu"-A$v,zNNuaIap,zlNb*( B (6B6A>p g0"@ ig ig i g i%g I`(( QJf EN\ JN8r ,zN:aTNua(,}aJp,zNb*/ G`r"c #g @  "Q&_%l %l6 ,j",j J,zN ,j", j JNX EN\aa J,zRN8Nu"-gAX$v,zJN`"-gAj$v',z0N`intuition.librarydos.libraryc ERROR: wd_UserData occupied! ON/s,OFF/s,INFO/s,?/s: Usage: 33m 0m