Difference between revisions of "PROTRACKER372 EMPTYTRK H"

From MSX MUSIC WIKI
Jump to: navigation, search
(Created page with "mic&rc C��ZY�Z-╚;player mic,rc,hrip SLOW ;todo frq нов.ноты 3xxx считать заранее,ч/з п/п twice=1;перемещаемый модуль и м...")
(Tags: Mobile edit, Mobile web edit)
 
(Replaced content with "emptytrkC��þ���+Ç ORG #DC00 LD HL,$ JR $+2 LD HL,#E LD BC,-3 DEC L OUT (C),L LD B,#BF OU...")
(Tags: Mobile edit, Mobile web edit)
Line 1: Line 1:
mic&rc  C��ZY�Z-╚;player mic,rc,hrip SLOW
+
emptytrkC��þ���+Ç        ORG #DC00
;todo frq нов.ноты 3xxx считать заранее,ч/з п/п
+
         LD HL,$
twice=1;перемещаемый модуль и многокр.инициализация
+
         JR $+2
frq=1;all freq tables
+
         LD HL,#E
frqrosh=1;all freq tables(3.4x)by Roshin
+
         LD BC,-3
IFN frqrosh
+
         DEC L
twice=1
 
frq=1
 
ENDIF
 
hrip=0;при hrip=1 ниже включить:
 
smpfix=1;vol,T,E/N cumulations in SMPs
 
sld12=1;glisses 1,2
 
port3=1;tone port.
 
dsmp4=1;smp.offset
 
dorn5=1;orn.offset
 
vib6=1;vibrate
 
Esld9A=1;env.gliss
 
ts2=0;2nd TS player;играет пат47 вместо пат0 и т.д.
 
;#720..#B3C
 
        MACRO ornsmp
 
ornPP  ADD A,A
 
        ADD A,tba_orn-tba_smp
 
smpPP  ADD A,tba_smp
 
         LD L,A
 
      LD H,'compile
 
        LD A,(HL),(BC),A
 
         INC L,BC
 
         LD A,(HL),(BC),A
 
        XOR A
 
        RET ;16
 
        ENDM
 
 
 
        MACRO npush
 
NPUSH  RLA
 
        ADD A,L
 
         LD L,A
 
         LD A,(HL)
 
        INC L
 
        LD H,(HL)
 
        LD L,A
 
        EX (SP),HL
 
        LD A,(BC)
 
        EXA
 
        JP (HL)
 
        ENDM
 
 
 
        MACRO outer
 
        OUTI
 
OUTER  LD B,D
 
 
         OUT (C),L
 
         OUT (C),L
        LD B,E
 
        DEC A
 
        JR NZ,OUTER-2
 
        RET
 
        ENDM
 
 
        MACRO swaper
 
NEWF0  DEC E
 
      IFN twice
 
        LD A,(DE),C,A
 
      ENDIF
 
        LD A,(HL),(DE),A
 
      IFN twice
 
        LD (HL),C
 
      ENDIF
 
        DEC E
 
        DEC HL
 
NEWFdj  DJNZ NEWF0
 
        INC B,E
 
        JR NZ,NEWF0
 
        ENDM
 
 
        MACRO shut
 
        LD DE,#E00
 
        LD BC,-3
 
        DEC D
 
        OUT (C),D
 
 
         LD B,#BF
 
         LD B,#BF
         OUT (C),E
+
         OUT (C),H
 
         JR NZ,$-10
 
         JR NZ,$-10
        ENDM
 
 
        MACRO eipp
 
EiPP    LD (Ei_form+1),A
 
        LD A,(DE),H,A
 
        INC DE
 
        LD A,(DE),L,A
 
        INC DE
 
        LD (Ei_frq+1),HL
 
        LD A,16
 
        RET
 
        ENDM
 
 
        MACRO l
 
        LD A,(DE)
 
        INC DE
 
        LD (\0),A
 
        RET
 
        ENDM
 
 
        MACRO gethl
 
IGETHL  INC DE
 
GETHL  EX DE,HL
 
        LD E,(HL)
 
        INC HL
 
        LD D,(HL)
 
        INC HL
 
        EX DE,HL
 
        XOR A
 
        RET
 
        ENDM
 
 
      IFN hrip
 
compile LD HL,module+30
 
        JP INIT
 
        JP PLAY
 
      ELSE
 
        ORG #C000
 
compile
 
        LD HL,module
 
        JR $+5
 
        JP play
 
      ;DI
 
      ENDIF
 
init
 
    IFN twice
 
        LD (ia_pos0+1),HL
 
        PUSH HL
 
      IFN frq
 
        LD BC,99
 
        ADD HL,BC
 
      IFN frqrosh
 
        PUSH HL
 
        LD E,(HL)
 
        LD D,B
 
        LD HL,NT_DATA
 
        LD BC,T_
 
        ADD HL,DE
 
        ADD HL,DE
 
        ADD HL,DE
 
        LD E,(HL)
 
        CALL MAKEfrq
 
        POP HL
 
        POP BC
 
        INC HL
 
        PUSH HL
 
        INC HL
 
      ELSE ;frqrosh=0
 
        LD B,(HL)
 
        EX DE,HL
 
OLDfrq  LD HL,0
 
        CALL SWAPpp ;inc de
 
        LD HL,tab0frq+#8E
 
        DJNZ $+3
 
        LD L,B
 
        DJNZ $+5
 
        LD HL,tab2frq+#8E
 
        DJNZ $+3
 
        DEC HL
 
        CALL SWAPpp ;inc de
 
        EX DE,HL
 
        POP BC
 
      ENDIF
 
      ELSE ;twice=1&frq=0
 
        LD BC,100
 
        ADD HL,BC
 
        POP BC
 
        PUSH HL
 
        INC HL
 
      ENDIF
 
        LD (sav_SP0+1),SP
 
        LD SP,HL
 
    ELSE ;twice=0
 
        LD (sav_SP0+1),SP
 
      IFN frq
 
        LD SP,module+99
 
        POP BC
 
        LD B,C
 
      IF0 hrip
 
        DEC HL
 
      ENDIF
 
        DEC B
 
        JR Z,NOsWAP
 
        DJNZ $+5
 
        LD HL,tab2frq+#8E
 
        DEC B
 
        LD DE,tab_frq+#BF
 
        LD B,49
 
        JR Z,NEWFdj-1
 
        swaper
 
NOsWAP
 
        LD BC,module
 
      ELSE ;twice=0&frq=0
 
        LD B,H,C,L
 
        LD SP,module+101
 
      ENDIF
 
    ENDIF
 
        POP AF,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
 
      IFN twice
 
        INC L
 
        LD H,L
 
        LD (int_qty),HL
 
        LD (B_qty),HL
 
        LD (Psa_beg+1),SP
 
        DEC H
 
      ELSE
 
        LD H,L
 
      ENDIF
 
        LD L,A
 
        ADD HL,SP
 
        LD (Psa_lop+1),HL
 
sav_SP0 LD SP,0
 
      IFN twice
 
        XOR A
 
        LD (Am_vol+1),A ;NO ENV
 
        LD (Bm_vol+1),A
 
        LD (Cm_vol+1),A
 
      ;LD HL,(tba_orn)
 
      LD HL,DUMMYORN
 
        LD (Ao_adr+1),HL
 
        LD (Bo_adr+1),HL
 
        LD (Co_adr+1),HL
 
      ;LD HL,(tba_smp)
 
        LD (As_adr+1),HL
 
        LD (Bs_adr+1),HL
 
        LD (Cs_adr+1),HL
 
      ;LD HL,tab_vol+16 =DUMMYORN
 
        LD (Ach_adr+1),HL
 
      SUB 16 ;FIX
 
        LD (Ag_vol+1),A ;VOL=15
 
        LD (Bg_vol+1),A
 
        LD (Cg_vol+1),A
 
      SBC A,A
 
        LD (Avb_lok+1),A
 
        LD (Bvb_lok+1),A
 
        LD (Cvb_lok+1),A
 
      IFN frq
 
      IFN frqrosh
 
        POP DE
 
eff_tmp l temp+1
 
      ELSE
 
        RET
 
      ENDIF
 
ornsmp
 
      ELSE ;twice=1&frq=0
 
        POP DE
 
eff_tmp l temp+1
 
outer ;10
 
gethl ;9
 
eipp ;15
 
      ENDIF
 
      ELSE ;twice=0
 
        LD DE,module+100
 
eff_tmp l temp+1
 
      IF0 frq
 
ornsmp ;16
 
eipp ;15
 
      ENDIF
 
      ENDIF
 
      IF0 Esld9A
 
Eef_sld=0
 
      ENDIF
 
        MACRO tabl
 
      IF0 sld12
 
\0ef_slT=0
 
      ENDIF
 
      IF0 port3
 
\0ef_nsT=0
 
      ENDIF
 
      IF0 dsmp4
 
\0ef_dSm=0
 
      ENDIF
 
      IF0 dorn5
 
\0ef_dOr=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
 
        DS 4,1
 
        DW Eef_sld
 
        DW eff_tmp
 
      IFN $-18!$&#FF00
 
        DISPLAY "ERROR \0_eff
 
      ENDIF
 
        ENDM
 
      IF0 twice
 
outer ;10
 
npush ;11
 
tabl A
 
tabl B
 
tabl C
 
B_qty=$-6
 
      ENDIF
 
tba_smp DS 64
 
tba_orn DS 32
 
        DISPLAY $
 
tab_vol
 
frq_A  DW 0
 
frq_B  DW 0
 
frq_C  DW 0
 
N_frq  DB 0 ;;4
 
        DB 1    ;mix    ;no_use
 
vol_A  DB 0
 
vol_B  DB 0
 
vol_C  DB 0
 
frq_E  DW 0
 
E_form  DB 0
 
int_qty DB 1
 
A_qty  DB 1
 
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
 
        DD 0001010203030405050607070809090A
 
        DD 000101020304040506070708090A0A0B
 
        DD 0001020203040506060708090A0A0B0C
 
        DD 00010203030405060708090A0A0B0C0D
 
        DD 00010203040506070708090A0B0C0D0E
 
        DD 000102030405060708090A0B0C0D0E0F
 
tab_frq
 
        DS #C0
 
      IFN twice
 
tabl A
 
tabl B
 
tabl C
 
B_qty=$-6
 
      ENDIF
 
      IFN ?NPUSH
 
npush ;11
 
      ENDIF
 
      IFN ?OUTER
 
outer ;10
 
      ENDIF
 
      IFN ?ornPP
 
ornsmp ;16
 
      ENDIF
 
      IFN ?EiPP
 
eipp ;15
 
      ENDIF
 
      IFN ?GETHL
 
gethl ;9
 
      ENDIF
 
C_qty=B_qty+1
 
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
 
      LD (N_frq),A ;;5!!!
 
      LD D,A          ;;
 
        LD (sav_SP2+1),SP
 
Psa_beg LD HL,module+201
 
        LD A,(HL)
 
        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,module
 
        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
 
        CALL An_clc1
 
        LD (Ach_adr+1),DE
 
Ai_qty  LD A,0,(A_qty),A
 
      DJNZ Aq_0
 
        LD H,B,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
 
        CALL Bn_clc1
 
        LD (Bch_adr+1),DE
 
Bi_qty  LD A,0,(B_qty),A
 
      DJNZ Bq_0
 
        LD H,B,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
 
        CALL Cn_clc1
 
        LD (Cch_adr+1),DE
 
Ci_qty  LD A,0,(C_qty),A
 
      DJNZ Cq_0
 
        LD H,B,L,B
 
        LD (Csl_dsp+1),HL
 
Cq_0
 
;--- install_E ---
 
Ei_form LD A,0        ;env_form
 
        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,(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
 
        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
 
      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
 
      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
 
        JR \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
 
 
        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
 
sam1 A
 
        RRCA
 
        RRCA
 
sam2 A
 
sam1 B
 
        RRCA
 
        OR LX
 
sam2 B
 
sam1 C
 
        OR LX
 
sam2 C
 
;---- sampler_E ----
 
        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
 
        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
 
        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
 
 
        MACRO nota
 
\0ni_not LD (\0s_note+1),A
 
        XOR A
 
        LD H,A,L,A
 
        LD (\0s_dsp+1),A
 
        LD (\0o_dsp+1),A
 
        LD (\0sl_stp+1),A
 
        LD (\0vb_lok+1),A
 
      IFN vib6
 
        LD (\0vb_stp+1),A
 
      ENDIF
 
      IFN smpfix
 
        LD (\0s_Nsl+1),A
 
        LD (\0s_Esl+1),A
 
        LD (\0s_dtn+1),HL
 
      LD A,16,(\0s_Vsl+1),A
 
      ENDIF
 
      LD B,1
 
        RET
 
 
\0ni_vol JR NZ,\0ni_v0
 
      IFN vib6
 
        LD (\0vb_stp+1),A
 
      ENDIF
 
        DEC A
 
        LD (\0vb_lok+1),A
 
        RET
 
\0ni_v0
 
        DUP 4
 
        ADD A,A
 
        EDUP
 
        LD (\0g_vol+1),A
 
        JR \0n_clc2
 
\0ni_s_o
 
        LD BC,\0o_adr+1
 
        CALL ornPP
 
\0ni_vse
 
        CALL NZ,EiPP
 
\0ni_sm0 LD (\0m_vol+1),A
 
        XOR A
 
        LD (\0o_dsp+1),A
 
        LD A,(DE)
 
        INC DE
 
        JR $+4
 
\0ni_smp RET Z
 
        ADD A,A
 
        LD BC,\0s_adr+1
 
        CALL smpPP
 
\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
 
        LD HL,-256&\0_eff+.(\0_eff+30)
 
        LD BC,\0s_note+1
 
      CALL NPUSH
 
        JR \0n_clc1
 
      IF0 "\0 "-"B "
 
\0ni_noi LD (N_frq),A;GLOBALnoise
 
        JR \0n_clc2
 
      ENDIF
 
\0ni_vqe JR Z,\0ni_v1
 
        DEC A
 
        JR NZ,\0ni_e0
 
        LD A,(DE)
 
        LD (\0i_qty+1),A
 
        INC DE
 
        JR \0n_clc2
 
 
\0ni_e0 CALL EiPP
 
\0ni_v1 LD (\0m_vol+1),A
 
        JR \0n_clc2
 
\0ni_orn
 
        LD BC,\0o_adr+1
 
        CALL ornPP
 
        LD (\0o_dsp+1),A
 
        JR \0n_clc1
 
        ENDM
 
nota A
 
nota B
 
nota C
 
;---- special_effects_COM.xxxx ----
 
      IFN vib6
 
        MACRO vib
 
\0ef_vib LD A,(DE)
 
        INC DE
 
        LD (\0vb_sts+1),A
 
        LD (\0vb_stp+1),A
 
        l \0vb_frq+1
 
        ENDM
 
vib A
 
vib B
 
vib C
 
      ENDIF
 
 
      IFN Esld9A
 
Eef_sld LD A,(DE)
 
        LD (Esl_ist+1),A
 
        CALL IGETHL
 
        LD (Esl_ids+1),HL
 
        LD A,6,(E_ins0),A
 
        RET
 
      ENDIF
 
 
      IFN sld12|port3
 
        MACRO slT
 
\0ef_slT LD A,(DE)
 
        LD (\0sl_stp+1),A
 
        LD (\0sl_sts+1),A
 
        CALL IGETHL      ;sld_ton
 
        LD (\0sl_tfr+1),HL
 
      IFN vib6
 
        LD (\0vb_stp+1),A
 
      ENDIF
 
      IFN port3
 
        LD A,\0sl_sts-\0sl_plk
 
        LD (\0sl_plk-1),A ;port_off
 
      ENDIF
 
        RET
 
        ENDM
 
slT A
 
slT B
 
slT C
 
      ENDIF
 
      IFN port3
 
        MACRO nsT
 
\0ef_nsT CALL \0ef_slT
 
        CALL GETHL
 
        LD (\0sl_tfr+1),HL
 
        LD B,A,(\0sl_plk-1),A ;port_on
 
        LD HL,\0s_note+1
 
        LD A,(HL),(\0sl_not+1),A
 
        EXA
 
        LD (HL),A
 
        RET
 
        ENDM
 
nsT A
 
nsT B
 
nsT C
 
      ENDIF
 
      IFN dsmp4
 
Aef_dSm l As_dsp+1
 
Bef_dSm l Bs_dsp+1
 
Cef_dSm l Cs_dsp+1
 
      ENDIF
 
      IFN dorn5
 
Aef_dOr l Ao_dsp+1
 
Bef_dOr l Bo_dsp+1
 
Cef_dOr l Co_dsp+1
 
      ENDIF
 
 
      IFN frq
 
      IF0 frqrosh
 
      IFN twice
 
SWAPpp  LD (OLDfrq+1),HL
 
        LD A,L
 
        OR A
 
        JR Z,eff_tmp
 
        PUSH BC,DE
 
        CP tab0frq+#8D
 
        LD DE,tab_frq+#BF
 
        LD B,49
 
        JR Z,NEWFdj
 
        swaper
 
        POP DE,BC
 
eff_tmp LD A,(DE)      ;temp
 
        INC DE
 
        LD (temp+1),A
 
        RET
 
      ENDIF
 
tab2frq INCBIN "KOZASM
 
tab3frq DW #CDA
 
tab0frq INCBIN "KOZPT
 
      ELSE
 
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
 
      ENDIF
 
      IFN hrip
 
l8FA0=#8FA0
 
l8FA3=#8FA3
 
        CALL play
 
      LD A,#FD
 
      IN A,(-2)
 
      BIT 3,A
 
      JR NZ,$+8
 
      CALL play,play
 
        LD HL,#5A00
 
        LD E,8
 
        CALL LL8d9e,LL8d9e
 
LL8d9e  LD BC,#FFFD
 
        OUT (C),E
 
        IN A,(C)
 
        AND #F
 
        JR Z,LL8db2
 
        LD B,A
 
LL8dad  LD (HL),7
 
        INC HL
 
        DJNZ LL8dad
 
LL8db2
 
        CPL
 
        ADD A,33
 
        LD B,A
 
LL8dba  LD (HL),0
 
        INC HL
 
        DJNZ LL8dba
 
        INC DE
 
 
         RET  
 
         RET  
INIT
+
         DS 100,32
        LD (LL8df4),DE
+
DISPLAY "module end=",$
      LD IX,l8FA0
+
DISPLAY "save #DC00,",$-#DC00
         LD DE,l8FA3 ;NAME
+
  A
        LD A,#D
 
        LD BC,32
 
        LDIR
 
        LD (DE),A
 
        INC DE
 
        INC HL,HL,HL,HL
 
        XOR A
 
        LD BC,32
 
        LDIR
 
        LD (DE),A
 
      LD (IX),A
 
      LD HL,#616,(l8FA0+1),HL
 
        CALL CALLER
 
      LD HL,#010,(l8FA0+1),HL
 
        LD HL,l8FA3
 
        LD A,3
 
LL8e09  LD B,#F
 
        LD (HL),#7F
 
        INC HL
 
        DJNZ $-3
 
        LD (HL),#D
 
        INC HL
 
        DEC A
 
        JR NZ,LL8e09
 
        LD (HL),A
 
      DI
 
        shut
 
      LD A,#17,(#69A8),A
 
        LD DE,tab_frq+#BF
 
      LD HL,tab0frq+#8E
 
      CALL init
 
CALLER  JP 0
 
LL8df4=$-2
 
module=#C000
 
END
 
      ELSE
 
END
 
module
 
        INCBIN "si*.m"
 
      ENDIF
 
        ORG tab_frq
 
      ;INCBIN "tb_ST
 
        DD F80E100E600D800CD80B280B880AF0096009E0085808E007
 
        DD 7C070807B0064006EC0594054405F804B00470042C04FD03
 
        DD BE03840358032003F602CA02A2027C02580238021602F801
 
        DD DF01C201AC0190017B01650151013E012C011C010A01FC00
 
        DD EF00E100D600C800BD00B200A8009F0096008E0085007E00
 
        DD 770070006B0064005E00590054004F004B00470042003F00
 
        DD 3B003800350032002F002C002A0027002500230021001F00
 
        DD 1D001C001A00190017001600150013001200110010000F00
 
      IF0 frq
 
IF0 .{module+99}-0
 
        ORG tab_frq
 
      ;INCBIN "tb_PT
 
        DD 220C730BCF0A330AA109170994081908A4073707CF066D06
 
        DD 1106BA0567051A05D0048B044A040C04D2039B0367033703
 
        DD 0803DD02B4028D026802460225020602E901CE01B4019B01
 
        DD 84016E015A0146013401230112010301F500E700DA00CE00
 
        DD C200B700AD00A3009A009100890082007A0073006D006700
 
        DD 61005C00560052004D004900450041003D003A0036003300
 
        DD 31002E002B00290027002400220020001F001D001B001A00
 
        DD 180017001600140013001200110010000F000E000D000C00
 
ENDIF
 
IF0 .{module+99}-2
 
        ORG tab_frq
 
      ;INCBIN "tb_ASM
 
        DD 100D550CA40BFC0A5F0ACA093D09B8083B08C5075507EC06
 
        DD 88062A06D2057E052F05E5049E045C041D04E203AB037603
 
        DD 44031503E902BF02980272024F022E020F02F101D501BB01
 
        DD A2018B01740160014C013901280117010701F900EB00DD00
 
        DD D100C500BA00B000A6009D0094008C0084007C0075006F00
 
        DD 690063005D00580053004E004A00460042003E003B003700
 
        DD 340031002F002C00290027002500230021001F001D001C00
 
        DD 1A00190017001600150014001200110010000F000E000D00
 
ENDIF
 
IF0 .{module+99}-3
 
        ORG tab_frq
 
      ;INCBIN "tb_REAL
 
        DD DA0C220C730BCF0A330AA109170994081908A4073707CF06
 
        DD 6D061106BA0567051A05D0048B044A040C04D2039B036703
 
        DD 37030803DD02B4028D026802460225020602E901CE01B401
 
        DD 9B0184016E015A0146013401230112010301F500E700DA00
 
        DD CE00C200B700AD00A3009A009100890082007A0073006D00
 
        DD 670061005C00560052004D004900450041003D003A003600
 
        DD 330031002E002B00290027002400220020001F001D001B00
 
        DD 1A00180017001600140013001200110010000F000E000D00
 
ENDIF
 
      ENDIF
 
        DISPLAY "SIZE=",END-compile
 
 
 
        ORG #7000
 
      IF0 hrip
 
        DI
 
        CALL compile
 
play_l EI
 
        HALT
 
        CALL play
 
        LD A,#7F
 
        IN A,(-2)
 
        RRA
 
        JR C,play_l
 
      ENDIF
 
        shut
 
        RET  (DE),A
 
        INC DE
 
        INC HL,HL,HL,HL
 
        XOR A
 
        LD BC,32
 
        LDIR
 
        LD (DE),A
 
      LD (IX),A
 
      LD HL,#616,(l8FA0+1),HL
 

Revision as of 23:09, 14 February 2020

emptytrkC��þ���+Ç ORG #DC00

       LD HL,$
       JR $+2
       LD HL,#E
       LD BC,-3
       DEC L
       OUT (C),L
       LD B,#BF
       OUT (C),H
       JR NZ,$-10
       RET 
       DS 100,32

DISPLAY "module end=",$ DISPLAY "save #DC00,",$-#DC00

A