Difference between revisions of "PROTRACKER372 PT3X0A H"
From MSX MUSIC WIKI
(Created page with "PT3x0A C��┴O�P�з;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ;$ $ ;$ PRO TRACKE...") (Tags: Mobile edit, Mobile web edit) |
(Tags: Mobile edit, Mobile web edit) |
||
Line 1: | Line 1: | ||
− | + | PT3x0A C��┴O�P�з | |
− | + | ;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ | |
− | + | ;$ $ | |
− | + | ;$ PRO TRACKER 3.X PLAYER v3x0A by Dr.Lion/RSM (c) 2004 $ | |
− | + | ;$ $ | |
− | + | ;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ | |
− | + | ;Редактирование: 8.07.2004 | |
− | + | ;Файл исходника: PT3x0A (оптимизирован для малого размера) | |
− | + | ;Основные технические параметры плеера: | |
− | + | ; - базирован на ядре проигрывателя RC367 by Alone Coder; | |
− | + | ; - версия ядра проигрывателя: [0] универсальное,малого размера; | |
− | + | ; - максимальное время работы: 8864 такта (тестовый спецмодуль); | |
− | + | ; - среднее время работы : 5440 такта (тестовый спецмодуль); | |
− | + | ; - размер проигрывателя : 1742 (#06CE) байт; | |
− | + | ; - качество звука : среднее | |
− | + | ;------ Основные точки входа в плеер ------ | |
− | + | ORG #C000 ;Адрес компиляции | |
− | + | Compile LD HL,module ;Адрес модуля | |
− | + | JR INSTALL | |
− | + | JP PLAY | |
− | + | JP STOP | |
− | + | ;------ Процедура инсталляции ------ | |
− | + | INSTALL DI | |
− | + | PUSH HL | |
− | + | LD BC,99 | |
− | + | ADD HL,BC | |
− | + | LD A,(HL) | |
− | + | INC HL | |
− | + | PUSH HL | |
− | + | LD HL,Tb_PT-24 | |
− | + | LD C,24 | |
− | + | Find_FT ADD HL,BC | |
− | + | DEC A | |
− | + | JP P,Find_FT | |
− | + | LD IX,tab_frq | |
− | + | ;------ Frequency Table Generator ------ | |
− | + | LD (SP_SV+1),SP | |
− | + | LD SP,HL | |
− | + | LD C,12 | |
− | + | MkFT_L0 POP HL | |
− | + | LD DE,24 | |
− | + | LD B,8 | |
− | + | MkFT_L1 SRL H | |
− | + | RR L | |
− | + | LD A,L | |
− | + | ADC A,D | |
− | + | LD (IX+0),A | |
− | + | LD A,H | |
− | + | ADC A,D | |
− | + | LD (IX+1),A | |
− | + | ADD IX,DE | |
− | + | DJNZ MkFT_L1 | |
− | + | LD DE,-8*24+2 | |
− | + | ADD IX,DE | |
− | + | DEC C | |
− | + | JR NZ,MkFT_L0 | |
− | + | SP_SV LD SP,0 | |
− | + | ;------ продолжение инсталляции ------ | |
− | + | POP HL | |
− | + | LD A,(HL) | |
− | + | LD (temp+1),A | |
− | + | INC HL | |
− | + | INC HL | |
− | + | LD A,(HL) | |
− | + | INC HL | |
− | + | LD E,(HL) | |
− | + | INC HL | |
− | + | LD D,(HL) | |
− | + | INC HL | |
− | + | LD (smpPP+1),HL | |
− | + | LD C,64 | |
− | + | ADD HL,BC | |
− | + | LD (ornPP+1),HL | |
− | + | LD C,32 | |
− | + | ADD HL,BC | |
− | + | ||
− |
Latest revision as of 20:20, 8 March 2020
PT3x0A C��┴O�P�з
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ;$ $ ;$ PRO TRACKER 3.X PLAYER v3x0A by Dr.Lion/RSM (c) 2004 $ ;$ $ ;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ;Редактирование: 8.07.2004 ;Файл исходника: PT3x0A (оптимизирован для малого размера) ;Основные технические параметры плеера: ; - базирован на ядре проигрывателя RC367 by Alone Coder; ; - версия ядра проигрывателя: [0] универсальное,малого размера; ; - максимальное время работы: 8864 такта (тестовый спецмодуль); ; - среднее время работы : 5440 такта (тестовый спецмодуль); ; - размер проигрывателя : 1742 (#06CE) байт; ; - качество звука : среднее ;------ Основные точки входа в плеер ------ ORG #C000 ;Адрес компиляции Compile LD HL,module ;Адрес модуля JR INSTALL JP PLAY JP STOP ;------ Процедура инсталляции ------ INSTALL DI PUSH HL LD BC,99 ADD HL,BC LD A,(HL) INC HL PUSH HL LD HL,Tb_PT-24 LD C,24 Find_FT ADD HL,BC DEC A JP P,Find_FT LD IX,tab_frq ;------ Frequency Table Generator ------ LD (SP_SV+1),SP LD SP,HL LD C,12 MkFT_L0 POP HL LD DE,24 LD B,8 MkFT_L1 SRL H RR L LD A,L ADC A,D LD (IX+0),A LD A,H ADC A,D LD (IX+1),A ADD IX,DE DJNZ MkFT_L1 LD DE,-8*24+2 ADD IX,DE DEC C JR NZ,MkFT_L0 SP_SV LD SP,0 ;------ продолжение инсталляции ------ POP HL LD A,(HL) LD (temp+1),A INC HL INC HL LD A,(HL) INC HL LD E,(HL) INC HL LD D,(HL) INC HL LD (smpPP+1),HL LD C,64 ADD HL,BC LD (ornPP+1),HL LD C,32 ADD HL,BC LD (Psa_beg+1),HL LD C,A ADD HL,BC LD (Psa_lop+1),HL POP HL ADD HL,DE LD (Psa_chn+1),HL LD A,B LD (Am_vol),A LD (Bm_vol),A LD (Cm_vol),A INC A LD (A_qty),A LD (B_qty),A LD (C_qty),A LD HL,ZERO_M LD (Ao_adr),HL LD (Bo_adr),HL LD (Co_adr),HL LD (As_adr),HL LD (Bs_adr),HL LD (Cs_adr),HL LD (Ach_adr),HL SUB 16+1 LD (Ag_vol),A LD (Bg_vol),A LD (Cg_vol),A SBC A,A LD (Avb_lok),A LD (Cvb_lok),A LD (Bvb_lok),A STOP LD DE,#0E00 DEC D LD BC,#FFFD OUT (C),D LD B,#BF OUT (C),E JR NZ,STOP+3 res RET ;------ Вычисление адреса орнамента/сэмпла ------ ornPP LD HL,ZERO_M ADD A,A JR sm_or_P smpPP LD HL,ZERO_M sm_or_P LD C,A XOR A LD B,A ADD HL,BC LD C,(HL) INC HL LD B,(HL) LD HL,(Compile+1) ADD HL,BC RET ;------ Установка формы и частоты ENV ------ EiPP LD (E_form),A EX DE,HL LD D,(HL) INC HL LD E,(HL) INC HL EX DE,HL LD (Env_frq+1),HL XOR A LD L,A LD H,A LD (Esl_frq+1),HL JR Eipp ;------ Special Effects COM.9XXX ------ Eef_sld LD A,(DE) ;sld_env INC DE EX DE,HL LD E,(HL) INC HL LD D,(HL) INC HL EX DE,HL LD (Esl_sds+1),HL ;sds LD (Esl_sts+1),A Eipp LD (Esl_stp+1),A ;stp LD A,%00010000 RET ;------ #C100 Таблица громкости (логарифмическая) ------ DISPLAY "Volume Table :",$ frq_A DW 0 frq_B DW 0 frq_C DW 0 Noise DB 0 Mixer DB 0 vol_A DB 0 vol_B DB 0 vol_C DB 0 frq_E DW 0 E_form DB 0 ZERO_M DW 0 DB 0,0,0,0,0,0,0,0,01,01,01,01,01,01,01,01 DB 0,0,0,0,1,1,1,1,01,01,01,01,02,02,02,02 DB 0,0,0,1,1,1,1,1,02,02,02,02,02,03,03,03 DB 0,0,1,1,1,1,2,2,02,02,03,03,03,03,04,04 DB 0,0,1,1,1,2,2,2,03,03,03,04,04,04,05,05 DB 0,0,1,1,2,2,2,3,03,04,04,04,05,05,06,06 DB 0,0,1,1,2,2,3,3,04,04,05,05,06,06,07,07 DB 0,1,1,2,2,3,3,4,04,05,05,06,06,07,07,08 DB 0,1,1,2,2,3,4,4,05,05,06,07,07,08,08,09 DB 0,1,1,2,3,3,4,5,05,06,07,07,08,09,09,10 DB 0,1,1,2,3,4,4,5,06,07,07,08,09,10,10,11 DB 0,1,2,2,3,4,5,6,06,07,08,09,10,10,11,12 DB 0,1,2,3,3,4,5,6,07,08,09,10,10,11,12,13 DB 0,1,2,3,4,5,6,7,07,08,09,10,11,12,13,14 DB 0,1,2,3,4,5,6,7,08,09,10,11,12,13,14,15 ;------ #C200 Область таблицы частот нот ------- tab_frq EQU $ Test_AY LD DE,#FFBF LD C,#FD LD A,#02 LD B,D OUT (C),A LD B,E OUT (C),E LD B,D IN A,(C) CP E LD HL,DC_StrA JR NZ,AY_Exit AY_Pres LD A,#10 OUT (C),A IN A,(C) CP D LD HL,AY_StrA JR NZ,AY_Exit LD HL,YM_StrA AY_Exit JP STOP DS 8 DB "Pro Tracker 3.x Player v3x0A" DB " by Dr.Lion (C) 2004 LEN:6CE" DS 8 DC_StrA DB "Disconnected",0 AY_StrA DB "AY-3-8910",0 YM_StrA DB "YM2149F",0 DS 192-($-tab_frq) ;------ Таблица подпрограмм комманд ------ X_eff DW Xef_slT ;1xxx,2xxx - sld_tone DW Xef_nsT ;3xxx - port_note DW Xef_dSm ;4.xx - dsp_smp DW Xef_dOr ;5.xx - dsp_orn DW Xef_vib ;6.xx - vibrato DW res DW res DW Eef_sld ;9xxx,Axxx - sld_env DW eff_tmp ;B.xx - temp ;------ Все переменные канала A ------ Ach_adr DW ZERO_M ;-04 POSITION ADR Ai_qty DB #01 ;-02 STEP COUNTER PRESET A_qty DB #01 ;-01 STEP COUNTER Afrq_Ad DW frq_A ;+00 ADR IN MEM OF FRQ REG Avol_Ad DW vol_A ;+02 ADR IN MEM OF VOL REG As_adr DW ZERO_M ;+04 SAMPLE ADR Ao_adr DW ZERO_M ;+06 ORNAMENT ADR ACh_IDN DB 4 ;+08 CHANNEL ROLL FOR MIXER Asl_plk DB Xsl_sts-Xsl_plk ;+09 DSP FOR PORT ON/OFF Avb_lok DB #FF ;+10 SOUND LOCK (VIBRATO) As_Vsl DB #10 ;+11 VOLUME SLIDE ACC Ag_vol DB #F0 ;+12 GLOBAL VOLUME Am_vol DB 0 ;+13 ENVELOPMENT MASK As_Nsl DB 0 ;+14 NOISE SLIDE ACC As_Esl DB 0 ;+15 ENVELOPMENT SLIDE ACC As_dtn DW 0 ;+16 SAMP FRQ DSP ACC As_dsp DB 0 ;+18 SAMPLE POSITION Ao_dsp DB 0 ;+19 ORNAMENT POSITION Asl_dsp DW 0 ;+20 SLIDE DSP Asl_stp DB 0 ;+22 SLIDE STEP (DELAY) Asl_tfr DW 0 ;+23 SLIDE ADD DSP Asl_not DB 0 ;+25 SLIDE TO NOTE As_note DB 0 ;+26 SAMPLE NOTE Asl_sts DB 0 ;+27 SLIDE COUNTER PRESET Avb_stp DB 0 ;+28 VIBRATO COUNTER Avb_frq DB 0 ;+29 SOUND OFF DELAY (VIBRATO) Avb_sts DB 0 ;+30 VIBRATO COUNTER PRESET ;------ Все переменные канала B ------ Bch_adr DW ZERO_M Bi_qty DB #01 B_qty DB #01 Bfrq_Ad DW frq_B Bvol_Ad DW vol_B Bs_adr DW ZERO_M Bo_adr DW ZERO_M BCh_IDN DB 3 Bsl_plk DB Xsl_sts-Xsl_plk Bvb_lok DB #FF Bs_Vsl DB #10 Bg_vol DB #F0 Bm_vol DB 0 Bs_Nsl DB 0 Bs_Esl DB 0 Bs_dtn DW 0 Bs_dsp DB 0 Bo_dsp DB 0 Bsl_dsp DW 0 Bsl_stp DB 0 Bsl_tfr DW 0 Bsl_not DB 0 Bs_note DB 0 Bsl_sts DB 0 Bvb_stp DB 0 Bvb_frq DB 0 Bvb_sts DB 0 ;------ Все переменные канала C ------ Cch_adr DW ZERO_M Ci_qty DB #01 C_qty DB #01 Cfrq_Ad DW frq_C Cvol_Ad DW vol_C Cs_adr DW ZERO_M Co_adr DW ZERO_M CCh_IDN DB 2 Csl_plk DB Xsl_sts-Xsl_plk Cvb_lok DB #FF Cs_Vsl DB #10 Cg_vol DB #F0 Cm_vol DB 0 Cs_Nsl DB 0 Cs_Esl DB 0 Cs_dtn DW 0 Cs_dsp DB 0 Co_dsp DB 0 Csl_dsp DW 0 Csl_stp DB 0 Csl_tfr DW 0 Csl_not DB 0 Cs_note DB 0 Csl_sts DB 0 Cvb_stp DB 0 Cvb_frq DB 0 Cvb_sts DB 0 ;------ Play One Frame of Module ------ PLAY PUSH IY int_qty LD A,1 DEC A JR NZ,SamplIT ;------ Просчет следующей строки паттерна ------ LD IY,Afrq_Ad CALL Get_Pos LD IY,Bfrq_Ad CALL Get_Pos LD IY,Cfrq_Ad CALL Get_Pos temp LD A,3 ;temp SamplIT LD (int_qty+1),A ;------ Проигрывание сэмплером каналов ABC ------ N_add LD IX,0 ;HX=noise LX=mix LD BC,0 ;smp_sl_env EXX LD IY,Afrq_Ad CALL OneChan LD IY,Bfrq_Ad CALL OneChan LD IY,Cfrq_Ad CALL OneChan ;------ Модифицированый сэмплер Envelopment ------ Sampl_E EXX Esl_frq LD DE,0 ;stp_sl_env Env_frq LD HL,0 ;frq_env ADD HL,BC ADD HL,DE LD (frq_E),HL ;------ Просчет Slide DSP для Envelopment ------ Esl_stp LD A,0 DEC A JP M,MPU_Out JR NZ,Esl_n0 Esl_sds LD HL,0 ADD HL,DE LD (Esl_frq+1),HL Esl_sts LD A,0 Esl_n0 LD (Esl_stp+1),A ;---- Update Noise & Mixer Than Out ---- MPU_Out LD A,HX ;noise value LD (N_add+3),A N_frq ADD A,0 LD (Noise),A LD A,LX ;mixer bits LD (Mixer),A POP IY ;old IY value LD HL,frq_A LD DE,#FFBF LD C,#FD LD A,14 AY_Out LD B,D OUT (C),L LD B,E DEC A JR Z,EN_Out OUTI JR AY_Out EN_Out OR (HL) RET Z OUT (C),A LD (HL),0 RET ;------ Универсальный сэмплер для каналов ABC ------ OneChan LD (Quit_S+1),SP LD SP,IY POP HL LD (FrqR_A+1),HL POP HL LD (VolR_A+1),HL POP HL LD (Xs_adr+1),HL POP HL LD (Xo_adr+1),HL POP HL LD A,L LD (Ch_Roll+1),A LD A,H LD (Xsl_plk-1),A ;------ Переделанный под переменные сэмплер PT3.67 ------ tab_vol EQU frq_A LD A,(IY+10) ;Xvb_lok LD H,A INC A JP Z,Xvb_n0 Xs_adr LD SP,0 ;sample POP DE ;loop E=beg D=end LD A,(IY+18) ;Xs_dsp LD L,A INC A CP D JR C,Xs_n0 LD A,E Xs_n0 LD (IY+18),A ADD HL,HL ADD 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 LD L,A LD A,E ADD A,A LD A,(IY+11) ;Xs_Vsl JR NC,Xs_VslG JP M,Xs_n2 SUB 1 JR Xs_n3 Xs_n2 CP 31 Xs_n3 ADC A,0 LD (IY+11),A Xs_VslG ADD A,L JR C,Xs_n4 XOR A Xs_n4 CP 16 JR C,Xg_vol LD A,15 Xg_vol ADD A,(IY+12) ;Xg_vol LD L,A LD H,'tab_vol LD A,(HL) SRL E JR C,Xm_vo0 OR (IY+13) ;Xm_vol Xm_vo0 EXA LD A,D RLCA JR C,Xs_n5 LD A,(IY+14) ;Xs_Nsl ADD A,E BIT 5,D JR Z,Xs_n6 LD (IY+14),A Xs_n6 LD HX,A JR Xs_n7 Xs_n5 LD A,E AND 31 CP 16 JR C,Xs_Esl OR #F0 Xs_Esl ADD A,(IY+15) ;Xs_Esl BIT 5,D JR Z,Xs_n9 LD (IY+15),A Xs_n9 EXX ADD A,C LD C,A EXX Xs_n7 LD A,D AND %10010000 Ch_Roll LD B,0 MixLoop RRCA DJNZ MixLoop OR LX LD LX,A POP BC ;smp_frq_dsp LD L,(IY+16) ;накопитель dsp LD H,(IY+17) ADD HL,BC BIT 6,D JR Z,Xs_n10 LD (IY+16),L ;новое значение LD (IY+17),H ;накопителя dsp Xs_n10 EX DE,HL Xo_adr LD SP,0 ;ornament POP BC ;loop C=beg B=end LD A,(IY+19) ;Xo_dsp LD L,A INC A CP B JR C,Xo_n0 LD A,C Xo_n0 LD (IY+19),A LD H,0 ADD HL,SP LD A,(IY+26) ;Xs_note ADD A,(HL) ;dsp_orn (ORNAMENTS ON/OFF) ADD A,A JR NC,Xo_n1 ;; XOR A ;; Xo_n1 LD L,95*2 ;; CP L ;; JR NC,Xo_n2 ;; LD L,A ;; Xo_n2 LD H,'tab_frq LD SP,HL POP HL ;частота ноты+ ADD HL,DE ;+накопитель сэмпла (смещение)+ LD C,(IY+20) LD B,(IY+21) ADD HL,BC ;+накопитель SLIDE TONE/PORT FrqR_A LD (frq_A),HL LD A,(IY+22) ;Xsl_stp DEC A JP M,Xsl_s0 ;If Xsl_stp=0 then SLIDE OFF JR NZ,Xsl_s1 LD E,(IY+23) ;Xsl_tfr-приращение накопителя LD D,(IY+24) ;SLIDE TONE/PORT при его изме- ADD HL,DE ;нении. EX DE,HL ADD HL,BC LD (IY+20),L ;новое значение измененного LD (IY+21),H ;накопителя SLIDE TONE/PORT JR Xsl_sts ;переключатель PORT ON/OFF! Xsl_plk EQU $ LD A,(IY+25) ;нота, к которой стремится LD L,A ;команда PORT. ADD HL,HL LD H,'tab_frq LD SP,HL POP HL CP (IY+26) ;последняя встреченая нота, в HL JR NC,Xsl_n0 ;вычесленная по ней частота. EX DE,HL Xsl_n0 SBC HL,DE JR C,Xsl_sts LD (IY+26),A ;частоты нот совпали и теперь: XOR A ;- Xs_note=Xsl_not LD (IY+20),A ;- Xsl_dsp=0 LD (IY+21),A JR Xsl_s1 Xsl_sts LD A,(IY+27) Xsl_s1 LD (IY+22),A Xsl_s0 EXA Xvb_n0 EQU $ VolR_A LD (vol_A),A LD A,(IY+28) DEC A JP M,Quit_S JR NZ,Xvb_n1 DEC A ;A=#FF XOR (IY+10) ;A XOR Xvb_lok LD (IY+10),A LD A,(IY+29) JR NZ,Xvb_n1 LD A,(IY+30) Xvb_n1 LD (IY+28),A Quit_S LD SP,0 RET ;------ Get Position + Next Pattern ------ Get_Pos DEC (IY-01) ;X_qty RET NZ LD E,(IY-04) ;adr_chan LD D,(IY-03) LD A,(DE) AND A JR NZ,Cont_0 LD (N_frq+1),A LD D,A LD (Sv_SP0+1),SP Psa_beg LD HL,module+201 LD A,(HL) INC A JR NZ,Cont_1 Psa_lop LD HL,module+201 Cont_1 LD E,(HL) INC HL LD (Psa_beg+1),HL Psa_chn LD HL,0 ADD HL,DE ADD HL,DE LD SP,HL ia_pos0 LD BC,(Compile+1) POP HL ADD HL,BC EX DE,HL ;DE=adr_chn_A POP HL ADD HL,BC ;HL=adr_chn_B LD (Bch_adr),HL POP HL ADD HL,BC ;HL=adr_chn_C LD (Cch_adr),HL Sv_SP0 LD SP,0 Cont_0 CALL Xn_clc1 LD (IY-04),E LD (IY-03),D LD A,(IY-02) ;Xi_qty LD (IY-01),A ;X_qty RET ;------ Дешифрация позиции по одному каналу ------ Xni_not LD (IY+26),A ;Xs_note XOR A LD (IY+10),A ;Xvb_lok LD (IY+18),A ;Xs_dsp LD (IY+11),#10 ;Xs_Vsl LD (IY+14),A ;Xs_Nsl LD (IY+15),A ;Xs_Esl LD (IY+16),A ;Xs_dtn low LD (IY+17),A ;Xs_dtn High LD (IY+19),A ;Xo_dsp LD (IY+20),A ;Xsl_dsp low LD (IY+21),A ;Xsl_dsp High LD (IY+22),A ;Xsl_stp LD (IY+28),A ;Xvb_stp RET Xni_vol JR NZ,Xni_v0 LD (IY+28),A ;Xvb_stp=#00 DEC A LD (IY+10),A ;Xvb_lok=#FF RET Xni_v0 ADD A,A ADD A,A ADD A,A ADD A,A LD (IY+12),A ;Xg_vol=A*16 JR Xn_clc2 Xni_s_o CALL ornPP LD (IY+06),L ;Xo_adr=HL LD (IY+07),H Xni_vse CALL NZ,EiPP Xni_sm0 LD (IY+13),A ;Xm_vol XOR A LD (IY+19),A ;Xo_dsp=0 LD A,(DE) INC DE JR Xnism0U Xni_smp RET Z ADD A,A Xnism0U CALL smpPP LD (IY+04),L ;Xs_adr LD (IY+05),H Xn_clc1 LD BC,#1020 Xn_clc2 LD A,(DE) INC DE ADD A,B JR C,Xni_s_o ADD A,C JR C,Xni_smp ADD A,B JR C,Xni_vol ADD A,B JR C,Xni_vqe ADD A,96 JR C,Xni_not ADD A,B JR C,Xni_orn ADD A,C JR C,Xni_noi ADD A,B JR C,Xni_vse ADD A,B LD HL,X_eff-2 ADD A,A ADD A,L LD L,A LD C,(HL) INC L LD B,(HL) PUSH BC LD A,(IY+26) ;Xs_note EXA JR Xn_clc1 Xni_noi LD (N_frq+1),A ;GLOBALnoise JR Xn_clc2 Xni_vqe JR Z,Xni_v1 DEC A JR NZ,Xni_e0 LD A,(DE) LD (IY-02),A ;Xi_qty INC DE JR Xn_clc2 Xni_e0 CALL EiPP Xni_v1 LD (IY+13),A ;Xm_vol JR Xn_clc2 Xni_orn CALL ornPP LD (IY+06),L ;Xo_adr=HL LD (IY+07),H LD (IY+19),A ;Xo_dsp=0 JR Xn_clc1 ;------ Special Effects COM.XXXX ------ Off_PRT EQU Xsl_sts-Xsl_plk Xef_slT LD A,(DE) INC DE LD (IY+22),A ;Xsl_stp LD (IY+27),A ;Xsl_sts LD A,(DE) INC DE LD (IY+23),A ;Xsl_tfr (LOW) LD A,(DE) INC DE LD (IY+24),A ;Xsl_tfr (HIGH) LD (IY+28),0 ;Xvb_stp LD (IY+09),Off_PRT ;Xsl_plk=PORT_OFF RET Xef_nsT CALL Xef_slT LD A,(DE) INC DE LD (IY+23),A ;Xsl_tfr (LOW) LD A,(DE) INC DE LD (IY+24),A ;Xsl_tfr (HIGH) LD (IY+09),0 ;Xsl_plk=PORT_ON LD A,(IY+26) ;Xs_note LD (IY+25),A ;Xsl_not EXA LD (IY+26),A RET Xef_dSm LD A,(DE) INC DE LD (IY+18),A ;Xs_dsp RET Xef_dOr LD A,(DE) INC DE LD (IY+19),A ;Xo_dsp RET Xef_vib LD A,(DE) INC DE LD (IY+28),A LD (IY+30),A LD A,(DE) INC DE LD (IY+29),A LD (IY+22),0 ;Xsl_stp отключение SLIDE RET eff_tmp LD A,(DE) INC DE LD (temp+1),A RET ;------ Frequency Tables for Generate ------ Tb_PT DW #0C22*2,#0B72*2,#0ACF*2,#0A33*2 DW #09A1*2,#0917*2,#0894*2,#0819*2 DW #07A4*2,#0737*2,#06CF*2,#066D*2 Tb_ST DW #0EF8*2,#0E10*2,#0D60*2,#0C80*2 DW #0BD8*2,#0B28*2,#0A88*2,#09F0*2 DW #0960*2,#08E0*2,#0858*2,#07E0*2 Tb_REAL DW #0CDA*2,#0C22*2,#0B72*2,#0ACF*2 DW #0A33*2,#09A1*2,#0917*2,#0894*2 DW #0819*2,#07A4*2,#0737*2,#06CF*2 Tb_ASM DW #0D10*2,#0C55*2,#0BA4*2,#0AFC*2 DW #0A5F*2,#09CA*2,#093D*2,#08B8*2 DW #083B*2,#07C5*2,#0755*2,#06EC*2 ;------ Конец плеера-начало модуля ------ module DISPLAY "Module Adress:",module DISPLAY "Player Lenght:",module-Compile ;------ пример использования ------- INCBIN "ace.m" ORG #7000 DI CALL Compile play_l EI HALT CALL Compile+5 LD A,#7F IN A,(-2) RRA JR C,play_l JP Compile+8 ADD A,B JR C,Xni_orn ADD A,C