Difference between revisions of "PROTRACKER372 MIC&RC 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)
 
(Tags: Mobile edit, Mobile web edit)
 
Line 1: Line 1:
mic&rc  C��ZY�Z-╚;player mic,rc,hrip SLOW
+
mic&rc  C��ZY�Z-╚
;todo frq нов.ноты 3xxx считать заранее,ч/з п/п
+
;player mic,rc,hrip SLOW
twice=1;перемещаемый модуль и многокр.инициализация
+
;todo frq нов.ноты 3xxx считать заранее,ч/з п/п
frq=1;all freq tables
+
twice=1;перемещаемый модуль и многокр.инициализация
frqrosh=1;all freq tables(3.4x)by Roshin
+
frq=1;all freq tables
IFN frqrosh
+
frqrosh=1;all freq tables(3.4x)by Roshin
twice=1
+
  IFN frqrosh
frq=1
+
  twice=1
ENDIF  
+
  frq=1
hrip=0;при hrip=1 ниже включить:
+
  ENDIF  
smpfix=1;vol,T,E/N cumulations in SMPs
+
hrip=0;при hrip=1 ниже включить:
sld12=1;glisses 1,2
+
smpfix=1;vol,T,E/N cumulations in SMPs
port3=1;tone port.
+
sld12=1;glisses 1,2
dsmp4=1;smp.offset
+
port3=1;tone port.
dorn5=1;orn.offset
+
dsmp4=1;smp.offset
vib6=1;vibrate
+
dorn5=1;orn.offset
Esld9A=1;env.gliss
+
vib6=1;vibrate
ts2=0;2nd TS player;играет пат47 вместо пат0 и т.д.
+
Esld9A=1;env.gliss
;#720..#B3C
+
ts2=0;2nd TS player;играет пат47 вместо пат0 и т.д.
        MACRO ornsmp
+
;#720..#B3C
ornPP  ADD A,A
+
        MACRO ornsmp
        ADD A,tba_orn-tba_smp
+
ornPP  ADD A,A
smpPP  ADD A,tba_smp
+
        ADD A,tba_orn-tba_smp
        LD L,A
+
smpPP  ADD A,tba_smp
      LD H,'compile
+
        LD L,A
        LD A,(HL),(BC),A
+
        LD H,'compile
        INC L,BC
+
        LD A,(HL),(BC),A
        LD A,(HL),(BC),A
+
        INC L,BC
        XOR A
+
        LD A,(HL),(BC),A
        RET ;16
+
        XOR A
        ENDM  
+
        RET ;16
 
+
        ENDM  
        MACRO npush
+
NPUSH  RLA  
+
        MACRO npush
        ADD A,L
+
NPUSH  RLA  
        LD L,A
+
        ADD A,L
        LD A,(HL)
+
        LD L,A
        INC L
+
        LD A,(HL)
        LD H,(HL)
+
        INC L
        LD L,A
+
        LD H,(HL)
        EX (SP),HL
+
        LD L,A
        LD A,(BC)
+
        EX (SP),HL
        EXA  
+
        LD A,(BC)
        JP (HL)
+
        EXA  
        ENDM  
+
        JP (HL)
 
+
        ENDM  
        MACRO outer
+
        OUTI  
+
        MACRO outer
OUTER  LD B,D
+
        OUTI  
        OUT (C),L
+
OUTER  LD B,D
        LD B,E
+
        OUT (C),L
        DEC A
+
        LD B,E
        JR NZ,OUTER-2
+
        DEC A
        RET  
+
        JR NZ,OUTER-2
        ENDM  
+
        RET  
 
+
        ENDM  
        MACRO swaper
+
NEWF0  DEC E
+
        MACRO swaper
      IFN twice
+
NEWF0  DEC E
        LD A,(DE),C,A
+
        IFN twice
      ENDIF  
+
        LD A,(DE),C,A
        LD A,(HL),(DE),A
+
        ENDIF  
      IFN twice
+
        LD A,(HL),(DE),A
        LD (HL),C
+
        IFN twice
      ENDIF  
+
        LD (HL),C
        DEC E
+
        ENDIF  
        DEC HL
+
        DEC E
NEWFdj  DJNZ NEWF0
+
        DEC HL
        INC B,E
+
NEWFdj  DJNZ NEWF0
        JR NZ,NEWF0
+
        INC B,E
        ENDM  
+
        JR NZ,NEWF0
 
+
        ENDM  
        MACRO shut
+
        LD DE,#E00
+
        MACRO shut
        LD BC,-3
+
        LD DE,#E00
        DEC D
+
        LD BC,-3
        OUT (C),D
+
        DEC D
        LD B,#BF
+
        OUT (C),D
        OUT (C),E
+
        LD B,#BF
        JR NZ,$-10
+
        OUT (C),E
        ENDM  
+
        JR NZ,$-10
 
+
        ENDM  
        MACRO eipp
+
EiPP    LD (Ei_form+1),A
+
        MACRO eipp
        LD A,(DE),H,A
+
EiPP    LD (Ei_form+1),A
        INC DE
+
        LD A,(DE),H,A
        LD A,(DE),L,A
+
        INC DE
        INC DE
+
        LD A,(DE),L,A
        LD (Ei_frq+1),HL
+
        INC DE
        LD A,16
+
        LD (Ei_frq+1),HL
        RET  
+
        LD A,16
        ENDM  
+
        RET  
 
+
        ENDM  
        MACRO l
+
        LD A,(DE)
+
        MACRO l
        INC DE
+
        LD A,(DE)
        LD (\0),A
+
        INC DE
        RET  
+
        LD (\0),A
        ENDM  
+
        RET  
 
+
        ENDM  
        MACRO gethl
+
IGETHL  INC DE
+
        MACRO gethl
GETHL  EX DE,HL
+
IGETHL  INC DE
        LD E,(HL)
+
GETHL  EX DE,HL
        INC HL
+
        LD E,(HL)
        LD D,(HL)
+
        INC HL
        INC HL
+
        LD D,(HL)
        EX DE,HL
+
        INC HL
        XOR A
+
        EX DE,HL
        RET  
+
        XOR A
        ENDM  
+
        RET  
 
+
        ENDM  
      IFN hrip
+
compile LD HL,module+30
+
        IFN hrip
        JP INIT
+
compile LD HL,module+30
        JP PLAY
+
        JP INIT
      ELSE  
+
        JP PLAY
        ORG #C000
+
        ELSE  
compile
+
        ORG #C000
        LD HL,module
+
compile
        JR $+5
+
        LD HL,module
        JP play
+
        JR $+5
      ;DI
+
        JP play
      ENDIF  
+
        ;DI
init
+
        ENDIF  
    IFN twice
+
init
        LD (ia_pos0+1),HL
+
      IFN twice
        PUSH HL
+
        LD (ia_pos0+1),HL
      IFN frq
+
        PUSH HL
        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 frq
      IFN frqrosh
+
        LD BC,99
         POP DE
+
        ADD HL,BC
eff_tmp l temp+1
+
        IFN frqrosh
      ELSE
+
        PUSH HL
         RET
+
        LD E,(HL)
      ENDIF  
+
        LD D,B
ornsmp
+
        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
 
       ELSE ;twice=1&frq=0
        POP DE
+
        LD BC,100
eff_tmp l temp+1
+
        ADD HL,BC
outer ;10
+
        POP BC
gethl ;9
+
        PUSH HL
eipp ;15
+
        INC HL
 
       ENDIF  
 
       ENDIF  
 +
        LD (sav_SP0+1),SP
 +
        LD SP,HL
 
       ELSE ;twice=0
 
       ELSE ;twice=0
         LD DE,module+100
+
        LD (sav_SP0+1),SP
eff_tmp l temp+1
+
      IFN frq
       IF0 frq
+
        LD SP,module+99
ornsmp ;16
+
        POP BC
eipp ;15
+
        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  
 
       ENDIF  
 
       ENDIF  
       IF0 Esld9A
+
        POP AF,HL
Eef_sld=0
+
        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  
 
       ENDIF  
         MACRO tabl
+
         IF0 Esld9A
      IF0 sld12
+
Eef_sld=0
\0ef_slT=0
+
        ENDIF
      ENDIF  
+
        MACRO tabl
      IF0 port3
+
        IF0 sld12
\0ef_nsT=0
+
\0ef_slT=0
      ENDIF  
+
        ENDIF  
      IF0 dsmp4
+
        IF0 port3
\0ef_dSm=0
+
\0ef_nsT=0
      ENDIF  
+
        ENDIF  
      IF0 dorn5
+
        IF0 dsmp4
\0ef_dOr=0
+
\0ef_dSm=0
      ENDIF  
+
        ENDIF  
      IF0 vib6
+
        IF0 dorn5
\0ef_vib=0
+
\0ef_dOr=0
      ENDIF  
+
        ENDIF  
\0_eff  DW \0ef_slT ;1/2xxx
+
        IF0 vib6
        DW \0ef_nsT ;3xxx
+
\0ef_vib=0
        DW \0ef_dSm ;4.xx
+
        ENDIF  
        DW \0ef_dOr ;5.xx
+
\0_eff  DW \0ef_slT ;1/2xxx
        DW \0ef_vib ;6.xx
+
        DW \0ef_nsT ;3xxx
        DS 4,1
+
        DW \0ef_dSm ;4.xx
        DW Eef_sld
+
        DW \0ef_dOr ;5.xx
        DW eff_tmp
+
        DW \0ef_vib ;6.xx
      IFN $-18!$&#FF00
+
        DS 4,1
        DISPLAY "ERROR \0_eff
+
        DW Eef_sld
      ENDIF  
+
        DW eff_tmp
        ENDM  
+
        IFN $-18!$&#FF00
      IF0 twice
+
        DISPLAY "ERROR \0_eff
outer ;10
+
        ENDIF  
npush ;11
+
        ENDM  
tabl A
+
        IF0 twice
tabl B
+
outer ;10
tabl C
+
npush ;11
B_qty=$-6
+
tabl A
      ENDIF  
+
tabl B
tba_smp DS 64
+
tabl C
tba_orn DS 32
+
B_qty=$-6
        DISPLAY $
+
        ENDIF  
tab_vol
+
tba_smp DS 64
frq_A  DW 0
+
tba_orn DS 32
frq_B  DW 0
+
        DISPLAY $
frq_C  DW 0
+
tab_vol
N_frq  DB 0 ;;4
+
frq_A  DW 0
        DB 1    ;mix    ;no_use
+
frq_B  DW 0
vol_A  DB 0
+
frq_C  DW 0
vol_B  DB 0
+
N_frq  DB 0 ;;4
vol_C  DB 0
+
        DB 1    ;mix    ;no_use
frq_E  DW 0
+
vol_A  DB 0
E_form  DB 0
+
vol_B  DB 0
int_qty DB 1
+
vol_C  DB 0
A_qty  DB 1
+
frq_E  DW 0
DUMMYORN
+
E_form  DB 0
DUMMYSMP
+
int_qty DB 1
        DB 0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1
+
A_qty  DB 1
        DB 0,0,0,0,1,1,1,1,1,1,1,1,2,2,2,2
+
DUMMYORN
        DB 0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3
+
DUMMYSMP
        DB 0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4
+
        DB 0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1
        DB 0,0,1,1,1,2,2,2,3,3,3,4,4,4,5,5
+
        DB 0,0,0,0,1,1,1,1,1,1,1,1,2,2,2,2
        DB 0,0,1,1,2,2,2,3,3,4,4,4,5,5,6,6
+
        DB 0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3
        DB 0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7
+
        DB 0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4
        DB 0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8
+
        DB 0,0,1,1,1,2,2,2,3,3,3,4,4,4,5,5
        DB 0,1,1,2,2,3,4,4,5,5,6,7,7,8,8,9
+
        DB 0,0,1,1,2,2,2,3,3,4,4,4,5,5,6,6
        DD 0001010203030405050607070809090A
+
        DB 0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7
        DD 000101020304040506070708090A0A0B
+
        DB 0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8
        DD 0001020203040506060708090A0A0B0C
+
        DB 0,1,1,2,2,3,4,4,5,5,6,7,7,8,8,9
        DD 00010203030405060708090A0A0B0C0D
+
        DD 0001010203030405050607070809090A
        DD 00010203040506070708090A0B0C0D0E
+
        DD 000101020304040506070708090A0A0B
        DD 000102030405060708090A0B0C0D0E0F
+
        DD 0001020203040506060708090A0A0B0C
tab_frq
+
        DD 00010203030405060708090A0A0B0C0D
        DS #C0
+
        DD 00010203040506070708090A0B0C0D0E
      IFN twice
+
        DD 000102030405060708090A0B0C0D0E0F
tabl A
+
tab_frq
tabl B
+
        DS #C0
tabl C
+
        IFN twice
B_qty=$-6
+
tabl A
      ENDIF  
+
tabl B
      IFN ?NPUSH
+
tabl C
npush ;11
+
B_qty=$-6
      ENDIF  
+
        ENDIF  
      IFN ?OUTER
+
        IFN ?NPUSH
outer ;10
+
npush ;11
      ENDIF  
+
        ENDIF  
      IFN ?ornPP
+
        IFN ?OUTER
ornsmp ;16
+
outer ;10
      ENDIF  
+
        ENDIF  
      IFN ?EiPP
+
        IFN ?ornPP
eipp ;15
+
ornsmp ;16
      ENDIF  
+
        ENDIF  
      IFN ?GETHL
+
        IFN ?EiPP
gethl ;9
+
eipp ;15
      ENDIF  
+
        ENDIF  
C_qty=B_qty+1
+
        IFN ?GETHL
play
+
gethl ;9
         LD HL,int_qty
+
        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)
 
         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
+
        LD (N_frq),A ;;5!!!
Ach_adr LD DE,tab_vol+16
+
        LD D,A          ;;
        LD A,(DE)
+
        LD (sav_SP2+1),SP
        OR A
+
Psa_beg LD HL,module+201
        JR NZ,Ps_n0
+
        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,module+201
Psa_beg LD HL,module+201
+
Ps_n1
        LD A,(HL)
+
        IFN ts2
        INC A      ;AAA;6
+
        LD A,47*3
        JR NZ,Ps_n1 ;NC ;6
+
        SUB (HL)
Psa_lop LD HL,module+201
+
        LD E,A
Ps_n1
+
        ELSE  
      IFN ts2
+
        LD E,(HL)      ;6
        LD A,47*3
+
        ENDIF  
        SUB (HL)
+
        INC HL
        LD E,A
+
        LD (Psa_beg+1),HL
      ELSE  
+
        LD E,(HL)      ;6
+
Psa_chn LD HL,0
      ENDIF  
+
        ADD HL,DE
        INC HL
 
        LD (Psa_beg+1),HL
 
 
 
Psa_chn LD HL,0
 
 
         ADD HL,DE
 
         ADD HL,DE
      ADD HL,DE
+
        LD SP,HL
        LD SP,HL
+
        POP HL
        POP HL
+
ia_pos0 LD BC,module
ia_pos0 LD BC,module
+
        ADD HL,BC
        ADD HL,BC
+
        EX DE,HL      ;DE=adr_chn_A
        EX DE,HL      ;DE=adr_chn_A
+
        POP HL
        POP HL
+
        ADD HL,BC      ;HL=adr_chn_B
        ADD HL,BC      ;HL=adr_chn_B
+
        LD (Bch_adr+1),HL
        LD (Bch_adr+1),HL
+
        POP HL
        POP HL
+
        ADD HL,BC      ;HL=adr_chn_C
        ADD HL,BC      ;HL=adr_chn_C
+
        LD (Cch_adr+1),HL
        LD (Cch_adr+1),HL
+
sav_SP2 LD SP,0
sav_SP2 LD SP,0
+
Ps_n0
Ps_n0
+
        CALL An_clc1
        CALL An_clc1
+
        LD (Ach_adr+1),DE
        LD (Ach_adr+1),DE
+
Ai_qty  LD A,0,(A_qty),A
Ai_qty  LD A,0,(A_qty),A
+
        DJNZ Aq_0
      DJNZ Aq_0
+
        LD H,B,L,B
        LD H,B,L,B
+
        LD (Asl_dsp+1),HL
        LD (Asl_dsp+1),HL
+
Aq_0
Aq_0
+
;--- nota_B ---
;--- nota_B ---
+
        LD HL,B_qty
      LD HL,B_qty
+
        DEC (HL)
      DEC (HL)
+
        JR NZ,Bq_0
        JR NZ,Bq_0
+
Bch_adr LD DE,0
Bch_adr LD DE,0
+
        CALL Bn_clc1
        CALL Bn_clc1
+
        LD (Bch_adr+1),DE
        LD (Bch_adr+1),DE
+
Bi_qty  LD A,0,(B_qty),A
Bi_qty  LD A,0,(B_qty),A
+
        DJNZ Bq_0
      DJNZ Bq_0
+
        LD H,B,L,B
        LD H,B,L,B
+
        LD (Bsl_dsp+1),HL
        LD (Bsl_dsp+1),HL
+
Bq_0
Bq_0
+
;--- nota_C ---
;--- nota_C ---
+
        LD HL,C_qty
      LD HL,C_qty
+
        DEC (HL)
      DEC (HL)
+
        JR NZ,Cq_0
        JR NZ,Cq_0
+
Cch_adr LD DE,0
Cch_adr LD DE,0
+
        CALL Cn_clc1
        CALL Cn_clc1
+
        LD (Cch_adr+1),DE
        LD (Cch_adr+1),DE
+
Ci_qty  LD A,0,(C_qty),A
Ci_qty  LD A,0,(C_qty),A
+
        DJNZ Cq_0
      DJNZ Cq_0
+
        LD H,B,L,B
        LD H,B,L,B
+
        LD (Csl_dsp+1),HL
        LD (Csl_dsp+1),HL
+
Cq_0
Cq_0
+
;--- install_E ---
;--- install_E ---
+
Ei_form LD A,0        ;env_form
Ei_form LD A,0        ;env_form
+
        LD (E_form),A
        LD (E_form),A
+
        OR A
        OR A
+
        JR Z,temp
        JR Z,temp
+
Ei_frq  LD HL,0        ;env_frq
Ei_frq  LD HL,0        ;env_frq
+
        LD (E_frq+1),HL
        LD (E_frq+1),HL
+
        XOR A
        XOR A
+
        LD L,A
        LD L,A
+
        LD H,A
        LD H,A
+
        LD (Ei_form+1),A
        LD (Ei_form+1),A
+
        LD (Esl_frq+1),HL
        LD (Esl_frq+1),HL
+
        LD (Esl_stp+1),A
        LD (Esl_stp+1),A
+
temp    LD A,3,(int_qty),A
temp    LD A,3,(int_qty),A
+
NOINS
NOINS
+
play_0  LD L,0        ;smp_sl_env
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  
 
         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
 
         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
 
         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  
 
         EXX  
        LD A,L
+
\0s_n7  LD A,D
Esl_frq LD DE,0        ;stp_sl_env
+
        RRCA
E_frq  LD HL,0       ;frq_env
+
        RRCA
         ADD A,L
+
        AND 36
        LD L,A
+
        ENDM
        ADD HL,DE
+
        LD (frq_E),HL
+
        MACRO sam2
Esl_stp LD A,0
+
        LD LX,A
        DEC A
+
        IFN smpfix
        JP M,sav_SP1
+
        POP BC
        JR NZ,E_n0
+
\0s_dtn LD HL,0        ;dsp_frq_smp
Esl_sds LD HL,0
+
        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
 
         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
 
         EX DE,HL
         ADD HL,BC
+
        ADD HL,BC
         LD A,(DE)
+
        LD (\0sl_dsp+1),HL
       LD (COPF3),A
+
         IFN port3
         INC DE
+
        JR \0sl_sts    ;port off/on
        LD A,(DE)
+
\0sl_plk
         ADD A,C
+
\0sl_not LD A,0
         LD C,A
+
        LD L,A
         ADC A,B
+
        ADD HL,HL
         SUB C
+
        LD H,'tab_frq
         LD B,A
+
        LD SP,HL
         PUSH BC
+
        POP HL
        LD DE,tab_frq
+
\0s_note CP 0
        PUSH DE
+
        JR NC,$+3
        LD B,12
+
        EX DE,HL
COPF1  PUSH BC
+
        SBC HL,DE
        LD C,(HL)
+
        JR C,\0sl_sts
        INC HL
+
        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 HL
        LD B,(HL)
+
        PUSH AF
         PUSH DE
+
        ADD A,A
         EX DE,HL
+
        LD C,A
         LD DE,23
+
        ADD HL,BC
         LD HX,8
+
        POP AF
COPF2  SRL B
+
        INC (HL)
         RR C
+
        JR NC,$+4
;COPF3  NOP ;AND A
+
        DEC (HL),(HL)
         LD A,C
+
         POP HL
COPF3  ADC A,D ;=ADC 0
+
         ;AND A
         LD (HL),A
+
         ;SBC HL,BC
         INC HL
+
        JR CORR_1
        LD A,B
+
 +
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
 
         ADC A,D
        LD (HL),A
+
        DB TCNEW_3-T_
        ADD HL,DE
+
         ;DB T_OLD_3-T_
        DEC HX
+
         ;NOP
        JR NZ,COPF2
+
         ;DB TCOLD_3-T_
        POP DE
+
T_
        INC DE,DE
+
;COLD_0 DB #00+1,#04+1,#08+1,#0A+1,#0C+1,#0E+1,#12+1,#14+1
        POP HL
+
;      DB #18+1,#24+1,#3C+1,0
        INC HL
+
TCNEW_1
        POP BC
+
TCOLD_1 DB #5C+1,0
        DJNZ COPF1
+
;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
        POP HL
+
TCNEW_3 DB #56+1
        POP DE
+
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
        ;LD A,E
+
        DB #BC+1,#BE+1,0
        ;CP TCOLD_1
+
TCNEW_2 DB #1A+1,#20+1,#24+1,#28+1,#2A+1,#3A+1,#4C+1,#5E+1
        ;JR NZ,CORR_1
+
        DB #BA+1,#BC+1,#BE+1,0
        ;LD A,#FD,(FrTab+#2E),A
+
CORR_1  LD A,(DE)
+
;first 12 values of tone tables
        AND A
+
        RET Z
+
T_NEW_1
        INC DE
+
T_OLD_1 DW #0EF8*2,#0E10*2,#0D60*2,#0C80*2,#0BD8*2,#0B28*2
        RRA
+
        DW #0A88*2,#09F0*2,#0960*2,#08E0*2,#0858*2,#07E0*2
      PUSH HL
+
;_OLD_2 DW #0D3E*2,#0C80*2,#0BCC*2,#0B22*2,#0A82*2,#09EC*2
        PUSH AF
+
;      DW #095C*2,#08D6*2,#0858*2,#07E0*2,#076E*2,#0704*2
        ADD A,A
+
T_NEW_3
        LD C,A
+
T_OLD_3 DW #0CDA*2,#0C22*2,#0B73*2,#0ACF*2,#0A33*2,#09A1*2
        ADD HL,BC
+
        DW #0917*2,#0894*2,#0819*2,#07A4*2,#0737*2,#06CF*2
        POP AF
+
T_OLD_0=T_OLD_3+2
        INC (HL)
+
T_NEW_0=T_OLD_3+2
        JR NC,$+4
+
        DW #066D*2
        DEC (HL),(HL)
+
T_NEW_2 DW #0D10*2,#0C55*2,#0BA4*2,#0AFC*2,#0A5F*2,#09CA*2
      POP HL
+
        DW #093D*2,#08B8*2,#083B*2,#07C5*2,#0755*2,#06EC*2
      ;AND A
+
        ENDIF  
      ;SBC HL,BC
+
        ENDIF  
        JR CORR_1
+
        IFN hrip
 
+
l8FA0=#8FA0
NT_DATA
+
l8FA3=#8FA3
        DB T_NEW_0-T_
+
        CALL play
      ADC A,D
+
        LD A,#FD
         DB TCNEW_0-T_
+
        IN A,(-2)
      ;DB T_OLD_0-T_
+
        BIT 3,A
      ;AND A
+
        JR NZ,$+8
      ;DB TCOLD_0-T_
+
        CALL play,play
 
+
        LD HL,#5A00
        DB T_NEW_1-T_
+
        LD E,8
        AND A
+
        CALL LL8d9e,LL8d9e
        DB TCNEW_1-T_
+
LL8d9e  LD BC,#FFFD
      ;DB T_OLD_1-T_
+
        OUT (C),E
      ;AND A
+
        IN A,(C)
      ;DB TCOLD_1-T_
+
        AND #F
 
+
        JR Z,LL8db2
        DB T_NEW_2-T_
+
        LD B,A
      ADC A,D
+
LL8dad  LD (HL),7
         DB TCNEW_2-T_
+
        INC HL
      ;DB T_OLD_2-T_
+
        DJNZ LL8dad
      ;NOP
+
LL8db2
      ;DB TCOLD_2-T_
+
        CPL  
 
+
        ADD A,33
        DB T_NEW_3-T_
+
        LD B,A
      ADC A,D
+
LL8dba  LD (HL),0
         DB TCNEW_3-T_
+
        INC HL
      ;DB T_OLD_3-T_
+
        DJNZ LL8dba
      ;NOP
+
        INC DE
      ;DB TCOLD_3-T_
+
        RET  
T_
+
INIT
;COLD_0 DB #00+1,#04+1,#08+1,#0A+1,#0C+1,#0E+1,#12+1,#14+1
+
        LD (LL8df4),DE
;      DB #18+1,#24+1,#3C+1,0
+
        LD IX,l8FA0
TCNEW_1
+
        LD DE,l8FA3 ;NAME
TCOLD_1 DB #5C+1,0
+
        LD A,#D
;COLD_2 DB #30+1,#36+1,#4C+1,#52+1,#5E+1,#70+1,#82,#8C,#9C
+
        LD BC,32
;      DB #9E,#A0,#A6,#A8,#AA,#AC,#AE,#AE,0
+
        LDIR  
TCNEW_3 DB #56+1
+
        LD (DE),A
TCOLD_3 DB #1E+1,#22+1,#24+1,#28+1,#2C+1,#2E+1,#32+1,#BE+1,0
+
        INC DE
TCNEW_0 DB #1C+1,#20+1,#22+1,#26+1,#2A+1,#2C+1,#30+1,#54+1
+
        INC HL,HL,HL,HL
        DB #BC+1,#BE+1,0
+
        XOR A
TCNEW_2 DB #1A+1,#20+1,#24+1,#28+1,#2A+1,#3A+1,#4C+1,#5E+1
+
        LD BC,32
        DB #BA+1,#BC+1,#BE+1,0
+
        LDIR  
 
+
        LD (DE),A
;first 12 values of tone tables
+
        LD (IX),A
 
+
        LD HL,#616,(l8FA0+1),HL
T_NEW_1
+
        CALL CALLER
T_OLD_1 DW #0EF8*2,#0E10*2,#0D60*2,#0C80*2,#0BD8*2,#0B28*2
+
        LD HL,#010,(l8FA0+1),HL
        DW #0A88*2,#09F0*2,#0960*2,#08E0*2,#0858*2,#07E0*2
+
        LD HL,l8FA3
;_OLD_2 DW #0D3E*2,#0C80*2,#0BCC*2,#0B22*2,#0A82*2,#09EC*2
+
        LD A,3
;      DW #095C*2,#08D6*2,#0858*2,#07E0*2,#076E*2,#0704*2
+
LL8e09  LD B,#F
T_NEW_3
+
        LD (HL),#7F
T_OLD_3 DW #0CDA*2,#0C22*2,#0B73*2,#0ACF*2,#0A33*2,#09A1*2
+
        INC HL
        DW #0917*2,#0894*2,#0819*2,#07A4*2,#0737*2,#06CF*2
+
        DJNZ $-3
T_OLD_0=T_OLD_3+2
+
        LD (HL),#D
T_NEW_0=T_OLD_3+2
+
        INC HL
        DW #066D*2
+
        DEC A
T_NEW_2 DW #0D10*2,#0C55*2,#0BA4*2,#0AFC*2,#0A5F*2,#09CA*2
+
        JR NZ,LL8e09
        DW #093D*2,#08B8*2,#083B*2,#07C5*2,#0755*2,#06EC*2
+
        LD (HL),A
      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  
 
INIT
 
        LD (LL8df4),DE
 
      LD IX,l8FA0
 
        LD DE,l8FA3 ;NAME
 
        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  
 
         DI  
         CALL compile
+
        shut
play_l  EI  
+
        LD A,#17,(#69A8),A
        HALT  
+
        LD DE,tab_frq+#BF
        CALL play
+
        LD HL,tab0frq+#8E
        LD A,#7F
+
        CALL init
        IN A,(-2)
+
CALLER  JP 0
        RRA  
+
LL8df4=$-2
        JR C,play_l
+
module=#C000
      ENDIF  
+
END
        shut
+
        ELSE
        RET  (DE),A
+
END
        INC DE
+
module
        INC HL,HL,HL,HL
+
        INCBIN "si*.m"
        XOR A
+
        ENDIF
        LD BC,32
+
        ORG tab_frq
        LDIR  
+
        ;INCBIN "tb_ST
        LD (DE),A
+
        DD F80E100E600D800CD80B280B880AF0096009E0085808E007
      LD (IX),A
+
        DD 7C070807B0064006EC0594054405F804B00470042C04FD03
      LD HL,#616,(l8FA0+1),HL
+
        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

Latest revision as of 20:02, 8 March 2020

mic&rc C��ZY�Z-╚

;player mic,rc,hrip SLOW
;todo frq нов.ноты 3xxx считать заранее,ч/з п/п
twice=1;перемещаемый модуль и многокр.инициализация
frq=1;all freq tables
frqrosh=1;all freq tables(3.4x)by Roshin
 IFN frqrosh
 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
        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
        OUT (C),E
        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 
INIT
        LD (LL8df4),DE
       LD IX,l8FA0
        LD DE,l8FA3 ;NAME
        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