Changes

PROTRACKER372 PTUPLAY H

22,298 bytes added, 23:30, 14 February 2020
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..."
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