PROTRACKER372 PLAYFAS4 H
playFAS4C���i�jTя;fast(long) player,can be INCLUDEd
- E21 3.31 by Nick/GDC Воронеж'97
- D86 3.51 fix Mm<M,MOnS+eR Самара 26xii00
- C03 3.695 fix AlCo 1vi01-26xi05
- C11 3.699 fix AlCo (3xxx chnA/B when old 3xxx ends только что)
IFN ?frq
frq=1;all freq tables(3.4x)
ENDIF IFN ?msx
msx=0
ENDIF IFN ?smpfix
smpfix=1;vol,T,E/N cumulations in SMPs
ENDIF IFN ?port3
port3=1;tone port.
ENDIF IFN ?vib6
vib6=1;vibrate
ENDIF IFN ?ts2
ts2=0;2nd TS player;играет пат47 вместо пат0 и т.д.
ENDIF
IFN ?jp-2 MACRO jp JR \0 ;JP ENDM ENDIF
IFN ?m4-2 MACRO m4 SLA L,L ENDM ENDIF
IFN ?shut-2 MACRO shut ;LD HL,#E IFN msx LD BC,#A0 ELSE LD BC,-3 ENDIF DEC L OUT (C),L IFN msx LD C,#A1 ELSE LD B,#BF ENDIF OUT (C),A;0/255 JR NZ,$-10 ENDM ENDIF
IFN ?esld-2 MACRO esld
Eef_sld LD A,(DE)
INC DE LD (Esl_ist+1),A LD A,(DE),L,A INC DE LD A,(DE),H,A INC DE LD (Esl_ids+1),HL LD A,6,(E_ins0),A RET ENDM ENDIF
IFN ?l-2 MACRO l LD A,(DE) INC DE LD (\0),A RET ENDM ENDIF
IF0 $-#8000
StAnDaLoNe
ORG #C000 ENDIF
compile
LD HL,module JR install JP play IFN frq JR stop ENDIF
install
DI LD (sav_SP0+1),SP LD (ia_pos0+1),HL IFN frq PUSH HL LD DE,100 ADD HL,DE PUSH DE PUSH HL DEC HL LD E,(HL) LD HL,NT_DATA LD BC,T_ ADD HL,DE ADD HL,DE ADD HL,DE LD E,(HL) CALL MAKEfrq POP HL POP DE POP BC ELSE LD B,H,C,L LD DE,100 ADD HL,DE ENDIF LD A,(HL) INC HL LD (temp+1),A LD SP,HL ADD HL,DE LD (Psa_beg+1),HL POP AF LD E,A ADD HL,DE LD (Psa_lop+1),HL POP HL ADD HL,BC LD (Psa_chn+1),HL LD HL,tba_smp
ia_s0 EX DE,HL
POP HL ADD HL,BC EX DE,HL LD (HL),E INC L LD (HL),D INC L JR NZ,ia_s0 INC L LD H,L LD (A_qty),HL LD (C_qty),HL
sav_SP0 LD SP,0 stop
LD HL,DUMMYORN LD (Ao_adr+1),HL LD (Bo_adr+1),HL LD (Co_adr+1),HL LD (Asi_adr+1),HL LD (Bsi_adr+1),HL LD (Cs_adr+1),HL LD (Ach_adr+1),HL XOR A LD (Am_vol+1),A LD (Bm_vol+1),A LD (Cm_vol+1),A LD (Ei_form+1),A ;no glu glu after switch module SUB 16 ;FIX LD (Agi_vol+1),A LD (Bgi_vol+1),A LD (Cg_vol+1),A SBC A,A LD (Avb_lok+1),A LD (Cvb_lok+1),A LD (Bvb_lok+1),A XOR A IF0 frq NOP ENDIF shut RET IF0 frq
esld
ENDIF
tba_smp DS 64,0 tba_orn DS 32,0
DISPLAY $
tab_vol frq_A DB 0,0 frq_B DB 0,0 frq_C DB 0,0 N_frq DB 0 ;;4
DB 0 ;mix ;no_use
vol_A DB 0 vol_B DB 0 vol_C DB 0 frq_E DB 0,0 E_form DB 0 ;;4 DUMMYORN DUMMYSMP
DS 2 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 DD 0001010203030405050607070809090A DD 000101020304040506070708090A0A0B DD 0001020203040506060708090A0A0B0C DD 00010203030405060708090A0A0B0C0D DD 00010203040506070708090A0B0C0D0E DD 000102030405060708090A0B0C0D0E0F
tab_frq
DS #C0 IFN ?tabl-2 MACRO tabl IF0 port3
\0ef_nsT=0
ENDIF IF0 vib6
\0ef_vib=0
ENDIF
\0_eff DW \0ef_slT ;1/2xxx
DW \0ef_nsT ;3xxx DW \0ef_dSm ;4.xx DW \0ef_dOr ;5.xx DW \0ef_vib ;6.xx IF0 vib6 DS 4,1 ELSE
\0ef_vib LD A,(DE)
INC DE JR \0VIB ENDIF DW Eef_sld DW eff_tmp IFN $-18!$&#FF00 DISPLAY "ERROR \0_eff ENDIF IFN vib6
- 0ef_vib LD A,(DE)
;INC DE
\0VIB
LD (\0vb_ist+1),A;fix fr/st IF0 "\0 "-"C " LD (\0vb_stp+1),A ENDIF LD A,(DE) INC DE LD (\0vb_ifr+1),A;fix st/fr IFN "\0 "-"C " LD A,6,(\0_ins4),A ENDIF RET ENDIF ENDM ENDIF
tabl A tabl B tabl C
A_qty NOP B_qty NOP C_qty NOP play JP play_0
EXX ;for B'<>1 LD A,#C3,(play),A
- --- install_A ----
XOR A LD L,A,H,A LD DE,#618
A_gli LD (Asl_dsp+1),HL A_ins0 JR A_ins0Q
LD (As_dsp+1),A ;note IFN smpfix LD (As_Nsl+1),A LD (As_Esl+1),A LD (As_dtn+1),HL ENDIF LD (Ao_dsp+1),A ;todo VARIABLE? LD (Asl_stp+1),A IFN vib6 LD (Avb_stp+1),A ENDIF
Avb_cpl CPL
LD (Avb_lok+1),A IFN port3 LD A,(A_ins3) ;3.699 CP E;24 ; JZ $+8 ; LD A,(Api_lok+1) ; OR A ; JZ $+7 ; ENDIF
Asi_not LD A,0
LD (As_note+1),A
Asi_adr LD HL,0
LD (As_adr+1),HL IFN smpfix LD A,16 LD (As_Vsl+1),A ENDIF
A_ins0Q
Agi_vol LD A,0 ;global_volume avol LD (Ag_vol+1),A
A_ins2 JR A_ins2Q
XOR A ;ornament LD (Ao_dsp+1),A
Aoi_adr LD HL,0
LD (Ao_adr+1),HL
Ami_vol LD A,0
LD (Am_vol+1),A
A_ins2Q A_ins3 JR A_ins3Q
- port & sld
Api_stp LD A,0
LD (Asl_stp+1),A LD (Asl_sts+1),A
Api_tfr LD HL,0
LD (Asl_tfr+1),HL IFN port3
Api_not LD A,0
LD (Asl_not+1),A
Api_lok LD A,0
LD (Asl_plk-1),A ENDIF IFN vib6 XOR A LD (Avb_stp+1),A ENDIF
A_ins3Q
IFN vib6
A_ins4 JR A_ins4Q
LD A,E;24 ;vib LD (A_ins4),A
Avb_ist LD A,0
LD (Avb_sts+1),A LD (Avb_stp+1),A
Avb_ifr LD A,0
LD (Avb_frq+1),A
A_ins4Q
ENDIF
A_ins5 JR A_ins5Q Asi_dsp LD A,0 ;disp_sample
LD (As_dsp+1),A LD A,E;24 LD (A_ins5),A
A_ins5Q A_ins6 JR A_ins6Q Aoi_dsp LD A,0
LD (Ao_dsp+1),A;disp_ornament LD A,E;24 LD (A_ins6),A
A_ins6Q
- --- install_B ---
XOR A LD L,A,H,A
B_gli LD (Bsl_dsp+1),HL B_ins0 JR B_ins0Q
LD (Bs_dsp+1),A IFN smpfix LD (Bs_Nsl+1),A LD (Bs_Esl+1),A LD (Bs_dtn+1),HL ENDIF LD (Bo_dsp+1),A LD (Bsl_stp+1),A IFN vib6 LD (Bvb_stp+1),A ENDIF
Bvb_cpl CPL
LD (Bvb_lok+1),A IFN port3 LD A,(B_ins3) ;3.699 CP E;24 ; JZ $+8 ; LD A,(Bpi_lok+1) ; OR A ; JZ $+7 ; ENDIF
Bsi_not LD A,0
LD (Bs_note+1),A
Bsi_adr LD HL,0
LD (Bs_adr+1),HL IFN smpfix LD A,16 LD (Bs_Vsl+1),A ENDIF
B_ins0Q
Bgi_vol LD A,0 bvol LD (Bg_vol+1),A
B_ins2 JR B_ins2Q
XOR A LD (Bo_dsp+1),A
Boi_adr LD HL,0
LD (Bo_adr+1),HL
Bmi_vol LD A,0
LD (Bm_vol+1),A
B_ins2Q B_ins3 JR B_ins3Q Bpi_stp LD A,0
LD (Bsl_stp+1),A LD (Bsl_sts+1),A
Bpi_tfr LD HL,0
LD (Bsl_tfr+1),HL IFN port3
Bpi_not LD A,0
LD (Bsl_not+1),A
Bpi_lok LD A,0
LD (Bsl_plk-1),A ENDIF IFN vib6 XOR A LD (Bvb_stp+1),A ENDIF
B_ins3Q
IFN vib6
B_ins4 JR B_ins4Q
LD A,E;24 LD (B_ins4),A
Bvb_ist LD A,0
LD (Bvb_sts+1),A LD (Bvb_stp+1),A
Bvb_ifr LD A,0
LD (Bvb_frq+1),A
B_ins4Q
ENDIF
B_ins5 JR B_ins5Q Bsi_dsp LD A,0
LD (Bs_dsp+1),A LD A,E;24 LD (B_ins5),A
B_ins5Q B_ins6 JR B_ins6Q Boi_dsp LD A,0
LD (Bo_dsp+1),A LD A,E;24 LD (B_ins6),A
B_ins6Q
- --- install_E ---
Ei_form LD A,0 ;env_form
LD (E_form),A ;;4 OR A JR Z,temp
Ei_frq LD HL,0 ;env_frq
LD (E_frq+1),HL XOR A LD L,A,H,A LD (Ei_form+1),A LD (Esl_frq+1),HL LD (Esl_stp+1),A
temp LD A,3,(int_qty+1),A Ni_frq LD A,0,(N_frq),A ;;4
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,E;24 LD (E_ins0),A
Ei_Q
- --- nota_A + calc next position ---
LD HL,A_qty DEC (HL) LD H,E ;LD L,1 ;E LD B,E EXX JR NZ,AqtyQ ;LD (avol+2),A
Ach_adr LD DE,tab_vol+16
LD A,(DE) OR A JR NZ,Ps_n0 LD (Ni_frq+1),A ;;5!!! LD D,A ;; LD (sav_SP2+1),SP
Psa_beg LD HL,module+201
LD A,(HL) ;LD E,A ;6 INC A ;AAA;6 JR NZ,Ps_n1 ;NC ;6
Psa_lop LD HL,module+201 Ps_n1
IFN ts2 LD A,47*3 SUB (HL) LD E,A ELSE LD E,(HL) ;6 ENDIF 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,0
ADD HL,BC EX DE,HL ;DE=adr_chn_A 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
LD H,'compile CALL An_clc1 LD (Ach_adr+1),DE
Ai_qty LD A,0,(A_qty),A AqtyQ LD A,1
DJNZ $+4 LD A,34 LD (A_gli),A EXX LD A,B,(A_ins2),A LD A,H,(A_ins0),A LD A,E,(A_ins3),A
play_0 LD L,0 ;smp_sl_env
EXX
N_add LD IX,0 ;HX=noise LX=mix
LD (sav_SP1+1),SP
IFN ?sam1-2 MACRO sam1
\0vb_lok LD A,-1
LD H,A INC A JP Z,\0vb_n0
\0s_adr LD SP,DUMMYSMP ;sample
POP DE ;loop E=beg D=end
\0s_dsp LD A,0
LD L,A INC A CP D JR C,$+3 ;bug NZ/C LD A,E LD (\0s_dsp+1),A m4 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 IFN smpfix OR #F0 LD L,A LD A,E ADD A,A
\0s_Vsl LD A,16
JR NC,\0s_VslG JP M,\0s_n2 SUB 1 JR $+4
\0s_n2 CP 31
ADC A,0 LD (\0s_Vsl+1),A
\0s_VslG
ADD A,L JR C,$+3 XOR A CP 16 JR C,$+4 LD A,15 ELSE AND 15 ENDIF
\0g_vol ADD A,#F0
LD L,A,H,'tab_vol LD A,(HL) SRL E JR C,$+4
\0m_vol OR 0
EXA LD A,D RLCA JR C,\0s_n5 IFN smpfix
\0s_Nsl LD A,0
ADD A,E BIT 5,D JR Z,$+5 LD (\0s_Nsl+1),A LD HX,A ELSE LD HX,E ENDIF jp \0s_n7
\0s_n5 LD A,E
AND 31 CP 16 JR C,$+4 OR #F0 IFN smpfix
\0s_Esl ADD A,0
BIT 5,D JR Z,$+5 LD (\0s_Esl+1),A ENDIF EXX ADD A,L LD L,A EXX
\0s_n7 LD A,D
RRCA RRCA AND 36 ENDM ENDIF
IFN ?sam2-2 MACRO sam2 LD LX,A IFN smpfix POP BC
\0s_dtn LD HL,0 ;dsp_frq_smp
ADD HL,BC BIT 6,D JR Z,$+5 LD (\0s_dtn+1),HL EX DE,HL ELSE POP DE ENDIF
\0o_adr LD SP,DUMMYORN ;ornament
POP BC ;loop C=beg B=end
\0o_dsp LD A,0
LD L,A INC A CP B JR C,$+3 ;bug NZ/C LD A,C LD (\0o_dsp+1),A LD H,0 ADD HL,SP IFN port3 LD A,(\0s_note+1) ELSE
\0s_note LD A,0
ENDIF ADD A,(HL) ;dsp_orn ADD A,A JR NC,$+3 XOR A LD L,A,H,'tab_frq LD SP,HL POP HL ADD HL,DE
\0sl_dsp LD BC,0
ADD HL,BC LD (frq_\0),HL
\0sl_stp LD A,0
DEC A JP M,\0sl_s0 JR NZ,\0sl_s1
\0sl_tfr LD DE,0
ADD HL,DE EX DE,HL ADD HL,BC LD (\0sl_dsp+1),HL IFN port3 JR \0sl_sts ;port off/on
\0sl_plk \0sl_not LD A,0
LD L,A ADD HL,HL LD H,'tab_frq LD SP,HL POP HL
\0s_note CP 0
JR NC,$+3 EX DE,HL SBC HL,DE JR C,\0sl_sts LD (\0s_note+1),A XOR A LD L,A LD (\0sl_dsp+1),HL JR $+4 ENDIF
\0sl_sts LD A,0 \0sl_s1 LD (\0sl_stp+1),A \0sl_s0 EXA
\0vb_n0 LD (vol_\0),A
IFN vib6
\0vb_stp LD A,0
DEC A JP M,\0smpQ JR NZ,\0vb_n1 DEC A ;; LD HL,\0vb_lok+1;; XOR (HL) ;; LD (HL),A ;;4
\0vb_frq LD A,0
JR NZ,$+4
\0vb_sts LD A,0 \0vb_n1 LD (\0vb_stp+1),A
ENDIF
\0smpQ
ENDM ENDIF
sam1 A
RRCA RRCA
sam2 A sam1 B
RRCA OR LX
sam2 B sam1 C
OR LX
sam2 C
- ---- 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 ;stp_smp_sl_env LD L,A ADD HL,DE 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_
IFN msx LD DE,#A0A1 LD HL,frq_A DUP 6 LD C,D OUT (C),L LD C,E OUTI EDUP LD C,D OUT (C),L LD A,HX ;noise LD (N_add+3),A ADD A,(HL) ;;4 OUT (#A1),A INC L OUT (C),L LD A,LX ;mix TODO (HL) AND %00111111 OR %10000000 ;portA=input, portB=output OUT (#A1),A INC L OUT (C),L LD C,E OUTI DUP 4 LD C,D OUT (C),L LD C,E OUTI EDUP LD A,(HL) ;;4 OR A JR Z,int_qty LD C,D OUT (C),L OUT (#A1),A LD (HL),0 ;;4 ELSE ;zx LD DE,#FFBF LD BC,-3 LD HL,frq_A DUP 6 OUT (C),L LD B,E OUTI LD B,D EDUP OUT (C),L LD A,HX ;noise LD (N_add+3),A ADD A,(HL) ;;4 LD B,E OUT (C),A INC L LD B,D OUT (C),L LD A,LX ;mix TODO (HL) LD B,E OUT (C),A INC L DUP 5 LD B,D OUT (C),L LD B,E OUTI EDUP LD A,(HL) ;;4 OR A JR Z,int_qty LD B,D OUT (C),L LD B,E OUT (C),A LD (HL),0 ;;4 ENDIF
- --- calc_next_positon_channels ---
int_qty LD A,3
DEC A LD (int_qty+1),A JR Z,notaC;if tmp=1,CALL notaB first!!! DEC A RET NZ
- --- nota_B ---
LD HL,B_qty DEC (HL) LD DE,#618 LD H,E ;LD L,1 ;E LD B,E EXX JR NZ,BqtyQ ;LD (bvol+2),A
Bch_adr LD DE,0
LD H,'compile CALL Bn_clc1 LD (Bch_adr+1),DE
Bi_qty LD A,0,(B_qty),A BqtyQ LD A,1
DJNZ $+4 LD A,34 LD (B_gli),A EXX LD A,B,(B_ins2),A LD A,H,(B_ins0),A ;LD A,L,(B_ins1),A LD A,E,(B_ins3),A RET
- --- nota_C ---
notaC
INC A;LD A,1 LD (play),A LD HL,C_qty DEC (HL) RET NZ
Cch_adr LD DE,0
LD H,'compile CALL Cn_clc1 LD (Cch_adr+1),DE
Ci_qty LD A,0,(C_qty),A
DEC B RET NZ LD H,B,L,B LD (Csl_dsp+1),HL RET
IFN ?not-2 MACRO not IFN "\0 "-"C "
\0ni_v0 LD A,47 \0nivolU LD (\0vb_cpl),A
EXX LD H,D EXX RET
\0ni_not LD (\0si_not+1),A
XOR A LD B,1 jp \0nivolU ENDIF
\0ni_vol JR Z,\0ni_v0
DUP 4 ADD A,A EDUP LD (\0gi_vol+1),A jp \0n_clc2
\0ni_vqe JR Z,\0ni_v1
DEC A JR NZ,\0ni_e0 LD A,(DE) INC DE LD (\0i_qty+1),A jp \0n_clc2
\0ni_e0 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
\0ni_v1 LD (\0mi_vol+1),A
IFN "\0 "-"C " EXX LD B,D EXX ENDIF jp \0n_clc2
\0ni_s_o ADD A,A
ADD A,tba_orn LD L,A LD C,(HL) INC L LD B,(HL) LD (\0oi_adr+1),BC XOR A
\0ni_sm0 LD (\0mi_vol+1),A
IFN "\0 "-"C " EXX LD B,D EXX ELSE XOR A LD (\0o_dsp+1),A ENDIF LD A,(DE) INC DE
\0nism0U ADD A,tba_smp
LD L,A LD C,(HL) INC L LD B,(HL) LD (\0si_adr+1),BC
\0n_clc1 LD BC,#1020 \0n_clc2 LD A,(DE)
INC DE ADD A,B JR C,\0ni_s_o ADD A,C JR C,\0ni_smp ADD A,B JR C,\0ni_vol ADD A,B JR C,\0ni_vqe ADD A,96 JR C,\0ni_not ADD A,B JR C,\0ni_orn IF0 "\0 "-"B " ADD A,C JR C,\0ni_noi ADD A,B ELSE ADD A,48 ENDIF JR C,\0ni_vse RLA LD HL,-256&\0_eff+.(\0_eff+30) ADD A,L LD L,A LD A,(HL) INC L LD H,(HL) LD L,A PUSH HL IF0 "\0 "-"C " IFN port3 LD A,(Cs_note+1) LD (CnsTnxt+1),A ENDIF ENDIF jp \0n_clc2 IF0 "\0 "-"B "
\0ni_noi LD (Ni_frq+1),A;global_noise
jp \0n_clc2 ENDIF
\0ni_vse JR Z,\0ni_sm0
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 jp \0ni_sm0
\0ni_smp RET Z
ADD A,A jp \0nism0U
\0ni_orn ADD A,A
ADD A,tba_orn LD L,A LD C,(HL) INC L LD B,(HL) LD (\0oi_adr+1),BC IFN "\0 "-"C " EXX LD B,D EXX ELSE XOR A LD (Co_dsp+1),A ENDIF jp \0n_clc1 ENDM ENDIF
not A not B Cgi_vol=Cg_vol Cmi_vol=Cm_vol Coi_adr=Co_adr Csi_adr=Cs_adr Cni_v0
IFN vib6 LD (Cvb_stp+1),A ENDIF DEC A LD (Cvb_lok+1),A RET
not C Cni_not LD (Cs_note+1),A
XOR A LD H,A,L,A LD (Cs_dsp+1),A LD (Co_dsp+1),A LD (Csl_stp+1),A LD (Cvb_lok+1),A IFN vib6 LD (Cvb_stp+1),A ENDIF IFN smpfix LD (Cs_Nsl+1),A LD (Cs_Esl+1),A LD (Cs_dtn+1),HL LD A,16,(Cs_Vsl+1),A ENDIF LD B,1 RET
- ---- special_effects_COM.xxxx ----
Aef_dSm LD A,6,(A_ins5),A
l Asi_dsp+1
Aef_dOr LD A,6,(A_ins6),A
l Aoi_dsp+1
Bef_dSm LD A,6,(B_ins5),A
l Bsi_dsp+1
Bef_dOr LD A,6,(B_ins6),A
l Boi_dsp+1
Cef_dSm l Cs_dsp+1 Cef_dOr l Co_dsp+1
Cpi_stp=Csl_stp Cpi_tfr=Csl_tfr
IFN ?_slT-2 MACRO _slT
\0ef_slT LD A,(DE)
INC DE LD (\0pi_stp+1),A IF0 "\0 "-"C " LD (\0sl_sts+1),A ENDIF LD A,(DE),L,A INC DE LD A,(DE),H,A INC DE LD (\0pi_tfr+1),HL IFN port3 LD A,\0sl_sts-\0sl_plk LD (\0pi_lok+1),A;port_off ENDIF ENDM ENDIF
_slT A
EXX LD E,D EXX RET
_slT B
EXX LD E,D EXX RET
_slT C
IFN vib6 XOR A LD (Cvb_stp+1),A ENDIF RET
IFN port3 IFN ?_nsT-2 MACRO _nsT
\0ef_nsT LD A,(DE)
INC DE LD (\0pi_stp+1),A IF0 "\0 "-"C " LD (\0sl_sts+1),A ENDIF INC DE INC DE LD A,(DE),L,A INC DE LD A,(DE),H,A INC DE LD (\0pi_tfr+1),HL XOR A LD B,A ENDM ENDIF
_nsT A
LD (Api_lok+1),A;port_on ; LD HL,Asi_not+1 ; LD A,(HL) LD A,(Asi_not+1) LD (Api_not+1),A ;LD A,(As_note+1) ; LD (HL),A EXX LD E,D EXX RET
_nsT B
LD (Bpi_lok+1),A ; LD HL,Bsi_not+1 ; LD A,(HL) LD A,(Bsi_not+1) LD (Bpi_not+1),A ;LD A,(Bs_note+1) ; LD (HL),A EXX LD E,D EXX RET
_nsT C
IFN vib6 LD (Cvb_stp+1),A ENDIF LD (Csl_plk-1),A LD HL,Cs_note+1 LD A,(HL) LD (Csl_not+1),A
CnsTnxt LD (HL),0
RET ENDIF
eff_tmp l temp+1
IFN frq
esld MAKEfrq
- Roshin
INC HL EX DE,HL ADD HL,BC LD A,(DE) LD (COPF3),A INC DE LD A,(DE) ADD A,C LD C,A ADC A,B SUB C LD B,A PUSH BC LD DE,tab_frq PUSH DE LD B,12
COPF1 PUSH BC
LD C,(HL) INC HL PUSH HL LD B,(HL) PUSH DE EX DE,HL LD DE,23 LD HX,8
COPF2 SRL B
RR C
- COPF3 NOP ;AND A
LD A,C
COPF3 ADC A,D ;=ADC 0
LD (HL),A INC HL LD A,B ADC A,D LD (HL),A ADD HL,DE DEC HX JR NZ,COPF2 POP DE INC DE,DE POP HL INC HL POP BC DJNZ COPF1
POP HL POP DE
;LD A,E ;CP TCOLD_1 ;JR NZ,CORR_1 ;LD A,#FD,(FrTab+#2E),A
CORR_1 LD A,(DE)
AND A RET Z INC DE RRA PUSH HL PUSH AF ADD A,A LD C,A ADD HL,BC POP AF INC (HL) JR NC,$+4 DEC (HL),(HL) POP HL ;AND A ;SBC HL,BC JR CORR_1
NT_DATA
DB T_NEW_0-T_ ADC A,D DB TCNEW_0-T_ ;DB T_OLD_0-T_ ;AND A ;DB TCOLD_0-T_
DB T_NEW_1-T_ AND A DB TCNEW_1-T_ ;DB T_OLD_1-T_ ;AND A ;DB TCOLD_1-T_
DB T_NEW_2-T_ ADC A,D DB TCNEW_2-T_ ;DB T_OLD_2-T_ ;NOP ;DB TCOLD_2-T_
DB T_NEW_3-T_ ADC A,D DB TCNEW_3-T_ ;DB T_OLD_3-T_ ;NOP ;DB TCOLD_3-T_
T_
- COLD_0 DB #00+1,#04+1,#08+1,#0A+1,#0C+1,#0E+1,#12+1,#14+1
- DB #18+1,#24+1,#3C+1,0
TCNEW_1 TCOLD_1 DB #5C+1,0
- COLD_2 DB #30+1,#36+1,#4C+1,#52+1,#5E+1,#70+1,#82,#8C,#9C
- DB #9E,#A0,#A6,#A8,#AA,#AC,#AE,#AE,0
TCNEW_3 DB #56+1 TCOLD_3 DB #1E+1,#22+1,#24+1,#28+1,#2C+1,#2E+1,#32+1,#BE+1,0 TCNEW_0 DB #1C+1,#20+1,#22+1,#26+1,#2A+1,#2C+1,#30+1,#54+1
DB #BC+1,#BE+1,0
TCNEW_2 DB #1A+1,#20+1,#24+1,#28+1,#2A+1,#3A+1,#4C+1,#5E+1
DB #BA+1,#BC+1,#BE+1,0
- first 12 values of tone tables
T_NEW_1 T_OLD_1 DW #0EF8*2,#0E10*2,#0D60*2,#0C80*2,#0BD8*2,#0B28*2
DW #0A88*2,#09F0*2,#0960*2,#08E0*2,#0858*2,#07E0*2
- _OLD_2 DW #0D3E*2,#0C80*2,#0BCC*2,#0B22*2,#0A82*2,#09EC*2
- DW #095C*2,#08D6*2,#0858*2,#07E0*2,#076E*2,#0704*2
T_NEW_3 T_OLD_3 DW #0CDA*2,#0C22*2,#0B73*2,#0ACF*2,#0A33*2,#09A1*2
DW #0917*2,#0894*2,#0819*2,#07A4*2,#0737*2,#06CF*2
T_OLD_0=T_OLD_3+2 T_NEW_0=T_OLD_3+2
DW #066D*2
T_NEW_2 DW #0D10*2,#0C55*2,#0BA4*2,#0AFC*2,#0A5F*2,#09CA*2
DW #093D*2,#08B8*2,#083B*2,#07C5*2,#0755*2,#06EC*2 ENDIF
DISPLAY $-compile
IFN vib6
Cvb_ifr=Cvb_frq Cvb_ist=Cvb_sts
ENDIF IFN port3
Cpi_lok=Csl_plk-2
ENDIF IF0 ?StAnDaLoNe
module
INCBIN "*.m" ENDIF IF0 frq
plyend
ORG tab_frq
IF0 .{module+99}-0
;INCBIN "tb_PT DD 220C730BCF0A330AA109170994081908A4073707CF066D06 DD 1106BA0567051A05D0048B044A040C04D2039B0367033703 DD 0803DD02B4028D026802460225020602E901CE01B4019B01 DD 84016E015A0146013401230112010301F500E700DA00CE00 DD C200B700AD00A3009A009100890082007A0073006D006700 DD 61005C00560052004D004900450041003D003A0036003300 DD 31002E002B00290027002400220020001F001D001B001A00 DD 180017001600140013001200110010000F000E000D000C00
ENDIF IF0 .{module+99}-1
;INCBIN "tb_ST DD F80E100E600D800CD80B280B880AF0096009E0085808E007 DD 7C070807B0064006EC0594054405F804B00470042C04FD03 DD BE03840358032003F602CA02A2027C02580238021602F801 DD DF01C201AC0190017B01650151013E012C011C010A01FC00 DD EF00E100D600C800BD00B200A8009F0096008E0085007E00 DD 770070006B0064005E00590054004F004B00470042003F00 DD 3B003800350032002F002C002A0027002500230021001F00 DD 1D001C001A00190017001600150013001200110010000F00
ENDIF IF0 .{module+99}-2
;INCBIN "tb_ASM DD 100D550CA40BFC0A5F0ACA093D09B8083B08C5075507EC06 DD 88062A06D2057E052F05E5049E045C041D04E203AB037603 DD 44031503E902BF02980272024F022E020F02F101D501BB01 DD A2018B01740160014C013901280117010701F900EB00DD00 DD D100C500BA00B000A6009D0094008C0084007C0075006F00 DD 690063005D00580053004E004A00460042003E003B003700 DD 340031002F002C00290027002500230021001F001D001C00 DD 1A00190017001600150014001200110010000F000E000D00
ENDIF IF0 .{module+99}-3
;INCBIN "tb_REAL DD DA0C220C730BCF0A330AA109170994081908A4073707CF06 DD 6D061106BA0567051A05D0048B044A040C04D2039B036703 DD 37030803DD02B4028D026802460225020602E901CE01B401 DD 9B0184016E015A0146013401230112010301F500E700DA00 DD CE00C200B700AD00A3009A009100890082007A0073006D00 DD 670061005C00560052004D004900450041003D003A003600 DD 330031002E002B00290027002400220020001F001D001B00 DD 1A00180017001600140013001200110010000F000E000D00
ENDIF
ORG plyend ENDIF IF0 ?StAnDaLoNe ORG #7000 CALL compile
play_l EI
HALT CALL play LD A,#7F IN A,(-2) RRA JR C,play_l LD L,#E XOR A shut RET ENDIF 0858*2,#07E0*2
- _OLD_2 DW #0D3E*2,#0C80*2,#0BCC*2,#0B22*2,#0A82*2,#09EC*2
- DW #095C*2,#08D6*2,#0858*2,#07E0*2,#076E*2,#0704*2
T_NEW_3 T_OLD_3 DW #0CDA*2,#0C22*2,#0B73*2,#0ACF*2,#0A33*2,#09A1*2
DW #0917*2,#0894*2,#0819*2,#07A