Difference between revisions of "PROTRACKER372 PTUPLAY H"

From MSX MUSIC WIKI
Jump to: navigation, search
(Created page with "PTUPLAY C��\V�W�Ÿ;RUN=CREATE RELOC TBL ;pt3.67 micro SLOW player with 1 table ;no ini ;85 PATTERNS ;no IY! ;tempo1 MACRO pp tba_smp=MUZ+105 tba_orn=tba_smp+64...")
(Tags: Mobile edit, Mobile web edit)
 
(Tags: Mobile edit, Mobile web edit)
 
Line 1: Line 1:
PTUPLAY C��\V�W�Ÿ;RUN=CREATE RELOC TBL
+
PTUPLAY C��\V�W�Ÿ
;pt3.67 micro SLOW player with 1 table
+
;RUN=CREATE RELOC TBL
;no ini
+
;pt3.67 micro SLOW player with 1 table
;85 PATTERNS
+
;no ini
;no IY!
+
;85 PATTERNS
;tempo1
+
;no IY!
        MACRO pp
+
;tempo1
tba_smp=MUZ+105
+
        MACRO pp
tba_orn=tba_smp+64
+
tba_smp=MUZ+105
PLAYER
+
tba_orn=tba_smp+64
frq_A=MUZ
+
PLAYER
frq_B=MUZ+2
+
frq_A=MUZ
frq_C=MUZ+4
+
frq_B=MUZ+2
N_frq=MUZ+6
+
frq_C=MUZ+4
vol_A=MUZ+8
+
N_frq=MUZ+6
vol_B=MUZ+9
+
vol_A=MUZ+8
vol_C=MUZ+10
+
vol_B=MUZ+9
frq_E=MUZ+11
+
vol_C=MUZ+10
E_form=MUZ+13
+
frq_E=MUZ+11
play
+
E_form=MUZ+13
         LD HL,int_qty
+
play
 +
        LD HL,int_qty
 +
        DEC (HL)
 +
        JP NZ,NOINS
 +
;--- nota_A + calc_next_position ---
 +
         INC HL
 +
      ;LD HL,A_qty
 
         DEC (HL)
 
         DEC (HL)
        JP NZ,NOINS
+
        JR NZ,Aq_0
;--- nota_A + calc_next_position ---
+
Ach_adr LD DE,tab_vol+16
      INC HL
+
        LD A,(DE)
      ;LD HL,A_qty
+
        OR A
      DEC (HL)
+
        JR NZ,Ps_n0
        JR NZ,Aq_0
+
_m1=$+2
Ach_adr LD DE,tab_vol+16
+
        LD (N_frq),A ;;5!!!
        LD A,(DE)
+
        LD D,A          ;;
        OR A
+
        LD (sav_SP2+1),SP
        JR NZ,Ps_n0
+
Psa_beg LD HL,MUZ+201
_m1=$+2
+
        LD A,(HL)
      LD (N_frq),A ;;5!!!
+
        INC A      ;AAA;6
      LD D,A          ;;
+
        JR NZ,Ps_n1 ;NC ;6
        LD (sav_SP2+1),SP
+
Psa_lop LD HL,MUZ+201
Psa_beg LD HL,MUZ+201
+
Ps_n1  LD E,(HL)      ;6
        LD A,(HL)
+
        INC HL
        INC A      ;AAA;6
+
        LD (Psa_beg+1),HL
        JR NZ,Ps_n1 ;NC ;6
+
Psa_lop LD HL,MUZ+201
+
Psa_chn LD HL,0
Ps_n1  LD E,(HL)      ;6
+
        ADD HL,DE
        INC HL
+
        ADD HL,DE
        LD (Psa_beg+1),HL
+
        LD SP,HL
 
+
        ;POP HL
Psa_chn LD HL,0
+
;ia_pos0 LD BC,MUZ
        ADD HL,DE
+
        ;ADD HL,BC
        ADD HL,DE
+
        ;EX DE,HL      ;DE=adr_chn_A
        LD SP,HL
+
        POP DE
        ;POP HL
+
        POP HL
;ia_pos0 LD BC,MUZ
+
        ;ADD HL,BC      ;HL=adr_chn_B
        ;ADD HL,BC
+
        LD (Bch_adr+1),HL
        ;EX DE,HL      ;DE=adr_chn_A
+
        POP HL
      POP DE
+
        ;ADD HL,BC      ;HL=adr_chn_C
        POP HL
+
        LD (Cch_adr+1),HL
        ;ADD HL,BC      ;HL=adr_chn_B
+
sav_SP2 LD SP,0
        LD (Bch_adr+1),HL
+
Ps_n0
        POP HL
+
_m12=$+1
        ;ADD HL,BC      ;HL=adr_chn_C
+
        LD H,'tba_smp
        LD (Cch_adr+1),HL
+
        CALL An_clc1
sav_SP2 LD SP,0
+
        LD (Ach_adr+1),DE
Ps_n0
+
Ai_qty  LD A,0
_m12=$+1
+
        LD (A_qty),A
        LD H,'tba_smp
+
        DJNZ Aq_0
        CALL An_clc1
+
        LD H,B
        LD (Ach_adr+1),DE
+
        LD L,B
Ai_qty  LD A,0
+
        LD (Asl_dsp+1),HL
        LD (A_qty),A
+
Aq_0
      DJNZ Aq_0
+
;--- nota_B ---
        LD H,B
+
        LD HL,B_qty
        LD L,B
+
        DEC (HL)
        LD (Asl_dsp+1),HL
+
        JR NZ,Bq_0
Aq_0
+
Bch_adr LD DE,0
;--- nota_B ---
+
_m13=$+1
      LD HL,B_qty
+
        LD H,'tba_smp
      DEC (HL)
+
        CALL Bn_clc1
        JR NZ,Bq_0
+
        LD (Bch_adr+1),DE
Bch_adr LD DE,0
+
Bi_qty  LD A,0
_m13=$+1
+
        LD (B_qty),A
        LD H,'tba_smp
+
        DJNZ Bq_0
        CALL Bn_clc1
+
        LD H,B
        LD (Bch_adr+1),DE
+
        LD L,B
Bi_qty  LD A,0
+
        LD (Bsl_dsp+1),HL
        LD (B_qty),A
+
Bq_0
      DJNZ Bq_0
+
;--- nota_C ---
        LD H,B
+
        LD HL,C_qty
        LD L,B
+
        DEC (HL)
        LD (Bsl_dsp+1),HL
+
        JR NZ,Cq_0
Bq_0
+
Cch_adr LD DE,0
;--- nota_C ---
+
_m14=$+1
      LD HL,C_qty
+
        LD H,'tba_smp
      DEC (HL)
+
        CALL Cn_clc1
        JR NZ,Cq_0
+
        LD (Cch_adr+1),DE
Cch_adr LD DE,0
+
Ci_qty  LD A,0
_m14=$+1
+
        LD (C_qty),A
        LD H,'tba_smp
+
        DJNZ Cq_0
        CALL Cn_clc1
+
        LD H,B
        LD (Cch_adr+1),DE
+
        LD L,B
Ci_qty  LD A,0
+
        LD (Csl_dsp+1),HL
        LD (C_qty),A
+
Cq_0
      DJNZ Cq_0
+
;--- install_E ---
        LD H,B
+
Ei_form LD A,0        ;env_form
        LD L,B
+
_m11=$+2
        LD (Csl_dsp+1),HL
+
        LD (E_form),A
Cq_0
+
        OR A
;--- install_E ---
+
        JR Z,temp
Ei_form LD A,0        ;env_form
+
Ei_frq  LD HL,0        ;env_frq
_m11=$+2
+
        LD (E_frq+1),HL
        LD (E_form),A
+
        XOR A
        OR A
+
        LD L,A
        JR Z,temp
+
        LD H,A
Ei_frq  LD HL,0        ;env_frq
+
        LD (Ei_form+1),A
         LD (E_frq+1),HL
+
        LD (Esl_frq+1),HL
         XOR A
+
        LD (Esl_stp+1),A
 +
 +
temp    LD A,3        ;temp
 +
        LD (int_qty),A
 +
NOINS
 +
play_0 LD L,0        ;smp_sl_env
 +
        EXX
 +
N_add  LD IX,0        ;HX=noise LX=mix
 +
        LD (sav_SP1+1),SP
 +
E_ins0  JR Ei_Q
 +
Esl_ids LD HL,0        ;stp_sld_env
 +
        LD (Esl_sds+1),HL
 +
Esl_ist LD A,0         ;stp_sld_p
 +
        LD (Esl_stp+1),A
 +
        LD (Esl_sts+1),A
 +
        LD A,24
 +
        LD (E_ins0),A
 +
Ei_Q
 +
;---- sampler_A ----
 +
 +
Avb_lok LD A,-1
 +
        LD H,A
 +
        INC A
 +
        JP Z,Avb_n0
 +
 +
As_adr  LD SP,DUMMYSMP ;sample
 +
        POP DE        ;loop E=beg D=end
 +
As_dsp  LD A,0
 +
        LD L,A
 +
        INC A
 +
        CP D
 +
        JR C,As_n0    ;bug NZ/C
 +
        LD A,E
 +
As_n0  LD (As_dsp+1),A
 +
        SLA L
 +
        SLA L
 +
      ;ADD HL,HL,HL,HL
 +
        ADD HL,SP
 +
        LD SP,HL
 +
        POP DE ;D= Nm ts ns Tm v3 v2 v1 v0
 +
        LD A,D ;E= sv +- N4 N3 N2 N1 N0 Em
 +
         OR #F0
 +
        ;AND 15
 +
        LD L,A
 +
        LD A,E
 +
        ADD A,A
 +
As_Vsl  LD A,16
 +
        JR NC,As_VslG
 +
        JP M,As_n2
 +
        SUB 1
 +
        JR As_n3
 +
As_n2  CP 31
 +
As_n3  ADC A,0
 +
        LD (As_Vsl+1),A
 +
As_VslG
 +
        ADD A,L
 +
        JR C,As_n4
 +
        XOR A
 +
As_n4  CP 16
 +
        JR C,Ag_vol
 +
        LD A,15
 +
Ag_vol  ADD A,#F0
 +
        LD L,A
 +
        LD H,'tab_vol
 +
        LD A,(HL)
 +
        SRL E
 +
        JR C,Am_vo0
 +
Am_vol  OR 0
 +
Am_vo0  EXA
 +
        LD A,D
 +
        ;LD L,A
 +
        RLCA
 +
        ;LD H,A
 +
        JR C,As_n5
 +
As_Nsl  LD A,0
 +
        ADD A,E
 +
        BIT 5,D
 +
        JR Z,As_n6
 +
        LD (As_Nsl+1),A
 +
As_n6  LD HX,A
 +
        JR As_n7
 +
 +
As_n5  LD A,E
 +
        AND 31
 +
        CP 16
 +
        JR C,As_Esl
 +
        OR #F0
 +
As_Esl  ADD A,0
 +
        BIT 5,D
 +
        JR Z,As_n9
 +
        LD (As_Esl+1),A
 +
As_n9  EXX
 +
        ADD A,L
 
         LD L,A
 
         LD L,A
        LD H,A
 
        LD (Ei_form+1),A
 
        LD (Esl_frq+1),HL
 
        LD (Esl_stp+1),A
 
 
temp    LD A,3        ;temp
 
        LD (int_qty),A
 
NOINS
 
play_0 LD L,0        ;smp_sl_env
 
 
         EXX  
 
         EXX  
N_add  LD IX,0        ;HX=noise LX=mix
+
  As_n7   LD A,D
        LD (sav_SP1+1),SP
+
        RLCA
E_ins0 JR Ei_Q
 
Esl_ids LD HL,0        ;stp_sld_env
 
        LD (Esl_sds+1),HL
 
Esl_ist LD A,0        ;stp_sld_p
 
        LD (Esl_stp+1),A
 
        LD (Esl_sts+1),A
 
        LD A,24
 
        LD (E_ins0),A
 
Ei_Q
 
;---- sampler_A ----
 
 
 
Avb_lok LD A,-1
 
        LD H,A
 
        INC A
 
        JP Z,Avb_n0
 
 
 
As_adr  LD SP,DUMMYSMP ;sample
 
        POP DE        ;loop E=beg D=end
 
As_dsp  LD A,0
 
        LD L,A
 
        INC A
 
        CP D
 
        JR C,As_n0    ;bug NZ/C
 
        LD A,E
 
As_n0   LD (As_dsp+1),A
 
      SLA L
 
      SLA L
 
      ;ADD HL,HL,HL,HL
 
        ADD HL,SP
 
        LD SP,HL
 
        POP DE ;D= Nm ts ns Tm v3 v2 v1 v0
 
        LD A,D ;E= sv +- N4 N3 N2 N1 N0 Em
 
      OR #F0
 
      ;AND 15
 
        LD L,A
 
        LD A,E
 
        ADD A,A
 
As_Vsl  LD A,16
 
        JR NC,As_VslG
 
        JP M,As_n2
 
        SUB 1
 
        JR As_n3
 
As_n2  CP 31
 
As_n3  ADC A,0
 
        LD (As_Vsl+1),A
 
As_VslG
 
        ADD A,L
 
        JR C,As_n4
 
        XOR A
 
As_n4  CP 16
 
        JR C,Ag_vol
 
        LD A,15
 
Ag_vol  ADD A,#F0
 
        LD L,A
 
        LD H,'tab_vol
 
        LD A,(HL)
 
        SRL E
 
        JR C,Am_vo0
 
Am_vol  OR 0
 
Am_vo0  EXA
 
        LD A,D
 
      ;LD L,A
 
 
         RLCA  
 
         RLCA  
      ;LD H,A
+
        RLCA  
        JR C,As_n5
+
        RLCA  
As_Nsl  LD A,0
+
        AND 9
        ADD A,E
+
        LD LX,A
        BIT 5,D
+
        POP BC
        JR Z,As_n6
+
        ;LD A,D
        LD (As_Nsl+1),A
+
As_dtn  LD HL,0        ;dsp_frq_smp
As_n6  LD HX,A
+
        ADD HL,BC
        JR As_n7
+
        BIT 6,D
 
+
        ;AND 64
As_n5  LD A,E
+
        JR Z,As_n10
        AND 31
+
        LD (As_dtn+1),HL
        CP 16
+
As_n10  EX DE,HL
        JR C,As_Esl
+
        OR #F0
+
Ao_adr  LD SP,DUMMYORN ;ornament
As_Esl  ADD A,0
+
        POP BC        ;loop C=beg B=end
        BIT 5,D
+
Ao_dsp  LD A,0
        JR Z,As_n9
+
        LD L,A
        LD (As_Esl+1),A
+
        INC A
As_n9  EXX
+
        CP B
      ADD A,L
+
        JR C,$+3      ;bug NZ/C
      LD L,A
+
        LD A,C
      EXX
+
        LD (Ao_dsp+1),A
As_n7  LD A,D
+
        LD H,0
        RLCA
+
        ADD HL,SP
      RLCA  
+
        LD A,(As_note+1)
        RLCA  
+
        ADD A,(HL)    ;dsp_orn
        RLCA
+
        ADD A,A
        AND 9
+
      JR NC,$+3
        LD LX,A
+
      XOR A
        POP BC
+
        LD L,A
      ;LD A,D
+
        LD H,'tab_frq
As_dtn  LD HL,0        ;dsp_frq_smp
+
        LD SP,HL
        ADD HL,BC
+
        POP HL
      BIT 6,D
+
        ADD HL,DE
      ;AND 64
+
Asl_dsp LD BC,0
        JR Z,As_n10
+
        ADD HL,BC
        LD (As_dtn+1),HL
+
_m3=$+2
As_n10  EX DE,HL
+
        LD (frq_A),HL
 
+
Ao_adr  LD SP,DUMMYORN ;ornament
+
Asl_stp LD A,0
        POP BC        ;loop C=beg B=end
+
        DEC A
Ao_dsp  LD A,0
+
        JP M,Asl_s0
        LD L,A
+
        JR NZ,Asl_s1
        INC A
+
Asl_tfr LD DE,0
        CP B
 
        JR C,$+3      ;bug NZ/C
 
        LD A,C
 
        LD (Ao_dsp+1),A
 
        LD H,0
 
        ADD HL,SP
 
        LD A,(As_note+1)
 
        ADD A,(HL)    ;dsp_orn
 
        ADD A,A
 
    JR NC,$+3
 
    XOR A
 
        LD L,A
 
        LD H,'tab_frq
 
        LD SP,HL
 
        POP HL
 
 
         ADD HL,DE
 
         ADD HL,DE
Asl_dsp LD BC,0
 
        ADD HL,BC
 
_m3=$+2
 
        LD (frq_A),HL
 
 
Asl_stp LD A,0
 
        DEC A
 
        JP M,Asl_s0
 
        JR NZ,Asl_s1
 
Asl_tfr LD DE,0
 
      ADD HL,DE
 
      EX DE,HL
 
        ADD HL,BC
 
        LD (Asl_dsp+1),HL
 
        JR Asl_sts    ;port off/on
 
Asl_plk
 
Asl_not LD A,0
 
        LD L,A
 
        ADD HL,HL
 
        LD H,'tab_frq
 
        LD SP,HL
 
        POP HL
 
As_note CP 0
 
        JR NC,$+3
 
 
         EX DE,HL
 
         EX DE,HL
        SBC HL,DE
+
        ADD HL,BC
        JR C,Asl_sts
+
        LD (Asl_dsp+1),HL
        LD (As_note+1),A
+
        JR Asl_sts    ;port off/on
        XOR A
+
Asl_plk
        LD L,A
+
Asl_not LD A,0
        LD (Asl_dsp+1),HL
+
        LD L,A
        JR $+4
+
        ADD HL,HL
Asl_sts LD A,0
+
        LD H,'tab_frq
Asl_s1  LD (Asl_stp+1),A
+
        LD SP,HL
Asl_s0  EXA  
+
        POP HL
 
+
As_note CP 0
_m7=$+2
+
        JR NC,$+3
Avb_n0  LD (vol_A),A
+
        EX DE,HL
Avb_stp LD A,0
+
        SBC HL,DE
        DEC A
+
        JR C,Asl_sts
        JP M,Bvb_lok
+
        LD (As_note+1),A
        JR NZ,Avb_n1
+
        XOR A
        DEC A          ;;
+
        LD L,A
        LD HL,Avb_lok+1;;
+
        LD (Asl_dsp+1),HL
        XOR (HL)      ;;
+
        JR $+4
        LD (HL),A      ;;4
+
Asl_sts LD A,0
Avb_frq LD A,0
+
Asl_s1  LD (Asl_stp+1),A
        JR NZ,Avb_n1
+
Asl_s0  EXA  
Avb_sts LD A,0
+
Avb_n1  LD (Avb_stp+1),A
+
_m7=$+2
 
+
Avb_n0  LD (vol_A),A
;---- sampler_B ----
+
Avb_stp LD A,0
 
+
        DEC A
Bvb_lok LD A,-1
+
        JP M,Bvb_lok
        LD H,A
+
        JR NZ,Avb_n1
        INC A
+
        DEC A          ;;
        JP Z,Bvb_n0
+
        LD HL,Avb_lok+1;;
 
+
        XOR (HL)      ;;
Bs_adr  LD SP,DUMMYSMP
+
        LD (HL),A      ;;4
        POP DE
+
Avb_frq LD A,0
Bs_dsp  LD A,0
+
        JR NZ,Avb_n1
        LD L,A
+
Avb_sts LD A,0
        INC A
+
Avb_n1  LD (Avb_stp+1),A
        CP D
+
        JR C,Bs_n0
+
;---- sampler_B ----
        LD A,E
+
Bs_n0  LD (Bs_dsp+1),A
+
Bvb_lok LD A,-1
      SLA L
+
        LD H,A
      SLA L
+
        INC A
      ;ADD HL,HL,HL,HL
+
        JP Z,Bvb_n0
        ADD HL,SP
+
        LD SP,HL
+
Bs_adr  LD SP,DUMMYSMP
        POP DE
+
        POP DE
        LD A,D
+
Bs_dsp  LD A,0
      OR #F0
+
        LD L,A
      ;AND 15
+
        INC A
        LD L,A
+
        CP D
        LD A,E
+
        JR C,Bs_n0
        ADD A,A
+
        LD A,E
Bs_Vsl  LD A,16
+
Bs_n0  LD (Bs_dsp+1),A
        JR NC,Bs_VslG
+
        SLA L
        JP M,Bs_n2
+
        SLA L
        SUB 1
+
      ;ADD HL,HL,HL,HL
        JR Bs_n3
+
        ADD HL,SP
Bs_n2  CP 31
+
        LD SP,HL
Bs_n3  ADC A,0
+
        POP DE
        LD (Bs_Vsl+1),A
+
        LD A,D
Bs_VslG
 
        ADD A,L
 
        JR C,Bs_n4
 
        XOR A
 
Bs_n4  CP 16
 
        JR C,Bg_vol
 
        LD A,15
 
Bg_vol  ADD A,#F0
 
        LD L,A
 
        LD H,'tab_vol
 
        LD A,(HL)
 
        SRL E
 
        JR C,Bm_vo0
 
Bm_vol  OR 0
 
Bm_vo0  EXA
 
        LD A,D
 
      ;LD L,A
 
        RLCA
 
      ;LD H,A
 
        JR C,Bs_n5
 
Bs_Nsl  LD A,0
 
        ADD A,E
 
        BIT 5,D
 
        JR Z,Bs_n6
 
        LD (Bs_Nsl+1),A
 
Bs_n6  LD HX,A
 
        JR Bs_n7
 
 
 
Bs_n5  LD A,E
 
        AND 31
 
        CP 16
 
        JR C,Bs_Esl
 
 
         OR #F0
 
         OR #F0
Bs_Esl  ADD A,0
+
         ;AND 15
         BIT 5,D
+
        LD L,A
        JR Z,Bs_n9
+
        LD A,E
        LD (Bs_Esl+1),A
+
        ADD A,A
Bs_n9  EXX
+
Bs_Vsl  LD A,16
      ADD A,L
+
        JR NC,Bs_VslG
      LD L,A
+
        JP M,Bs_n2
      EXX
+
        SUB 1
Bs_n7  LD A,D
+
        JR Bs_n3
      RRCA
+
Bs_n2  CP 31
      RRCA
+
Bs_n3  ADC A,0
      RRCA
+
        LD (Bs_Vsl+1),A
        AND 18
+
  Bs_VslG
        OR LX
+
        ADD A,L
        LD LX,A
+
        JR C,Bs_n4
        POP BC
+
        XOR A
      ;LD A,D
+
Bs_n4   CP 16
Bs_dtn  LD HL,0
+
        JR C,Bg_vol
        ADD HL,BC
+
        LD A,15
      BIT 6,D
+
Bg_vol  ADD A,#F0
      ;AND 64
+
        LD L,A
        JR Z,Bs_n10
+
        LD H,'tab_vol
        LD (Bs_dtn+1),HL
+
        LD A,(HL)
Bs_n10 EX DE,HL
+
        SRL E
 
+
        JR C,Bm_vo0
Bo_adr  LD SP,DUMMYORN
+
Bm_vol  OR 0
        POP BC
+
Bm_vo0  EXA
Bo_dsp  LD A,0
+
        LD A,D
        LD L,A
+
         ;LD L,A
        INC A
+
        RLCA
        CP B
+
         ;LD H,A
        JR C,Bo_n0
+
        JR C,Bs_n5
        LD A,C
+
  Bs_Nsl LD A,0
Bo_n0   LD (Bo_dsp+1),A
+
        ADD A,E
        LD H,0
+
        BIT 5,D
        ADD HL,SP
+
         JR Z,Bs_n6
        LD A,(Bs_note+1)
+
        LD (Bs_Nsl+1),A
        ADD A,(HL)
+
Bs_n6  LD HX,A
        ADD A,A
+
        JR Bs_n7
    JR NC,$+3
+
   
    XOR A
+
  Bs_n5  LD A,E
        LD L,A
+
        AND 31
        LD H,'tab_frq
+
        CP 16
        LD SP,HL
+
        JR C,Bs_Esl
        POP HL
+
        OR #F0
        ADD HL,DE
+
Bs_Esl  ADD A,0
Bsl_dsp LD BC,0
+
        BIT 5,D
        ADD HL,BC
+
        JR Z,Bs_n9
_m5=$+2
+
        LD (Bs_Esl+1),A
        LD (frq_B),HL
+
Bs_n9  EXX
 
 
Bsl_stp LD A,0
 
        DEC A
 
        JP M,Bsl_s0
 
        JR NZ,Bsl_s1
 
Bsl_tfr LD DE,0
 
      ADD HL,DE
 
      EX DE,HL
 
        ADD HL,BC
 
        LD (Bsl_dsp+1),HL
 
        JR Bsl_sts
 
Bsl_plk
 
Bsl_not LD A,0
 
         LD L,A
 
        ADD HL,HL
 
         LD H,'tab_frq
 
        LD SP,HL
 
        POP HL
 
Bs_note CP 0
 
        JR NC,$+3
 
        EX DE,HL
 
        SBC HL,DE
 
        JR C,Bsl_sts
 
        LD (Bs_note+1),A
 
        XOR A
 
        LD L,A
 
        LD (Bsl_dsp+1),HL
 
        JR $+4
 
Bsl_sts LD A,0
 
Bsl_s1 LD (Bsl_stp+1),A
 
Bsl_s0  EXA
 
 
 
_m8=$+2
 
Bvb_n0 LD (vol_B),A
 
Bvb_stp LD A,0
 
        DEC A
 
        JP M,Cvb_lok
 
        JR NZ,Bvb_n1
 
        DEC A         ;;
 
        LD HL,Bvb_lok+1;;
 
        XOR (HL)      ;;
 
        LD (HL),A      ;;4
 
Bvb_frq LD A,0
 
        JR NZ,Bvb_n1
 
Bvb_sts LD A,0
 
Bvb_n1  LD (Bvb_stp+1),A
 
 
 
;---- sampler_C ----
 
 
 
Cvb_lok LD A,-1
 
        LD H,A
 
        INC A
 
        JP Z,Cvb_n0
 
 
 
Cs_adr LD SP,DUMMYSMP
 
        POP DE
 
Cs_dsp LD A,0
 
        LD L,A
 
        INC A
 
        CP D
 
        JR C,Cs_n0
 
        LD A,E
 
Cs_n0  LD (Cs_dsp+1),A
 
      SLA L
 
      SLA L
 
      ;ADD HL,HL,HL,HL
 
        ADD HL,SP
 
        LD SP,HL
 
        POP DE
 
        LD A,D
 
      OR #F0
 
      ;AND 15
 
        LD L,A
 
        LD A,E
 
        ADD A,A
 
Cs_Vsl  LD A,16
 
        JR NC,Cs_VslG
 
        JP M,Cs_n2
 
        SUB 1
 
        JR Cs_n3
 
Cs_n2  CP 31
 
Cs_n3  ADC A,0
 
        LD (Cs_Vsl+1),A
 
Cs_VslG
 
 
         ADD A,L
 
         ADD A,L
        JR C,Cs_n4
 
        XOR A
 
Cs_n4  CP 16
 
        JR C,Cg_vol
 
        LD A,15
 
Cg_vol  ADD A,#F0
 
 
         LD L,A
 
         LD L,A
         LD H,'tab_vol
+
         EXX
        LD A,(HL)
+
  Bs_n7   LD A,D
        SRL E
+
         RRCA
        JR C,Cm_vo0
 
Cm_vol  OR 0
 
Cm_vo0  EXA
 
        LD A,D
 
      ;LD L,A
 
        RLCA
 
      ;LD H,A
 
        JR C,Cs_n5
 
Cs_Nsl LD A,0
 
        ADD A,E
 
        BIT 5,D
 
        JR Z,Cs_n6
 
        LD (Cs_Nsl+1),A
 
Cs_n6   LD HX,A
 
        JR Cs_n7
 
 
 
Cs_n5  LD A,E
 
        AND 31
 
        CP 16
 
        JR C,Cs_Esl
 
        OR #F0
 
Cs_Esl  ADD A,0
 
        BIT 5,D
 
         JR Z,Cs_n9
 
        LD (Cs_Esl+1),A
 
Cs_n9  EXX
 
      ADD A,L
 
      LD L,A
 
      EXX
 
Cs_n7  LD A,D
 
 
         RRCA  
 
         RRCA  
 
         RRCA  
 
         RRCA  
      ;RRCA
+
        AND 18
        AND 36
+
        OR LX
        OR LX
+
        LD LX,A
        LD LX,A
+
        POP BC
        POP BC
+
        ;LD A,D
      ;LD A,D
+
Bs_dtn LD HL,0
Cs_dtn LD HL,0
+
        ADD HL,BC
        ADD HL,BC
+
        BIT 6,D
      BIT 6,D
+
        ;AND 64
      ;AND 64
+
        JR Z,Bs_n10
        JR Z,Cs_n10
+
        LD (Bs_dtn+1),HL
        LD (Cs_dtn+1),HL
+
Bs_n10 EX DE,HL
Cs_n10 EX DE,HL
+
 
+
Bo_adr LD SP,DUMMYORN
Co_adr LD SP,DUMMYORN
+
        POP BC
        POP BC
+
Bo_dsp LD A,0
Co_dsp LD A,0
+
        LD L,A
        LD L,A
+
        INC A
        INC A
+
        CP B
        CP B
+
        JR C,Bo_n0
        JR C,Co_n0
+
        LD A,C
        LD A,C
+
Bo_n0   LD (Bo_dsp+1),A
Co_n0   LD (Co_dsp+1),A
+
        LD H,0
        LD H,0
+
        ADD HL,SP
        ADD HL,SP
+
        LD A,(Bs_note+1)
        LD A,(Cs_note+1)
+
        ADD A,(HL)
        ADD A,(HL)
+
        ADD A,A
        ADD A,A
+
      JR NC,$+3
    JR NC,$+3
+
      XOR A
    XOR A
+
        LD L,A
        LD L,A
+
        LD H,'tab_frq
        LD H,'tab_frq
+
        LD SP,HL
        LD SP,HL
+
        POP HL
        POP HL
+
        ADD HL,DE
 +
Bsl_dsp LD BC,0
 +
        ADD HL,BC
 +
_m5=$+2
 +
        LD (frq_B),HL
 +
 +
Bsl_stp LD A,0
 +
        DEC A
 +
        JP M,Bsl_s0
 +
        JR NZ,Bsl_s1
 +
Bsl_tfr LD DE,0
 
         ADD HL,DE
 
         ADD HL,DE
Csl_dsp LD BC,0
 
        ADD HL,BC
 
_m6=$+2
 
        LD (frq_C),HL
 
 
Csl_stp LD A,0
 
        DEC A
 
        JP M,Csl_s0
 
        JR NZ,Csl_s1
 
Csl_tfr LD DE,0
 
      ADD HL,DE
 
      EX DE,HL
 
        ADD HL,BC
 
        LD (Csl_dsp+1),HL
 
        JR Csl_sts
 
Csl_plk
 
Csl_not LD A,0
 
        LD L,A
 
        ADD HL,HL
 
        LD H,'tab_frq
 
        LD SP,HL
 
        POP HL
 
Cs_note CP 0
 
        JR NC,$+3
 
 
         EX DE,HL
 
         EX DE,HL
        SBC HL,DE
+
        ADD HL,BC
        JR C,Csl_sts
+
        LD (Bsl_dsp+1),HL
        LD (Cs_note+1),A
+
        JR Bsl_sts
        XOR A
+
Bsl_plk
        LD L,A
+
Bsl_not LD A,0
        LD (Csl_dsp+1),HL
+
        LD L,A
        JR $+4
+
        ADD HL,HL
Csl_sts LD A,0
+
        LD H,'tab_frq
Csl_s1 LD (Csl_stp+1),A
+
        LD SP,HL
Csl_s0 EXA  
+
        POP HL
 
+
Bs_note CP 0
_m9=$+2
+
        JR NC,$+3
Cvb_n0 LD (vol_C),A
+
        EX DE,HL
Cvb_stp LD A,0
+
        SBC HL,DE
        DEC A
+
        JR C,Bsl_sts
        JP M,Esl_
+
        LD (Bs_note+1),A
        JR NZ,Cvb_n1
+
        XOR A
        DEC A          ;;
+
        LD L,A
        LD HL,Cvb_lok+1;;
+
        LD (Bsl_dsp+1),HL
        XOR (HL)      ;;
+
        JR $+4
        LD (HL),A      ;;4
+
Bsl_sts LD A,0
Cvb_frq LD A,0
+
Bsl_s1 LD (Bsl_stp+1),A
        JR NZ,Cvb_n1
+
Bsl_s0 EXA  
Cvb_sts LD A,0
+
Cvb_n1 LD (Cvb_stp+1),A
+
_m8=$+2
 
+
Bvb_n0 LD (vol_B),A
;---- sampler_E ----
+
Bvb_stp LD A,0
 
+
        DEC A
Esl_    EXX
+
        JP M,Cvb_lok
        LD A,L
+
        JR NZ,Bvb_n1
Esl_frq LD DE,0        ;stp_sl_env
+
        DEC A          ;;
E_frq   LD HL,0       ;frq_env
+
        LD HL,Bvb_lok+1;;
 +
        XOR (HL)      ;;
 +
        LD (HL),A      ;;4
 +
Bvb_frq LD A,0
 +
        JR NZ,Bvb_n1
 +
Bvb_sts LD A,0
 +
Bvb_n1 LD (Bvb_stp+1),A
 +
 +
;---- sampler_C ----
 +
 +
Cvb_lok LD A,-1
 +
        LD H,A
 +
        INC A
 +
        JP Z,Cvb_n0
 +
 +
Cs_adr  LD SP,DUMMYSMP
 +
        POP DE
 +
Cs_dsp  LD A,0
 +
        LD L,A
 +
        INC A
 +
        CP D
 +
        JR C,Cs_n0
 +
        LD A,E
 +
Cs_n0  LD (Cs_dsp+1),A
 +
        SLA L
 +
        SLA L
 +
       ;ADD HL,HL,HL,HL
 +
        ADD HL,SP
 +
        LD SP,HL
 +
        POP DE
 +
        LD A,D
 +
        OR #F0
 +
        ;AND 15
 +
        LD L,A
 +
        LD A,E
 +
        ADD A,A
 +
Cs_Vsl  LD A,16
 +
        JR NC,Cs_VslG
 +
        JP M,Cs_n2
 +
        SUB 1
 +
        JR Cs_n3
 +
Cs_n2   CP 31
 +
Cs_n3  ADC A,0
 +
        LD (Cs_Vsl+1),A
 +
Cs_VslG
 +
        ADD A,L
 +
        JR C,Cs_n4
 +
        XOR A
 +
Cs_n4  CP 16
 +
        JR C,Cg_vol
 +
        LD A,15
 +
Cg_vol  ADD A,#F0
 +
        LD L,A
 +
        LD H,'tab_vol
 +
        LD A,(HL)
 +
        SRL E
 +
        JR C,Cm_vo0
 +
Cm_vol  OR 0
 +
Cm_vo0  EXA
 +
        LD A,D
 +
        ;LD L,A
 +
        RLCA
 +
        ;LD H,A
 +
        JR C,Cs_n5
 +
Cs_Nsl  LD A,0
 +
        ADD A,E
 +
        BIT 5,D
 +
        JR Z,Cs_n6
 +
        LD (Cs_Nsl+1),A
 +
Cs_n6  LD HX,A
 +
        JR Cs_n7
 +
 +
Cs_n5  LD A,E
 +
        AND 31
 +
        CP 16
 +
        JR C,Cs_Esl
 +
        OR #F0
 +
Cs_Esl  ADD A,0
 +
        BIT 5,D
 +
        JR Z,Cs_n9
 +
        LD (Cs_Esl+1),A
 +
Cs_n9  EXX
 
         ADD A,L
 
         ADD A,L
 
         LD L,A
 
         LD L,A
 +
        EXX
 +
Cs_n7  LD A,D
 +
        RRCA
 +
        RRCA
 +
        ;RRCA
 +
        AND 36
 +
        OR LX
 +
        LD LX,A
 +
        POP BC
 +
        ;LD A,D
 +
Cs_dtn  LD HL,0
 +
        ADD HL,BC
 +
        BIT 6,D
 +
        ;AND 64
 +
        JR Z,Cs_n10
 +
        LD (Cs_dtn+1),HL
 +
Cs_n10  EX DE,HL
 +
 +
Co_adr  LD SP,DUMMYORN
 +
        POP BC
 +
Co_dsp  LD A,0
 +
        LD L,A
 +
        INC A
 +
        CP B
 +
        JR C,Co_n0
 +
        LD A,C
 +
Co_n0  LD (Co_dsp+1),A
 +
        LD H,0
 +
        ADD HL,SP
 +
        LD A,(Cs_note+1)
 +
        ADD A,(HL)
 +
        ADD A,A
 +
      JR NC,$+3
 +
      XOR A
 +
        LD L,A
 +
        LD H,'tab_frq
 +
        LD SP,HL
 +
        POP HL
 +
        ADD HL,DE
 +
Csl_dsp LD BC,0
 +
        ADD HL,BC
 +
_m6=$+2
 +
        LD (frq_C),HL
 +
 +
Csl_stp LD A,0
 +
        DEC A
 +
        JP M,Csl_s0
 +
        JR NZ,Csl_s1
 +
Csl_tfr LD DE,0
 
         ADD HL,DE
 
         ADD HL,DE
_m10=$+2
+
        EX DE,HL
        LD (frq_E),HL
+
        ADD HL,BC
Esl_stp LD A,0
+
        LD (Csl_dsp+1),HL
        DEC A
+
        JR Csl_sts
        JP M,sav_SP1
+
Csl_plk
        JR NZ,E_n0
+
Csl_not LD A,0
Esl_sds LD HL,0
+
        LD L,A
        ADD HL,DE
+
        ADD HL,HL
        LD (Esl_frq+1),HL
+
        LD H,'tab_frq
Esl_sts LD A,0
+
        LD SP,HL
E_n0    LD (Esl_stp+1),A
+
        POP HL
 
+
Cs_note CP 0
;---- out_to_processor ----
+
        JR NC,$+3
 
+
        EX DE,HL
sav_SP1 LD SP,0
+
        SBC HL,DE
out_
+
        JR C,Csl_sts
        LD DE,#FFBF
+
        LD (Cs_note+1),A
        LD C,-3
+
        XOR A
_m4=$+2
+
        LD L,A
        LD HL,frq_A
+
        LD (Csl_dsp+1),HL
 
+
        JR $+4
        LD A,7
+
Csl_sts LD A,0
        CALL OUTER
+
Csl_s1  LD (Csl_stp+1),A
 
+
Csl_s0  EXA
        LD A,HX        ;noise
+
        LD (N_add+3),A
+
_m9=$+2
        ADD A,(HL)
+
Cvb_n0  LD (vol_C),A
        OUT (C),A
+
Cvb_stp LD A,0
        INC L
+
        DEC A
        LD B,D
+
        JP M,Esl_
        OUT (C),L
+
        JR NZ,Cvb_n1
        LD A,LX        ;mix
+
        DEC A          ;;
        LD B,E
+
        LD HL,Cvb_lok+1;;
        OUT (C),A
+
        XOR (HL)      ;;
        INC L
+
        LD (HL),A      ;;4
 
+
Cvb_frq LD A,0
        LD A,6
+
        JR NZ,Cvb_n1
        CALL OUTER
+
Cvb_sts LD A,0
 
+
Cvb_n1  LD (Cvb_stp+1),A
        OR (HL)
+
      RET Z
+
;---- sampler_E ----
        OUT (C),A
+
        LD (HL),0 ;;4
+
Esl_    EXX
      RET
+
        LD A,L
 
+
Esl_frq LD DE,0        ;stp_sl_env
;--- nota_A ---
+
E_frq  LD HL,0        ;frq_env
 
+
        ADD A,L
Ani_vol JR NZ,Ani_v0
+
        LD L,A
        LD (Avb_stp+1),A
+
        ADD HL,DE
        DEC A
+
_m10=$+2
        LD (Avb_lok+1),A
+
        LD (frq_E),HL
 +
Esl_stp LD A,0
 +
        DEC A
 +
        JP M,sav_SP1
 +
        JR NZ,E_n0
 +
Esl_sds LD HL,0
 +
        ADD HL,DE
 +
        LD (Esl_frq+1),HL
 +
Esl_sts LD A,0
 +
E_n0    LD (Esl_stp+1),A
 +
 +
;---- out_to_processor ----
 +
 +
sav_SP1 LD SP,0
 +
out_
 +
        LD DE,#FFBF
 +
        LD C,-3
 +
_m4=$+2
 +
        LD HL,frq_A
 +
 +
        LD A,7
 +
        CALL OUTER
 +
 +
        LD A,HX        ;noise
 +
        LD (N_add+3),A
 +
        ADD A,(HL)
 +
        OUT (C),A
 +
        INC L
 +
        LD B,D
 +
        OUT (C),L
 +
        LD A,LX        ;mix
 +
        LD B,E
 +
        OUT (C),A
 +
        INC L
 +
 +
        LD A,6
 +
        CALL OUTER
 +
 +
        OR (HL)
 +
        RET Z
 +
        OUT (C),A
 +
        LD (HL),0 ;;4
 
         RET  
 
         RET  
Ani_v0
+
      DUP 4
+
;--- nota_A ---
      ADD A,A
+
      EDUP  
+
Ani_vol JR NZ,Ani_v0
        LD (Ag_vol+1),A
+
        LD (Avb_stp+1),A
      JP  An_clc2
+
        DEC A
Ani_s_o
+
        LD (Avb_lok+1),A
      CALL ornPP
+
        RET
      LD (Ao_adr+1),BC
+
Ani_v0
Ani_vse
+
        DUP 4
      CALL NZ,EiPP
+
        ADD A,A
Ani_sm0 LD (Am_vol+1),A
+
        EDUP  
         XOR A
+
        LD (Ag_vol+1),A
         LD (Ao_dsp+1),A
+
        JP  An_clc2
 +
Ani_s_o
 +
        CALL ornPP
 +
        LD (Ao_adr+1),BC
 +
Ani_vse
 +
        CALL NZ,EiPP
 +
Ani_sm0 LD (Am_vol+1),A
 +
        XOR A
 +
        LD (Ao_dsp+1),A
 +
        LD A,(DE)
 +
        INC DE
 +
        JR Anism0U ;
 +
Ani_smp RET Z    ;
 +
        ADD A,A  ;
 +
Anism0U
 +
        CALL smpPP
 +
        LD (As_adr+1),BC
 +
 +
An_clc1 LD BC,#1020
 +
An_clc2 LD A,(DE)
 +
        INC DE
 +
        ADD A,B
 +
        JR C,Ani_s_o
 +
        ADD A,C
 +
        JR C,Ani_smp
 +
        ADD A,B
 +
        JR C,Ani_vol
 +
        ADD A,B
 +
        JR C,Ani_vqe
 +
        ADD A,96
 +
        JR C,Ani_not
 +
        ADD A,B
 +
        JR C,Ani_orn
 +
        ADD A,48
 +
        JR C,Ani_vse
 +
        LD HL,A_eff+30
 +
        LD BC,As_note+1
 +
        CALL NPUSH
 +
        JR An_clc1
 +
 +
Ani_vqe JR Z,Ani_v1
 +
        DEC A
 +
        JR NZ,Ani_e0
 +
        LD A,(DE)
 +
        LD (Ai_qty+1),A
 +
        INC DE
 +
        JR An_clc2
 +
 +
Ani_e0 CALL EiPP
 +
Ani_v1  LD (Am_vol+1),A
 +
        JR An_clc2
 +
Ani_orn
 +
        CALL ornPP
 +
         LD (Ao_adr+1),BC
 +
        LD (Ao_dsp+1),A
 +
        JR An_clc1
 +
 +
Ani_not LD (As_note+1),A
 +
        XOR A
 +
        LD H,A
 +
        LD L,A
 +
        LD (As_dsp+1),A
 +
        LD (As_Nsl+1),A
 +
        LD (As_Esl+1),A
 +
        LD (Ao_dsp+1),A
 +
        LD (Asl_stp+1),A
 +
        LD (Avb_lok+1),A
 +
        LD (Avb_stp+1),A
 +
        ;LD (Asl_dsp+1),HL
 +
        LD (As_dtn+1),HL
 +
        LD A,16
 +
        LD (As_Vsl+1),A
 +
      ;JR LDB1
 +
        LD B,1
 +
        RET
 +
 +
;--- nota_B ---
 +
 +
Bni_vol JR NZ,Bni_v0
 +
        LD (Bvb_stp+1),A
 +
        DEC A
 +
        LD (Bvb_lok+1),A
 +
        RET
 +
Bni_v0
 +
        DUP 4
 +
         ADD A,A
 +
        EDUP
 +
        LD (Bg_vol+1),A
 +
        JP  Bn_clc2
 +
Bni_s_o
 +
        CALL ornPP
 +
        LD (Bo_adr+1),BC
 +
Bni_vse
 +
        CALL NZ,EiPP
 +
Bni_sm0 LD (Bm_vol+1),A
 +
        XOR A
 +
        LD (Bo_dsp+1),A
 +
        LD A,(DE)
 +
        INC DE
 +
        JR Bnism0U ;
 +
Bni_smp RET Z    ;
 +
        ADD A,A  ;
 +
Bnism0U
 +
        CALL smpPP
 +
        LD (Bs_adr+1),BC
 +
 +
Bn_clc1 LD BC,#1020
 +
Bn_clc2 LD A,(DE)
 +
        INC DE
 +
        ADD A,B
 +
        JR C,Bni_s_o
 +
        ADD A,C
 +
        JR C,Bni_smp
 +
        ADD A,B
 +
        JR C,Bni_vol
 +
        ADD A,B
 +
        JR C,Bni_vqe
 +
        ADD A,96
 +
        JR C,Bni_not
 +
        ADD A,B
 +
        JR C,Bni_orn
 +
        ADD A,C
 +
        JR C,Bni_noi
 +
        ADD A,B
 +
        JR C,Bni_vse
 +
        LD HL,B_eff+30
 +
        LD BC,Bs_note+1
 +
        CALL NPUSH
 +
        JR Bn_clc1
 +
 +
Bni_not LD (Bs_note+1),A
 +
        XOR A
 +
        LD H,A
 +
        LD L,A
 +
        LD (Bs_dsp+1),A
 +
        LD (Bs_Nsl+1),A
 +
        LD (Bs_Esl+1),A
 +
        LD (Bo_dsp+1),A
 +
        LD (Bsl_stp+1),A
 +
        LD (Bvb_lok+1),A
 +
        LD (Bvb_stp+1),A
 +
        ;LD (Bsl_dsp+1),HL
 +
        LD (Bs_dtn+1),HL
 +
        LD A,16
 +
        LD (Bs_Vsl+1),A
 +
LDB1  LD B,1
 +
        RET
 +
 +
_m2=$+2
 +
Bni_noi LD (N_frq),A;GLOBALnoise
 +
        JR Bn_clc2
 +
 +
Bni_vqe JR Z,Bni_v1
 +
        DEC A
 +
        JR NZ,Bni_e0
 +
        LD A,(DE)
 +
        LD (Bi_qty+1),A
 +
        INC DE
 +
        JR Bn_clc2
 +
 +
Bni_e0 CALL EiPP
 +
Bni_v1  LD (Bm_vol+1),A
 +
        JR Bn_clc2
 +
Bni_orn
 +
        CALL ornPP
 +
        LD (Bo_adr+1),BC
 +
        LD (Bo_dsp+1),A
 +
        JR Bn_clc1
 +
 +
;--- nota_C ---
 +
 +
Cni_not LD (Cs_note+1),A
 +
        XOR A
 +
        LD H,A
 +
        LD L,A
 +
        LD (Cs_dsp+1),A
 +
        LD (Cs_Nsl+1),A
 +
        LD (Cs_Esl+1),A
 +
        LD (Co_dsp+1),A
 +
        LD (Csl_stp+1),A
 +
        LD (Cvb_lok+1),A
 +
        LD (Cvb_stp+1),A
 +
        ;LD (Csl_dsp+1),HL
 +
        LD (Cs_dtn+1),HL
 +
        LD A,16
 +
        LD (Cs_Vsl+1),A
 +
      ;JR LDB1
 +
        LD B,1
 +
        RET
 +
 +
Cni_vol JR NZ,Cni_v0
 +
        LD (Cvb_stp+1),A
 +
        DEC A
 +
        LD (Cvb_lok+1),A
 +
        RET
 +
Cni_v0
 +
        DUP 4
 +
        ADD A,A
 +
        EDUP
 +
        LD (Cg_vol+1),A
 +
        JP  Cn_clc2
 +
Cni_s_o
 +
        CALL ornPP
 +
        LD (Co_adr+1),BC
 +
Cni_vse
 +
        CALL NZ,EiPP
 +
Cni_sm0 LD (Cm_vol+1),A
 +
        XOR A
 +
        LD (Co_dsp+1),A
 +
        LD A,(DE)
 +
        INC DE
 +
        JR Cnism0U ;
 +
Cni_smp RET Z    ;
 +
        ADD A,A  ;
 +
Cnism0U
 +
        CALL smpPP
 +
        LD (Cs_adr+1),BC
 +
 +
Cn_clc1 LD BC,#1020
 +
Cn_clc2 LD A,(DE)
 +
        INC DE
 +
        ADD A,B
 +
        JR C,Cni_s_o
 +
        ADD A,C
 +
        JR C,Cni_smp
 +
        ADD A,B
 +
        JR C,Cni_vol
 +
        ADD A,B
 +
        JR C,Cni_vqe
 +
        ADD A,96
 +
        JR C,Cni_not
 +
        ADD A,B
 +
        JR C,Cni_orn
 +
        ADD A,48
 +
        JR C,Cni_vse
 +
        LD HL,C_eff+30
 +
        LD BC,Cs_note+1
 +
        CALL NPUSH
 +
        JR Cn_clc1
 +
 +
Cni_vqe JR Z,Cni_v1
 +
        DEC A
 +
        JR NZ,Cni_e0
 +
        LD A,(DE)
 +
        LD (Ci_qty+1),A
 +
        INC DE
 +
        JR Cn_clc2
 +
 +
Cni_e0 CALL EiPP
 +
Cni_v1  LD (Cm_vol+1),A
 +
        JR Cn_clc2
 +
Cni_orn
 +
        CALL ornPP
 +
        LD (Co_adr+1),BC
 +
        LD (Co_dsp+1),A
 +
        JR Cn_clc1
 +
 +
;---- special_effects_COM.xxxx ----
 +
 +
EiPP  LD (Ei_form+1),A
 
         LD A,(DE)
 
         LD A,(DE)
 
         INC DE
 
         INC DE
      JR Anism0U ;
+
         LD (Ei_frq+2),A
Ani_smp RET Z    ;
 
        ADD A,A  ;
 
Anism0U
 
      CALL smpPP
 
         LD (As_adr+1),BC
 
 
 
An_clc1 LD BC,#1020
 
An_clc2 LD A,(DE)
 
        INC DE
 
        ADD A,B
 
        JR C,Ani_s_o
 
        ADD A,C
 
        JR C,Ani_smp
 
        ADD A,B
 
        JR C,Ani_vol
 
        ADD A,B
 
        JR C,Ani_vqe
 
        ADD A,96
 
        JR C,Ani_not
 
        ADD A,B
 
        JR C,Ani_orn
 
        ADD A,48
 
        JR C,Ani_vse
 
        LD HL,A_eff+30
 
        LD BC,As_note+1
 
      CALL NPUSH
 
        JR An_clc1
 
 
 
Ani_vqe JR Z,Ani_v1
 
        DEC A
 
        JR NZ,Ani_e0
 
 
         LD A,(DE)
 
         LD A,(DE)
        LD (Ai_qty+1),A
 
 
         INC DE
 
         INC DE
         JR An_clc2
+
         LD (Ei_frq+1),A
 
+
        LD A,16
Ani_e0 CALL EiPP
+
        RET ;16
Ani_v1 LD (Am_vol+1),A
+
         JR An_clc2
+
Aef_dSm LD A,(DE)      ;dsp_smp
Ani_orn
+
        INC DE
      CALL ornPP
+
        LD (As_dsp+1),A          ;;si
      LD (Ao_adr+1),BC
+
        RET
         LD (Ao_dsp+1),A
+
Bef_dSm LD A,(DE)
         JR An_clc1
+
        INC DE
 
+
        LD (Bs_dsp+1),A          ;;si
Ani_not LD (As_note+1),A
+
        RET
         XOR A
+
  Cef_dSm LD A,(DE)
         LD H,A
+
        INC DE
         LD L,A
+
        LD (Cs_dsp+1),A
        LD (As_dsp+1),A
+
        RET
         LD (As_Nsl+1),A
+
         LD (As_Esl+1),A
+
A_eff  DW Aef_slT ;1xxx,2xxx - sld_tone
        LD (Ao_dsp+1),A
+
        DW Aef_nsT ;3xxx - port_note
         LD (Asl_stp+1),A
+
        DW Aef_dSm ;4.xx - dsp_smp
         LD (Avb_lok+1),A
+
        DW Aef_dOr ;5.xx - dsp_orn
 +
        DW Aef_vib ;6.xx - vibrato
 +
Aef_vib LD A,(DE)
 +
        INC DE
 +
         JR Aef_vjr
 +
        DW Eef_sld ;9xxx,Axxx - sld_env
 +
        DW eff_tmp ;B.xx - temp
 +
 +
Aef_vjr LD (Avb_sts+1),A;fix fr/st;;ist
 +
         LD (Avb_stp+1),A
 +
        LD A,(DE)
 +
        INC DE
 +
        LD (Avb_frq+1),A;fix st/fr;;ifr
 +
        RET
 +
 +
B_eff  DW Bef_slT
 +
        DW Bef_nsT
 +
        DW Bef_dSm
 +
        DW Bef_dOr
 +
        DW Bef_vib
 +
Bef_vib LD A,(DE)
 +
        INC DE
 +
         JR Bef_vjr
 +
        DW Eef_sld
 +
        DW eff_tmp
 +
 +
Bef_vjr LD (Bvb_sts+1),A;fix fr/st;;ist
 +
         LD (Bvb_stp+1),A
 +
        LD A,(DE)
 +
        INC DE
 +
        LD (Bvb_frq+1),A;fix st/fr;;ifr
 +
        RET
 +
 +
C_eff  DW Cef_slT
 +
        DW Cef_nsT
 +
        DW Cef_dSm
 +
        DW Cef_dOr
 +
        DW Cef_vib
 +
int_qty DB 1
 +
A_qty  DB 1
 +
B_qty  DB 1
 +
C_qty  DB 1
 +
        DW Eef_sld
 +
        DW eff_tmp
 +
 +
Cef_vib LD A,(DE)
 +
        INC DE
 +
        LD (Cvb_sts+1),A;fix fr/st
 +
        LD (Cvb_stp+1),A
 +
        LD A,(DE)
 +
        INC DE
 +
        LD (Cvb_frq+1),A;fix st/fr
 +
        RET
 +
 +
Aef_nsT
 +
        CALL Aef_slT
 +
         ;LD (Asl_pfr+1),HL        ;;pi
 +
        CALL GETHL
 +
        LD (Asl_tfr+1),HL        ;;pi
 +
        LD (Asl_plk-1),A;port_on  ;;pi_lok
 +
        LD HL,As_note+1          ;;si
 +
        LD A,(HL)
 +
        LD (Asl_not+1),A          ;;pi
 +
AnsQ  EXA
 +
        LD (HL),A
 +
         LD B,0
 +
        RET
 +
Bef_nsT
 +
        CALL Bef_slT
 +
        ;LD (Bsl_pfr+1),HL        ;;pi
 +
        CALL GETHL
 +
        LD (Bsl_tfr+1),HL        ;;pi
 +
        LD (Bsl_plk-1),A          ;;pi_lok
 +
        LD HL,Bs_note+1          ;;si
 +
        LD A,(HL)
 +
        LD (Bsl_not+1),A         ;;pi
 +
        JR AnsQ
 +
Cef_nsT
 +
        CALL Cef_slT
 +
         ;LD (Csl_pfr+1),HL
 +
         CALL GETHL
 +
        LD (Csl_tfr+1),HL
 +
        LD (Csl_plk-1),A
 +
        LD HL,Cs_note+1
 +
        LD A,(HL)
 +
        LD (Csl_not+1),A
 +
         JR AnsQ
 +
 +
Aef_slT LD A,(DE)
 +
        LD (Asl_stp+1),A         ;;pi
 +
         LD (Asl_sts+1),A
 +
        CALL IGETHL    ;sld_ton
 +
        LD (Asl_tfr+1),HL        ;;pi
 
         LD (Avb_stp+1),A
 
         LD (Avb_stp+1),A
      ;LD (Asl_dsp+1),HL
+
        LD A,Asl_sts-Asl_plk
        LD (As_dtn+1),HL
+
        LD (Asl_plk-1),A;port_off ;;pi
      LD A,16
+
        RET
      LD (As_Vsl+1),A
+
      ;JR LDB1
+
Bef_slT LD A,(DE)
         LD B,1
+
        LD (Bsl_stp+1),A         ;;pi
         RET
+
         LD (Bsl_sts+1),A
 
+
         CALL IGETHL
;--- nota_B ---
+
        LD (Bsl_tfr+1),HL        ;;pi
 
 
Bni_vol JR NZ,Bni_v0
 
 
         LD (Bvb_stp+1),A
 
         LD (Bvb_stp+1),A
        DEC A
+
        LD A,Bsl_sts-Bsl_plk
        LD (Bvb_lok+1),A
+
        LD (Bsl_plk-1),A         ;;pi
        RET  
+
        RET  
Bni_v0
+
      DUP 4
+
Cef_slT LD A,(DE)
      ADD A,A
+
        LD (Csl_stp+1),A
      EDUP
+
        LD (Csl_sts+1),A
        LD (Bg_vol+1),A
+
        CALL IGETHL
      JP  Bn_clc2
+
        LD (Csl_tfr+1),HL
Bni_s_o
+
        LD (Cvb_stp+1),A
      CALL ornPP
+
        LD A,Csl_sts-Csl_plk
      LD (Bo_adr+1),BC
+
        LD (Csl_plk-1),A
Bni_vse
+
        RET
      CALL NZ,EiPP
+
Bni_sm0 LD (Bm_vol+1),A
+
eff_tmp
        XOR A
+
        LD A,(DE)
        LD (Bo_dsp+1),A
+
DISPLAY $,"=#XX00"
        LD A,(DE)
+
tab_vol
        INC DE
+
        INC DE
      JR Bnism0U ;
+
        LD (temp+1),A
Bni_smp RET Z    ;
+
        RET
        ADD A,A  ;
+
Bnism0U
+
ornPP  ADD A,A
      CALL smpPP
+
         ADD A,tba_orn-tba_smp
        LD (Bs_adr+1),BC
+
smpPP  ADD A,tba_smp
 
 
Bn_clc1 LD BC,#1020
 
Bn_clc2 LD A,(DE)
 
        INC DE
 
        ADD A,B
 
        JR C,Bni_s_o
 
        ADD A,C
 
        JR C,Bni_smp
 
        ADD A,B
 
        JR C,Bni_vol
 
        ADD A,B
 
        JR C,Bni_vqe
 
        ADD A,96
 
        JR C,Bni_not
 
        ADD A,B
 
        JR C,Bni_orn
 
         ADD A,C
 
        JR C,Bni_noi
 
        ADD A,B
 
        JR C,Bni_vse
 
        LD HL,B_eff+30
 
        LD BC,Bs_note+1
 
      CALL NPUSH
 
        JR Bn_clc1
 
 
 
Bni_not LD (Bs_note+1),A
 
        XOR A
 
        LD H,A
 
 
         LD L,A
 
         LD L,A
         LD (Bs_dsp+1),A
+
         LD C,(HL)
         LD (Bs_Nsl+1),A
+
        INC L
         LD (Bs_Esl+1),A
+
         LD B,(HL)
        LD (Bo_dsp+1),A
+
        XOR A
        LD (Bsl_stp+1),A
+
         RET ;11
        LD (Bvb_lok+1),A
+
DUMMYORN
        LD (Bvb_stp+1),A
+
DUMMYSMP
      ;LD (Bsl_dsp+1),HL
+
DB 0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1
         LD (Bs_dtn+1),HL
+
DB 0,0,0,0,1,1,1,1,1,1,1,1,2,2,2,2
      LD A,16
+
DB 0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3
      LD (Bs_Vsl+1),A
+
DB 0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4
LDB1  LD B,1
+
DB 0,0,1,1,1,2,2,2,3,3,3,4,4,4,5,5
         RET
+
DB 0,0,1,1,2,2,2,3,3,4,4,4,5,5,6,6
 
+
DB 0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7
_m2=$+2
+
DB 0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8
Bni_noi LD (N_frq),A;GLOBALnoise
+
DB 0,1,1,2,2,3,4,4,5,5,6,7,7,8,8,9
         JR Bn_clc2
+
DB 0,1,1,2,3,3,4,5,5,6,7,7,8,9,9,10
 
+
DB 0,1,1,2,3,4,4,5,6,7,7,8,9,10,10,11
Bni_vqe JR Z,Bni_v1
+
DB 0,1,2,2,3,4,5,6,6,7,8,9,10,10,11,12
 +
DB 0,1,2,3,3,4,5,6,7,8,9,10,10,11,12,13
 +
DB 0,1,2,3,4,5,6,7,7,8,9,10,11,12,13,14
 +
DB 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
 +
tab_frq DS #C0
 +
Eef_sld LD A,(DE)     ;sld_env
 +
        LD (Esl_ist+1),A          ;;stp
 +
         CALL IGETHL
 +
        LD (Esl_ids+1),HL         ;;sds
 +
        LD A,6
 +
        LD (E_ins0),A
 +
        RET ;16
 +
 +
        OUTI
 +
OUTER  LD B,D
 +
         OUT (C),L
 +
         LD B,E
 
         DEC A
 
         DEC A
         JR NZ,Bni_e0
+
         JR NZ,OUTER-2
         LD A,(DE)
+
         RET ;10
        LD (Bi_qty+1),A
+
        INC DE
+
Aef_dOr LD A,(DE)     ;dsp_orn
        JR Bn_clc2
+
        INC DE
 
+
        LD (Ao_dsp+1),A           ;;oi
Bni_e0 CALL EiPP
+
        RET
Bni_v1  LD (Bm_vol+1),A
+
Bef_dOr LD A,(DE)
        JR Bn_clc2
+
        INC DE
Bni_orn
+
        LD (Bo_dsp+1),A           ;;oi
      CALL ornPP
+
        RET
      LD (Bo_adr+1),BC
+
Cef_dOr LD A,(DE)
        LD (Bo_dsp+1),A
+
        INC DE
        JR Bn_clc1
+
        LD (Co_dsp+1),A
 
+
        RET ;6
;--- nota_C ---
+
 
+
IGETHL INC DE
Cni_not LD (Cs_note+1),A
+
GETHL
         XOR A
+
        EX DE,HL
         LD H,A
+
        LD E,(HL)
 +
        INC HL
 +
        LD D,(HL)
 +
        INC HL
 +
         EX DE,HL
 +
        XOR A
 +
         RET ;9
 +
 +
NPUSH  RLA
 +
        ADD A,L
 
         LD L,A
 
         LD L,A
        LD (Cs_dsp+1),A
+
       ;LD H,'A_eff
        LD (Cs_Nsl+1),A
 
        LD (Cs_Esl+1),A
 
        LD (Co_dsp+1),A
 
        LD (Csl_stp+1),A
 
        LD (Cvb_lok+1),A
 
        LD (Cvb_stp+1),A
 
      ;LD (Csl_dsp+1),HL
 
        LD (Cs_dtn+1),HL
 
      LD A,16
 
      LD (Cs_Vsl+1),A
 
       ;JR LDB1
 
        LD B,1
 
        RET
 
 
 
Cni_vol JR NZ,Cni_v0
 
        LD (Cvb_stp+1),A
 
        DEC A
 
        LD (Cvb_lok+1),A
 
        RET
 
Cni_v0
 
      DUP 4
 
      ADD A,A
 
      EDUP
 
        LD (Cg_vol+1),A
 
      JP  Cn_clc2
 
Cni_s_o
 
      CALL ornPP
 
      LD (Co_adr+1),BC
 
Cni_vse
 
      CALL NZ,EiPP
 
Cni_sm0 LD (Cm_vol+1),A
 
        XOR A
 
        LD (Co_dsp+1),A
 
        LD A,(DE)
 
        INC DE
 
      JR Cnism0U ;
 
Cni_smp RET Z    ;
 
        ADD A,A  ;
 
Cnism0U
 
      CALL smpPP
 
        LD (Cs_adr+1),BC
 
 
 
Cn_clc1 LD BC,#1020
 
Cn_clc2 LD A,(DE)
 
        INC DE
 
        ADD A,B
 
        JR C,Cni_s_o
 
        ADD A,C
 
        JR C,Cni_smp
 
        ADD A,B
 
        JR C,Cni_vol
 
        ADD A,B
 
        JR C,Cni_vqe
 
        ADD A,96
 
        JR C,Cni_not
 
        ADD A,B
 
        JR C,Cni_orn
 
        ADD A,48
 
        JR C,Cni_vse
 
        LD HL,C_eff+30
 
        LD BC,Cs_note+1
 
      CALL NPUSH
 
        JR Cn_clc1
 
 
 
Cni_vqe JR Z,Cni_v1
 
        DEC A
 
        JR NZ,Cni_e0
 
        LD A,(DE)
 
        LD (Ci_qty+1),A
 
        INC DE
 
        JR Cn_clc2
 
 
 
Cni_e0 CALL EiPP
 
Cni_v1  LD (Cm_vol+1),A
 
        JR Cn_clc2
 
Cni_orn
 
      CALL ornPP
 
      LD (Co_adr+1),BC
 
        LD (Co_dsp+1),A
 
        JR Cn_clc1
 
 
 
;---- special_effects_COM.xxxx ----
 
 
 
EiPP  LD (Ei_form+1),A
 
      LD A,(DE)
 
      INC DE
 
      LD (Ei_frq+2),A
 
      LD A,(DE)
 
      INC DE
 
      LD (Ei_frq+1),A
 
      LD A,16
 
      RET ;16
 
 
 
Aef_dSm LD A,(DE)      ;dsp_smp
 
        INC DE
 
        LD (As_dsp+1),A          ;;si
 
        RET
 
Bef_dSm LD A,(DE)
 
        INC DE
 
        LD (Bs_dsp+1),A          ;;si
 
        RET
 
Cef_dSm LD A,(DE)
 
        INC DE
 
        LD (Cs_dsp+1),A
 
        RET
 
 
 
A_eff   DW Aef_slT ;1xxx,2xxx - sld_tone
 
        DW Aef_nsT ;3xxx - port_note
 
        DW Aef_dSm ;4.xx - dsp_smp
 
        DW Aef_dOr ;5.xx - dsp_orn
 
        DW Aef_vib ;6.xx - vibrato
 
Aef_vib LD A,(DE)
 
        INC DE
 
      JR Aef_vjr
 
        DW Eef_sld ;9xxx,Axxx - sld_env
 
        DW eff_tmp ;B.xx - temp
 
 
 
Aef_vjr LD (Avb_sts+1),A;fix fr/st;;ist
 
      LD (Avb_stp+1),A
 
        LD A,(DE)
 
        INC DE
 
        LD (Avb_frq+1),A;fix st/fr;;ifr
 
        RET
 
 
 
B_eff  DW Bef_slT
 
        DW Bef_nsT
 
        DW Bef_dSm
 
        DW Bef_dOr
 
        DW Bef_vib
 
Bef_vib LD A,(DE)
 
        INC DE
 
      JR Bef_vjr
 
        DW Eef_sld
 
        DW eff_tmp
 
 
 
Bef_vjr LD (Bvb_sts+1),A;fix fr/st;;ist
 
      LD (Bvb_stp+1),A
 
        LD A,(DE)
 
        INC DE
 
        LD (Bvb_frq+1),A;fix st/fr;;ifr
 
        RET
 
 
 
C_eff  DW Cef_slT
 
        DW Cef_nsT
 
        DW Cef_dSm
 
        DW Cef_dOr
 
        DW Cef_vib
 
int_qty DB 1
 
A_qty  DB 1
 
B_qty  DB 1
 
C_qty  DB 1
 
        DW Eef_sld
 
        DW eff_tmp
 
 
 
Cef_vib LD A,(DE)
 
        INC DE
 
        LD (Cvb_sts+1),A;fix fr/st
 
        LD (Cvb_stp+1),A
 
        LD A,(DE)
 
        INC DE
 
        LD (Cvb_frq+1),A;fix st/fr
 
        RET
 
 
 
Aef_nsT
 
      CALL Aef_slT
 
      ;LD (Asl_pfr+1),HL        ;;pi
 
      CALL GETHL
 
        LD (Asl_tfr+1),HL        ;;pi
 
        LD (Asl_plk-1),A;port_on  ;;pi_lok
 
        LD HL,As_note+1          ;;si
 
 
         LD A,(HL)
 
         LD A,(HL)
         LD (Asl_not+1),A          ;;pi
+
         INC L
AnsQ  EXA
+
         LD H,(HL)
        LD (HL),A
+
         LD L,A
      LD B,0
+
         EX (SP),HL
        RET
+
         LD A,(BC)
Bef_nsT
+
       EXA  
      CALL Bef_slT
+
        JP (HL) ;11
      ;LD (Bsl_pfr+1),HL        ;;pi
+
LENP=$-PLAYER
      CALL GETHL
+
        DISPLAY "SIZE=",LENP
        LD (Bsl_tfr+1),HL        ;;pi
+
T_m
        LD (Bsl_plk-1),A          ;;pi_lok
+
        DW _m1
        LD HL,Bs_note+1          ;;si
+
        DW _m2
        LD A,(HL)
+
        DW _m3
        LD (Bsl_not+1),A          ;;pi
+
        DW _m4
      JR AnsQ
+
        DW _m5
Cef_nsT
+
        DW _m6
      CALL Cef_slT
+
        DW _m7
      ;LD (Csl_pfr+1),HL
+
        DW _m8
      CALL GETHL
+
        DW _m9
        LD (Csl_tfr+1),HL
+
        DW _m10
        LD (Csl_plk-1),A
+
        DW _m11
        LD HL,Cs_note+1
+
        DW _m12
        LD A,(HL)
+
        DW _m13
        LD (Csl_not+1),A
+
        DW _m14
      JR AnsQ
+
T_m_l=$-T_m/2
 
+
        ENDM  
Aef_slT LD A,(DE)
+
        LD (Asl_stp+1),A          ;;pi
+
        IF0 $-#8000
      LD (Asl_sts+1),A
+
MUZ
      CALL IGETHL    ;sld_ton
+
P1
        LD (Asl_tfr+1),HL        ;;pi
+
        LOCAL  
      LD (Avb_stp+1),A
+
pp
        LD A,Asl_sts-Asl_plk
+
        ENDL  
        LD (Asl_plk-1),A;port_off ;;pi
+
        ORG #C000
        RET
+
P2
 
+
pp
Bef_slT LD A,(DE)
+
        ORG $
        LD (Bsl_stp+1),A          ;;pi
+
        LD IX,#7000
      LD (Bsl_sts+1),A
+
        LD HL,P1
      CALL IGETHL
+
        LD DE,P2
        LD (Bsl_tfr+1),HL        ;;pi
+
        LD BC,LENP
      LD (Bvb_stp+1),A
+
CP0    LD A,(DE)
        LD A,Bsl_sts-Bsl_plk
+
        SUB (HL)
        LD (Bsl_plk-1),A          ;;pi
+
        JR Z,CPOK
        RET
+
        CP #40
 
+
        JR NZ,ERR
Cef_slT LD A,(DE)
+
        LD (IX),E
        LD (Csl_stp+1),A
+
        LD (IX+1),D
        LD (Csl_sts+1),A
+
        INC IX,IX
      CALL IGETHL
+
CPOK    INC HL,DE
        LD (Csl_tfr+1),HL
+
        DEC BC
        LD (Cvb_stp+1),A
+
        LD A,B
        LD A,Csl_sts-Csl_plk
+
        OR C
        LD (Csl_plk-1),A
+
        JR NZ,CP0
        RET
+
        RET  
 
+
ERR    LD HL,0
eff_tmp
+
        LD DE,#5800
        LD A,(DE)
+
        LD BC,768
DISPLAY $,"=#XX00"
+
        LDIR  
tab_vol
+
        RET  
        INC DE
+
        ELSE  
        LD (temp+1),A
+
pp
        RET
+
        ENDIF D (Avb_stp+1),A
 
+
        LD A,Asl_sts-Asl_plk
ornPP  ADD A,A
+
        LD (Asl_plk-1),A;port_off ;;pi
      ADD A,tba_orn-tba_smp
+
        RET  
smpPP  ADD A,tba_smp
+
      LD L,A
+
Bef_slT LD A,(DE)
      LD C,(HL)
+
        LD (Bsl_stp+1),A          ;;pi
      INC L
+
        LD
      LD B,(HL)
 
        XOR A
 
      RET ;11
 
DUMMYORN
 
DUMMYSMP
 
DB 0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1
 
DB 0,0,0,0,1,1,1,1,1,1,1,1,2,2,2,2
 
DB 0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3
 
DB 0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4
 
DB 0,0,1,1,1,2,2,2,3,3,3,4,4,4,5,5
 
DB 0,0,1,1,2,2,2,3,3,4,4,4,5,5,6,6
 
DB 0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7
 
DB 0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8
 
DB 0,1,1,2,2,3,4,4,5,5,6,7,7,8,8,9
 
DB 0,1,1,2,3,3,4,5,5,6,7,7,8,9,9,10
 
DB 0,1,1,2,3,4,4,5,6,7,7,8,9,10,10,11
 
DB 0,1,2,2,3,4,5,6,6,7,8,9,10,10,11,12
 
DB 0,1,2,3,3,4,5,6,7,8,9,10,10,11,12,13
 
DB 0,1,2,3,4,5,6,7,7,8,9,10,11,12,13,14
 
DB 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
 
tab_frq DS #C0
 
Eef_sld LD A,(DE)      ;sld_env
 
         LD (Esl_ist+1),A          ;;stp
 
      CALL IGETHL
 
        LD (Esl_ids+1),HL         ;;sds
 
        LD A,6
 
        LD (E_ins0),A
 
         RET ;16
 
 
 
      OUTI
 
OUTER  LD B,D
 
      OUT (C),L
 
      LD B,E
 
      DEC A
 
      JR NZ,OUTER-2
 
      RET ;10
 
 
 
Aef_dOr LD A,(DE)      ;dsp_orn
 
        INC DE
 
        LD (Ao_dsp+1),A           ;;oi
 
         RET
 
Bef_dOr LD A,(DE)
 
        INC DE
 
        LD (Bo_dsp+1),A          ;;oi
 
        RET
 
Cef_dOr LD A,(DE)
 
        INC DE
 
        LD (Co_dsp+1),A
 
        RET ;6
 
 
 
IGETHL INC DE
 
GETHL
 
      EX DE,HL
 
      LD E,(HL)
 
      INC HL
 
      LD D,(HL)
 
      INC HL
 
      EX DE,HL
 
         XOR A
 
      RET ;9
 
 
 
NPUSH  RLA
 
      ADD A,L
 
      LD L,A
 
    ;LD H,'A_eff
 
      LD A,(HL)
 
      INC L
 
      LD H,(HL)
 
      LD L,A
 
      EX (SP),HL
 
       LD A,(BC)
 
      EXA  
 
      JP (HL) ;11
 
LENP=$-PLAYER
 
        DISPLAY "SIZE=",LENP
 
T_m
 
        DW _m1
 
        DW _m2
 
        DW _m3
 
        DW _m4
 
        DW _m5
 
        DW _m6
 
        DW _m7
 
        DW _m8
 
        DW _m9
 
        DW _m10
 
        DW _m11
 
        DW _m12
 
        DW _m13
 
        DW _m14
 
T_m_l=$-T_m/2
 
        ENDM  
 
 
 
      IF0 $-#8000
 
MUZ
 
P1
 
        LOCAL  
 
pp
 
        ENDL  
 
        ORG #C000
 
P2
 
pp
 
        ORG $
 
        LD IX,#7000
 
        LD HL,P1
 
        LD DE,P2
 
        LD BC,LENP
 
CP0    LD A,(DE)
 
        SUB (HL)
 
        JR Z,CPOK
 
        CP #40
 
        JR NZ,ERR
 
        LD (IX),E
 
        LD (IX+1),D
 
        INC IX,IX
 
CPOK    INC HL,DE
 
        DEC BC
 
        LD A,B
 
        OR C
 
        JR NZ,CP0
 
        RET  
 
ERR    LD HL,0
 
        LD DE,#5800
 
        LD BC,768
 
        LDIR  
 
        RET  
 
      ELSE  
 
pp
 
      ENDIF D (Avb_stp+1),A
 
        LD A,Asl_sts-Asl_plk
 
        LD (Asl_plk-1),A;port_off ;;pi
 
        RET  
 
 
 
Bef_slT LD A,(DE)
 
        LD (Bsl_stp+1),A          ;;pi
 
      LD
 

Latest revision as of 21:49, 8 March 2020

PTUPLAY C��\V�W�Ÿ

;RUN=CREATE RELOC TBL
;pt3.67 micro SLOW player with 1 table
;no ini
;85 PATTERNS
;no IY!
;tempo1
        MACRO pp
tba_smp=MUZ+105
tba_orn=tba_smp+64
PLAYER
frq_A=MUZ
frq_B=MUZ+2
frq_C=MUZ+4
N_frq=MUZ+6
vol_A=MUZ+8
vol_B=MUZ+9
vol_C=MUZ+10
frq_E=MUZ+11
E_form=MUZ+13
play
        LD HL,int_qty
        DEC (HL)
        JP NZ,NOINS
;--- nota_A + calc_next_position ---
       INC HL
      ;LD HL,A_qty
       DEC (HL)
        JR NZ,Aq_0
Ach_adr LD DE,tab_vol+16
        LD A,(DE)
        OR A
        JR NZ,Ps_n0
_m1=$+2
       LD (N_frq),A ;;5!!!
       LD D,A          ;;
        LD (sav_SP2+1),SP
Psa_beg LD HL,MUZ+201
        LD A,(HL)
        INC A       ;AAA;6
        JR NZ,Ps_n1 ;NC ;6
Psa_lop LD HL,MUZ+201
Ps_n1   LD E,(HL)       ;6
        INC HL
        LD (Psa_beg+1),HL

Psa_chn LD HL,0
        ADD HL,DE
        ADD HL,DE
        LD SP,HL
        ;POP HL
;ia_pos0 LD BC,MUZ
        ;ADD HL,BC
        ;EX DE,HL       ;DE=adr_chn_A
       POP DE
        POP HL
        ;ADD HL,BC      ;HL=adr_chn_B
        LD (Bch_adr+1),HL
        POP HL
        ;ADD HL,BC      ;HL=adr_chn_C
        LD (Cch_adr+1),HL
sav_SP2 LD SP,0
Ps_n0
_m12=$+1
        LD H,'tba_smp
        CALL An_clc1
        LD (Ach_adr+1),DE
Ai_qty  LD A,0
        LD (A_qty),A
       DJNZ Aq_0
        LD H,B
        LD L,B
        LD (Asl_dsp+1),HL
Aq_0
;--- nota_B ---
       LD HL,B_qty
       DEC (HL)
        JR NZ,Bq_0
Bch_adr LD DE,0
_m13=$+1
        LD H,'tba_smp
        CALL Bn_clc1
        LD (Bch_adr+1),DE
Bi_qty  LD A,0
        LD (B_qty),A
       DJNZ Bq_0
        LD H,B
        LD L,B
        LD (Bsl_dsp+1),HL
Bq_0
;--- nota_C ---
       LD HL,C_qty
       DEC (HL)
        JR NZ,Cq_0
Cch_adr LD DE,0
_m14=$+1
        LD H,'tba_smp
        CALL Cn_clc1
        LD (Cch_adr+1),DE
Ci_qty  LD A,0
        LD (C_qty),A
       DJNZ Cq_0
        LD H,B
        LD L,B
        LD (Csl_dsp+1),HL
Cq_0
;--- install_E ---
Ei_form LD A,0         ;env_form
_m11=$+2
        LD (E_form),A
        OR A
        JR Z,temp
Ei_frq  LD HL,0        ;env_frq
        LD (E_frq+1),HL
        XOR A
        LD L,A
        LD H,A
        LD (Ei_form+1),A
        LD (Esl_frq+1),HL
        LD (Esl_stp+1),A

temp    LD A,3         ;temp
        LD (int_qty),A
NOINS
play_0 LD L,0        ;smp_sl_env
        EXX 
N_add   LD IX,0        ;HX=noise LX=mix
        LD (sav_SP1+1),SP
E_ins0  JR Ei_Q
Esl_ids LD HL,0        ;stp_sld_env
        LD (Esl_sds+1),HL
Esl_ist LD A,0         ;stp_sld_p
        LD (Esl_stp+1),A
        LD (Esl_sts+1),A
        LD A,24
        LD (E_ins0),A
Ei_Q
;---- sampler_A ----

Avb_lok LD A,-1
        LD H,A
        INC A
        JP Z,Avb_n0

As_adr  LD SP,DUMMYSMP ;sample
        POP DE         ;loop E=beg D=end
As_dsp  LD A,0
        LD L,A
        INC A
        CP D
        JR C,As_n0     ;bug NZ/C
        LD A,E
As_n0   LD (As_dsp+1),A
       SLA L
       SLA L
      ;ADD HL,HL,HL,HL
        ADD HL,SP
        LD SP,HL
        POP DE ;D= Nm ts ns Tm v3 v2 v1 v0
        LD A,D ;E= sv +- N4 N3 N2 N1 N0 Em
       OR #F0
       ;AND 15
        LD L,A
        LD A,E
        ADD A,A
As_Vsl  LD A,16
        JR NC,As_VslG
        JP M,As_n2
        SUB 1
        JR As_n3
As_n2   CP 31
As_n3   ADC A,0
        LD (As_Vsl+1),A
As_VslG
        ADD A,L
        JR C,As_n4
        XOR A
As_n4   CP 16
        JR C,Ag_vol
        LD A,15
Ag_vol  ADD A,#F0
        LD L,A
        LD H,'tab_vol
        LD A,(HL)
        SRL E
        JR C,Am_vo0
Am_vol  OR 0
Am_vo0  EXA 
        LD A,D
       ;LD L,A
        RLCA 
       ;LD H,A
        JR C,As_n5
As_Nsl  LD A,0
        ADD A,E
        BIT 5,D
        JR Z,As_n6
        LD (As_Nsl+1),A
As_n6   LD HX,A
        JR As_n7

As_n5   LD A,E
        AND 31
        CP 16
        JR C,As_Esl
        OR #F0
As_Esl  ADD A,0
        BIT 5,D
        JR Z,As_n9
        LD (As_Esl+1),A
As_n9  EXX 
       ADD A,L
       LD L,A
       EXX 
As_n7   LD A,D
        RLCA 
       RLCA 
        RLCA 
        RLCA 
        AND 9
        LD LX,A
        POP BC
       ;LD A,D
As_dtn  LD HL,0        ;dsp_frq_smp
        ADD HL,BC
       BIT 6,D
       ;AND 64
        JR Z,As_n10
        LD (As_dtn+1),HL
As_n10  EX DE,HL

Ao_adr  LD SP,DUMMYORN ;ornament
        POP BC         ;loop C=beg B=end
Ao_dsp  LD A,0
        LD L,A
        INC A
        CP B
        JR C,$+3       ;bug NZ/C
        LD A,C
        LD (Ao_dsp+1),A
        LD H,0
        ADD HL,SP
        LD A,(As_note+1)
        ADD A,(HL)     ;dsp_orn
        ADD A,A
     JR NC,$+3
     XOR A
        LD L,A
        LD H,'tab_frq
        LD SP,HL
        POP HL
        ADD HL,DE
Asl_dsp LD BC,0
        ADD HL,BC
_m3=$+2
        LD (frq_A),HL

Asl_stp LD A,0
        DEC A
        JP M,Asl_s0
        JR NZ,Asl_s1
Asl_tfr LD DE,0
       ADD HL,DE
       EX DE,HL
        ADD HL,BC
        LD (Asl_dsp+1),HL
        JR Asl_sts     ;port off/on
Asl_plk
Asl_not LD A,0
        LD L,A
        ADD HL,HL
        LD H,'tab_frq
        LD SP,HL
        POP HL
As_note CP 0
        JR NC,$+3
        EX DE,HL
        SBC HL,DE
        JR C,Asl_sts
        LD (As_note+1),A
        XOR A
        LD L,A
        LD (Asl_dsp+1),HL
        JR $+4
Asl_sts LD A,0
Asl_s1  LD (Asl_stp+1),A
Asl_s0  EXA 

_m7=$+2
Avb_n0  LD (vol_A),A
Avb_stp LD A,0
        DEC A
        JP M,Bvb_lok
        JR NZ,Avb_n1
        DEC A          ;;
        LD HL,Avb_lok+1;;
        XOR (HL)       ;;
        LD (HL),A      ;;4
Avb_frq LD A,0
        JR NZ,Avb_n1
Avb_sts LD A,0
Avb_n1  LD (Avb_stp+1),A

;---- sampler_B ----

Bvb_lok LD A,-1
        LD H,A
        INC A
        JP Z,Bvb_n0

Bs_adr  LD SP,DUMMYSMP
        POP DE
Bs_dsp  LD A,0
        LD L,A
        INC A
        CP D
        JR C,Bs_n0
        LD A,E
Bs_n0   LD (Bs_dsp+1),A
       SLA L
       SLA L
      ;ADD HL,HL,HL,HL
        ADD HL,SP
        LD SP,HL
        POP DE
        LD A,D
       OR #F0
       ;AND 15
        LD L,A
        LD A,E
        ADD A,A
Bs_Vsl  LD A,16
        JR NC,Bs_VslG
        JP M,Bs_n2
        SUB 1
        JR Bs_n3
Bs_n2   CP 31
Bs_n3   ADC A,0
        LD (Bs_Vsl+1),A
Bs_VslG
        ADD A,L
        JR C,Bs_n4
        XOR A
Bs_n4   CP 16
        JR C,Bg_vol
        LD A,15
Bg_vol  ADD A,#F0
        LD L,A
        LD H,'tab_vol
        LD A,(HL)
        SRL E
        JR C,Bm_vo0
Bm_vol  OR 0
Bm_vo0  EXA 
        LD A,D
       ;LD L,A
        RLCA 
       ;LD H,A
        JR C,Bs_n5
Bs_Nsl  LD A,0
        ADD A,E
        BIT 5,D
        JR Z,Bs_n6
        LD (Bs_Nsl+1),A
Bs_n6   LD HX,A
        JR Bs_n7

Bs_n5   LD A,E
        AND 31
        CP 16
        JR C,Bs_Esl
        OR #F0
Bs_Esl  ADD A,0
        BIT 5,D
        JR Z,Bs_n9
        LD (Bs_Esl+1),A
Bs_n9  EXX 
       ADD A,L
       LD L,A
       EXX 
Bs_n7   LD A,D
       RRCA 
       RRCA 
       RRCA 
        AND 18
        OR LX
        LD LX,A
        POP BC
       ;LD A,D
Bs_dtn  LD HL,0
        ADD HL,BC
       BIT 6,D
       ;AND 64
        JR Z,Bs_n10
        LD (Bs_dtn+1),HL
Bs_n10  EX DE,HL

Bo_adr  LD SP,DUMMYORN
        POP BC
Bo_dsp  LD A,0
        LD L,A
        INC A
        CP B
        JR C,Bo_n0
        LD A,C
Bo_n0   LD (Bo_dsp+1),A
        LD H,0
        ADD HL,SP
        LD A,(Bs_note+1)
        ADD A,(HL)
        ADD A,A
     JR NC,$+3
     XOR A
        LD L,A
        LD H,'tab_frq
        LD SP,HL
        POP HL
        ADD HL,DE
Bsl_dsp LD BC,0
        ADD HL,BC
_m5=$+2
        LD (frq_B),HL

Bsl_stp LD A,0
        DEC A
        JP M,Bsl_s0
        JR NZ,Bsl_s1
Bsl_tfr LD DE,0
       ADD HL,DE
       EX DE,HL
        ADD HL,BC
        LD (Bsl_dsp+1),HL
        JR Bsl_sts
Bsl_plk
Bsl_not LD A,0
        LD L,A
        ADD HL,HL
        LD H,'tab_frq
        LD SP,HL
        POP HL
Bs_note CP 0
        JR NC,$+3
        EX DE,HL
        SBC HL,DE
        JR C,Bsl_sts
        LD (Bs_note+1),A
        XOR A
        LD L,A
        LD (Bsl_dsp+1),HL
        JR $+4
Bsl_sts LD A,0
Bsl_s1  LD (Bsl_stp+1),A
Bsl_s0  EXA 

_m8=$+2
Bvb_n0  LD (vol_B),A
Bvb_stp LD A,0
        DEC A
        JP M,Cvb_lok
        JR NZ,Bvb_n1
        DEC A          ;;
        LD HL,Bvb_lok+1;;
        XOR (HL)       ;;
        LD (HL),A      ;;4
Bvb_frq LD A,0
        JR NZ,Bvb_n1
Bvb_sts LD A,0
Bvb_n1  LD (Bvb_stp+1),A

;---- sampler_C ----

Cvb_lok LD A,-1
        LD H,A
        INC A
        JP Z,Cvb_n0

Cs_adr  LD SP,DUMMYSMP
        POP DE
Cs_dsp  LD A,0
        LD L,A
        INC A
        CP D
        JR C,Cs_n0
        LD A,E
Cs_n0   LD (Cs_dsp+1),A
       SLA L
       SLA L
      ;ADD HL,HL,HL,HL
        ADD HL,SP
        LD SP,HL
        POP DE
        LD A,D
       OR #F0
       ;AND 15
        LD L,A
        LD A,E
        ADD A,A
Cs_Vsl  LD A,16
        JR NC,Cs_VslG
        JP M,Cs_n2
        SUB 1
        JR Cs_n3
Cs_n2   CP 31
Cs_n3   ADC A,0
        LD (Cs_Vsl+1),A
Cs_VslG
        ADD A,L
        JR C,Cs_n4
        XOR A
Cs_n4   CP 16
        JR C,Cg_vol
        LD A,15
Cg_vol  ADD A,#F0
        LD L,A
        LD H,'tab_vol
        LD A,(HL)
        SRL E
        JR C,Cm_vo0
Cm_vol  OR 0
Cm_vo0  EXA 
        LD A,D
       ;LD L,A
        RLCA 
       ;LD H,A
        JR C,Cs_n5
Cs_Nsl  LD A,0
        ADD A,E
        BIT 5,D
        JR Z,Cs_n6
        LD (Cs_Nsl+1),A
Cs_n6   LD HX,A
        JR Cs_n7

Cs_n5   LD A,E
        AND 31
        CP 16
        JR C,Cs_Esl
        OR #F0
Cs_Esl  ADD A,0
        BIT 5,D
        JR Z,Cs_n9
        LD (Cs_Esl+1),A
Cs_n9  EXX 
       ADD A,L
       LD L,A
       EXX 
Cs_n7   LD A,D
        RRCA 
        RRCA 
       ;RRCA
        AND 36
        OR LX
        LD LX,A
        POP BC
       ;LD A,D
Cs_dtn  LD HL,0
        ADD HL,BC
       BIT 6,D
       ;AND 64
        JR Z,Cs_n10
        LD (Cs_dtn+1),HL
Cs_n10  EX DE,HL

Co_adr  LD SP,DUMMYORN
        POP BC
Co_dsp  LD A,0
        LD L,A
        INC A
        CP B
        JR C,Co_n0
        LD A,C
Co_n0   LD (Co_dsp+1),A
        LD H,0
        ADD HL,SP
        LD A,(Cs_note+1)
        ADD A,(HL)
        ADD A,A
     JR NC,$+3
     XOR A
        LD L,A
        LD H,'tab_frq
        LD SP,HL
        POP HL
        ADD HL,DE
Csl_dsp LD BC,0
        ADD HL,BC
_m6=$+2
        LD (frq_C),HL

Csl_stp LD A,0
        DEC A
        JP M,Csl_s0
        JR NZ,Csl_s1
Csl_tfr LD DE,0
       ADD HL,DE
       EX DE,HL
        ADD HL,BC
        LD (Csl_dsp+1),HL
        JR Csl_sts
Csl_plk
Csl_not LD A,0
        LD L,A
        ADD HL,HL
        LD H,'tab_frq
        LD SP,HL
        POP HL
Cs_note CP 0
        JR NC,$+3
        EX DE,HL
        SBC HL,DE
        JR C,Csl_sts
        LD (Cs_note+1),A
        XOR A
        LD L,A
        LD (Csl_dsp+1),HL
        JR $+4
Csl_sts LD A,0
Csl_s1  LD (Csl_stp+1),A
Csl_s0  EXA 

_m9=$+2
Cvb_n0  LD (vol_C),A
Cvb_stp LD A,0
        DEC A
        JP M,Esl_
        JR NZ,Cvb_n1
        DEC A          ;;
        LD HL,Cvb_lok+1;;
        XOR (HL)       ;;
        LD (HL),A      ;;4
Cvb_frq LD A,0
        JR NZ,Cvb_n1
Cvb_sts LD A,0
Cvb_n1  LD (Cvb_stp+1),A

;---- sampler_E ----

Esl_    EXX 
        LD A,L
Esl_frq LD DE,0        ;stp_sl_env
E_frq   LD HL,0        ;frq_env
        ADD A,L
        LD L,A
        ADD HL,DE
_m10=$+2
        LD (frq_E),HL
Esl_stp LD A,0
        DEC A
        JP M,sav_SP1
        JR NZ,E_n0
Esl_sds LD HL,0
        ADD HL,DE
        LD (Esl_frq+1),HL
Esl_sts LD A,0
E_n0    LD (Esl_stp+1),A

;---- out_to_processor ----

sav_SP1 LD SP,0
out_
        LD DE,#FFBF
        LD C,-3
_m4=$+2
        LD HL,frq_A

        LD A,7
        CALL OUTER

        LD A,HX        ;noise
        LD (N_add+3),A
        ADD A,(HL)
        OUT (C),A
        INC L
        LD B,D
        OUT (C),L
        LD A,LX        ;mix
        LD B,E
        OUT (C),A
        INC L

        LD A,6
        CALL OUTER

        OR (HL)
       RET Z
        OUT (C),A
        LD (HL),0 ;;4
       RET 

;--- nota_A ---

Ani_vol JR NZ,Ani_v0
        LD (Avb_stp+1),A
        DEC A
        LD (Avb_lok+1),A
        RET 
Ani_v0
       DUP 4
       ADD A,A
       EDUP 
        LD (Ag_vol+1),A
       JP  An_clc2
Ani_s_o
       CALL ornPP
       LD (Ao_adr+1),BC
Ani_vse
       CALL NZ,EiPP
Ani_sm0 LD (Am_vol+1),A
        XOR A
        LD (Ao_dsp+1),A
        LD A,(DE)
        INC DE
       JR Anism0U ;
Ani_smp RET Z     ;
        ADD A,A   ;
Anism0U
       CALL smpPP
        LD (As_adr+1),BC

An_clc1 LD BC,#1020
An_clc2 LD A,(DE)
        INC DE
        ADD A,B
        JR C,Ani_s_o
        ADD A,C
        JR C,Ani_smp
        ADD A,B
        JR C,Ani_vol
        ADD A,B
        JR C,Ani_vqe
        ADD A,96
        JR C,Ani_not
        ADD A,B
        JR C,Ani_orn
        ADD A,48
        JR C,Ani_vse
        LD HL,A_eff+30
        LD BC,As_note+1
       CALL NPUSH
        JR An_clc1

Ani_vqe JR Z,Ani_v1
        DEC A
        JR NZ,Ani_e0
        LD A,(DE)
        LD (Ai_qty+1),A
        INC DE
        JR An_clc2

Ani_e0 CALL EiPP
Ani_v1  LD (Am_vol+1),A
        JR An_clc2
Ani_orn
       CALL ornPP
       LD (Ao_adr+1),BC
        LD (Ao_dsp+1),A
        JR An_clc1

Ani_not LD (As_note+1),A
        XOR A
        LD H,A
        LD L,A
        LD (As_dsp+1),A
        LD (As_Nsl+1),A
        LD (As_Esl+1),A
        LD (Ao_dsp+1),A
        LD (Asl_stp+1),A
        LD (Avb_lok+1),A
        LD (Avb_stp+1),A
       ;LD (Asl_dsp+1),HL
        LD (As_dtn+1),HL
       LD A,16
       LD (As_Vsl+1),A
      ;JR LDB1
        LD B,1
        RET 

;--- nota_B ---

Bni_vol JR NZ,Bni_v0
        LD (Bvb_stp+1),A
        DEC A
        LD (Bvb_lok+1),A
        RET 
Bni_v0
       DUP 4
       ADD A,A
       EDUP 
        LD (Bg_vol+1),A
       JP  Bn_clc2
Bni_s_o
       CALL ornPP
       LD (Bo_adr+1),BC
Bni_vse
       CALL NZ,EiPP
Bni_sm0 LD (Bm_vol+1),A
        XOR A
        LD (Bo_dsp+1),A
        LD A,(DE)
        INC DE
       JR Bnism0U ;
Bni_smp RET Z     ;
        ADD A,A   ;
Bnism0U
       CALL smpPP
        LD (Bs_adr+1),BC

Bn_clc1 LD BC,#1020
Bn_clc2 LD A,(DE)
        INC DE
        ADD A,B
        JR C,Bni_s_o
        ADD A,C
        JR C,Bni_smp
        ADD A,B
        JR C,Bni_vol
        ADD A,B
        JR C,Bni_vqe
        ADD A,96
        JR C,Bni_not
        ADD A,B
        JR C,Bni_orn
        ADD A,C
        JR C,Bni_noi
        ADD A,B
        JR C,Bni_vse
        LD HL,B_eff+30
        LD BC,Bs_note+1
       CALL NPUSH
        JR Bn_clc1

Bni_not LD (Bs_note+1),A
        XOR A
        LD H,A
        LD L,A
        LD (Bs_dsp+1),A
        LD (Bs_Nsl+1),A
        LD (Bs_Esl+1),A
        LD (Bo_dsp+1),A
        LD (Bsl_stp+1),A
        LD (Bvb_lok+1),A
        LD (Bvb_stp+1),A
       ;LD (Bsl_dsp+1),HL
        LD (Bs_dtn+1),HL
       LD A,16
       LD (Bs_Vsl+1),A
LDB1   LD B,1
        RET 

_m2=$+2
Bni_noi LD (N_frq),A;GLOBALnoise
        JR Bn_clc2

Bni_vqe JR Z,Bni_v1
        DEC A
        JR NZ,Bni_e0
        LD A,(DE)
        LD (Bi_qty+1),A
        INC DE
        JR Bn_clc2

Bni_e0 CALL EiPP
Bni_v1  LD (Bm_vol+1),A
        JR Bn_clc2
Bni_orn
       CALL ornPP
       LD (Bo_adr+1),BC
        LD (Bo_dsp+1),A
        JR Bn_clc1

;--- nota_C ---

Cni_not LD (Cs_note+1),A
        XOR A
        LD H,A
        LD L,A
        LD (Cs_dsp+1),A
        LD (Cs_Nsl+1),A
        LD (Cs_Esl+1),A
        LD (Co_dsp+1),A
        LD (Csl_stp+1),A
        LD (Cvb_lok+1),A
        LD (Cvb_stp+1),A
       ;LD (Csl_dsp+1),HL
        LD (Cs_dtn+1),HL
       LD A,16
       LD (Cs_Vsl+1),A
      ;JR LDB1
        LD B,1
        RET 

Cni_vol JR NZ,Cni_v0
        LD (Cvb_stp+1),A
        DEC A
        LD (Cvb_lok+1),A
        RET 
Cni_v0
       DUP 4
       ADD A,A
       EDUP 
        LD (Cg_vol+1),A
       JP  Cn_clc2
Cni_s_o
       CALL ornPP
       LD (Co_adr+1),BC
Cni_vse
       CALL NZ,EiPP
Cni_sm0 LD (Cm_vol+1),A
        XOR A
        LD (Co_dsp+1),A
        LD A,(DE)
        INC DE
       JR Cnism0U ;
Cni_smp RET Z     ;
        ADD A,A   ;
Cnism0U
       CALL smpPP
        LD (Cs_adr+1),BC

Cn_clc1 LD BC,#1020
Cn_clc2 LD A,(DE)
        INC DE
        ADD A,B
        JR C,Cni_s_o
        ADD A,C
        JR C,Cni_smp
        ADD A,B
        JR C,Cni_vol
        ADD A,B
        JR C,Cni_vqe
        ADD A,96
        JR C,Cni_not
        ADD A,B
        JR C,Cni_orn
        ADD A,48
        JR C,Cni_vse
        LD HL,C_eff+30
        LD BC,Cs_note+1
       CALL NPUSH
        JR Cn_clc1

Cni_vqe JR Z,Cni_v1
        DEC A
        JR NZ,Cni_e0
        LD A,(DE)
        LD (Ci_qty+1),A
        INC DE
        JR Cn_clc2

Cni_e0 CALL EiPP
Cni_v1  LD (Cm_vol+1),A
        JR Cn_clc2
Cni_orn
       CALL ornPP
       LD (Co_adr+1),BC
        LD (Co_dsp+1),A
        JR Cn_clc1

;---- special_effects_COM.xxxx ----

EiPP   LD (Ei_form+1),A
       LD A,(DE)
       INC DE
       LD (Ei_frq+2),A
       LD A,(DE)
       INC DE
       LD (Ei_frq+1),A
       LD A,16
       RET ;16

Aef_dSm LD A,(DE)      ;dsp_smp
        INC DE
        LD (As_dsp+1),A           ;;si
        RET 
Bef_dSm LD A,(DE)
        INC DE
        LD (Bs_dsp+1),A           ;;si
        RET 
Cef_dSm LD A,(DE)
        INC DE
        LD (Cs_dsp+1),A
        RET 

A_eff   DW Aef_slT ;1xxx,2xxx - sld_tone
        DW Aef_nsT ;3xxx - port_note
        DW Aef_dSm ;4.xx - dsp_smp
        DW Aef_dOr ;5.xx - dsp_orn
        DW Aef_vib ;6.xx - vibrato
Aef_vib LD A,(DE)
        INC DE
       JR Aef_vjr
        DW Eef_sld ;9xxx,Axxx - sld_env
        DW eff_tmp ;B.xx - temp

Aef_vjr LD (Avb_sts+1),A;fix fr/st;;ist
       LD (Avb_stp+1),A
        LD A,(DE)
        INC DE
        LD (Avb_frq+1),A;fix st/fr;;ifr
        RET 

B_eff   DW Bef_slT
        DW Bef_nsT
        DW Bef_dSm
        DW Bef_dOr
        DW Bef_vib
Bef_vib LD A,(DE)
        INC DE
       JR Bef_vjr
        DW Eef_sld
        DW eff_tmp

Bef_vjr LD (Bvb_sts+1),A;fix fr/st;;ist
       LD (Bvb_stp+1),A
        LD A,(DE)
        INC DE
        LD (Bvb_frq+1),A;fix st/fr;;ifr
        RET 

C_eff   DW Cef_slT
        DW Cef_nsT
        DW Cef_dSm
        DW Cef_dOr
        DW Cef_vib
int_qty DB 1
A_qty  DB 1
B_qty  DB 1
C_qty  DB 1
        DW Eef_sld
        DW eff_tmp

Cef_vib LD A,(DE)
        INC DE
        LD (Cvb_sts+1),A;fix fr/st
        LD (Cvb_stp+1),A
        LD A,(DE)
        INC DE
        LD (Cvb_frq+1),A;fix st/fr
        RET 

Aef_nsT
       CALL Aef_slT
       ;LD (Asl_pfr+1),HL         ;;pi
       CALL GETHL
        LD (Asl_tfr+1),HL         ;;pi
        LD (Asl_plk-1),A;port_on  ;;pi_lok
        LD HL,As_note+1           ;;si
        LD A,(HL)
        LD (Asl_not+1),A          ;;pi
AnsQ   EXA 
        LD (HL),A
       LD B,0
        RET 
Bef_nsT
       CALL Bef_slT
       ;LD (Bsl_pfr+1),HL         ;;pi
       CALL GETHL
        LD (Bsl_tfr+1),HL         ;;pi
        LD (Bsl_plk-1),A          ;;pi_lok
        LD HL,Bs_note+1           ;;si
        LD A,(HL)
        LD (Bsl_not+1),A          ;;pi
       JR AnsQ
Cef_nsT
       CALL Cef_slT
       ;LD (Csl_pfr+1),HL
       CALL GETHL
        LD (Csl_tfr+1),HL
        LD (Csl_plk-1),A
        LD HL,Cs_note+1
        LD A,(HL)
        LD (Csl_not+1),A
       JR AnsQ

Aef_slT LD A,(DE)
        LD (Asl_stp+1),A          ;;pi
       LD (Asl_sts+1),A
       CALL IGETHL     ;sld_ton
        LD (Asl_tfr+1),HL         ;;pi
       LD (Avb_stp+1),A
        LD A,Asl_sts-Asl_plk
        LD (Asl_plk-1),A;port_off ;;pi
        RET 

Bef_slT LD A,(DE)
        LD (Bsl_stp+1),A          ;;pi
       LD (Bsl_sts+1),A
       CALL IGETHL
        LD (Bsl_tfr+1),HL         ;;pi
       LD (Bvb_stp+1),A
        LD A,Bsl_sts-Bsl_plk
        LD (Bsl_plk-1),A          ;;pi
        RET 

Cef_slT LD A,(DE)
        LD (Csl_stp+1),A
        LD (Csl_sts+1),A
       CALL IGETHL
        LD (Csl_tfr+1),HL
        LD (Cvb_stp+1),A
        LD A,Csl_sts-Csl_plk
        LD (Csl_plk-1),A
        RET 

eff_tmp
        LD A,(DE)
DISPLAY $,"=#XX00"
tab_vol
        INC DE
        LD (temp+1),A
        RET 

ornPP  ADD A,A
       ADD A,tba_orn-tba_smp
smpPP  ADD A,tba_smp
       LD L,A
       LD C,(HL)
       INC L
       LD B,(HL)
        XOR A
       RET ;11
DUMMYORN
DUMMYSMP
DB 0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1
DB 0,0,0,0,1,1,1,1,1,1,1,1,2,2,2,2
DB 0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3
DB 0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4
DB 0,0,1,1,1,2,2,2,3,3,3,4,4,4,5,5
DB 0,0,1,1,2,2,2,3,3,4,4,4,5,5,6,6
DB 0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7
DB 0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8
DB 0,1,1,2,2,3,4,4,5,5,6,7,7,8,8,9
DB 0,1,1,2,3,3,4,5,5,6,7,7,8,9,9,10
DB 0,1,1,2,3,4,4,5,6,7,7,8,9,10,10,11
DB 0,1,2,2,3,4,5,6,6,7,8,9,10,10,11,12
DB 0,1,2,3,3,4,5,6,7,8,9,10,10,11,12,13
DB 0,1,2,3,4,5,6,7,7,8,9,10,11,12,13,14
DB 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
tab_frq DS #C0
Eef_sld LD A,(DE)      ;sld_env
        LD (Esl_ist+1),A          ;;stp
       CALL IGETHL
        LD (Esl_ids+1),HL         ;;sds
        LD A,6
        LD (E_ins0),A
        RET ;16

       OUTI 
OUTER  LD B,D
       OUT (C),L
       LD B,E
       DEC A
       JR NZ,OUTER-2
       RET ;10

Aef_dOr LD A,(DE)      ;dsp_orn
        INC DE
        LD (Ao_dsp+1),A           ;;oi
        RET 
Bef_dOr LD A,(DE)
        INC DE
        LD (Bo_dsp+1),A           ;;oi
        RET 
Cef_dOr LD A,(DE)
        INC DE
        LD (Co_dsp+1),A
        RET ;6

IGETHL INC DE
GETHL
       EX DE,HL
       LD E,(HL)
       INC HL
       LD D,(HL)
       INC HL
       EX DE,HL
        XOR A
       RET ;9

NPUSH  RLA 
       ADD A,L
       LD L,A
     ;LD H,'A_eff
       LD A,(HL)
       INC L
       LD H,(HL)
       LD L,A
       EX (SP),HL
       LD A,(BC)
      EXA 
       JP (HL) ;11
LENP=$-PLAYER
        DISPLAY "SIZE=",LENP
T_m
        DW _m1
        DW _m2
        DW _m3
        DW _m4
        DW _m5
        DW _m6
        DW _m7
        DW _m8
        DW _m9
        DW _m10
        DW _m11
        DW _m12
        DW _m13
        DW _m14
T_m_l=$-T_m/2
        ENDM 

       IF0 $-#8000
MUZ
P1
        LOCAL 
pp
        ENDL 
        ORG #C000
P2
pp
        ORG $
        LD IX,#7000
        LD HL,P1
        LD DE,P2
        LD BC,LENP
CP0     LD A,(DE)
        SUB (HL)
        JR Z,CPOK
        CP #40
        JR NZ,ERR
        LD (IX),E
        LD (IX+1),D
        INC IX,IX
CPOK    INC HL,DE
        DEC BC
        LD A,B
        OR C
        JR NZ,CP0
        RET 
ERR     LD HL,0
        LD DE,#5800
        LD BC,768
        LDIR 
        RET 
       ELSE 
pp
       ENDIF D (Avb_stp+1),A
        LD A,Asl_sts-Asl_plk
        LD (Asl_plk-1),A;port_off ;;pi
        RET 

Bef_slT LD A,(DE)
        LD (Bsl_stp+1),A          ;;pi
       LD