Difference between revisions of "PROTRACKER372 PLAYFAS4 H"

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

Latest revision as of 20:08, 8 March 2020

playFAS4C���i�jTя

;fast(long) player,can be INCLUDEd
;#E21 3.31 by Nick/GDC Воронеж'97
;#D86 3.51 fix Mm<M,MOnS+eR Самара 26xii00
;#C03 3.695 fix AlCo 1vi01-26xi05
;#C11 3.699 fix AlCo (3xxx chnA/B when old 3xxx ends только что)
        IFN ?frq
frq=1;all freq tables(3.4x)
        ENDIF 
        IFN ?msx
msx=0
        ENDIF 
        IFN ?smpfix
smpfix=1;vol,T,E/N cumulations in SMPs
        ENDIF 
        IFN ?port3
port3=1;tone port.
        ENDIF 
        IFN ?vib6
vib6=1;vibrate
        ENDIF 
        IFN ?ts2
ts2=0;2nd TS player;играет пат47 вместо пат0 и т.д.
        ENDIF 

        IFN ?jp-2
        MACRO jp
        JR \0 ;JP
        ENDM 
        ENDIF 

        IFN ?m4-2
        MACRO m4
        SLA L,L
        ENDM 
        ENDIF 

        IFN ?shut-2
        MACRO shut
       ;LD HL,#E
       IFN msx
        LD BC,#A0
       ELSE 
        LD BC,-3
       ENDIF 
        DEC L
        OUT (C),L
       IFN msx
        LD C,#A1
       ELSE 
        LD B,#BF
       ENDIF 
        OUT (C),A;0/255
        JR NZ,$-10
        ENDM 
        ENDIF 

        IFN ?esld-2
        MACRO esld
Eef_sld LD A,(DE)
        INC DE
        LD (Esl_ist+1),A
        LD A,(DE),L,A
        INC DE
        LD A,(DE),H,A
        INC DE
        LD (Esl_ids+1),HL
        LD A,6,(E_ins0),A
        RET 
        ENDM 
        ENDIF 

        IFN ?l-2
        MACRO l
        LD A,(DE)
        INC DE
        LD (\0),A
        RET 
        ENDM 
        ENDIF 

       IF0 $-#8000
StAnDaLoNe
        ORG #C000
       ENDIF 
compile
        LD HL,module
        JR install
        JP play
       IFN frq
        JR stop
       ENDIF 
install
        DI 
        LD (sav_SP0+1),SP
        LD (ia_pos0+1),HL
      IFN frq
        PUSH HL
        LD DE,100
        ADD HL,DE
        PUSH DE
        PUSH HL
        DEC HL
        LD E,(HL)
        LD HL,NT_DATA
        LD BC,T_
        ADD HL,DE
        ADD HL,DE
        ADD HL,DE
        LD E,(HL)
        CALL MAKEfrq
        POP HL
        POP DE
        POP BC
      ELSE 
        LD B,H,C,L
        LD DE,100
        ADD HL,DE
      ENDIF 
        LD A,(HL)
        INC HL
        LD (temp+1),A
        LD SP,HL
        ADD HL,DE
        LD (Psa_beg+1),HL
        POP AF
        LD E,A
        ADD HL,DE
        LD (Psa_lop+1),HL
        POP HL
        ADD HL,BC
        LD (Psa_chn+1),HL
       LD HL,tba_smp
ia_s0   EX DE,HL
        POP HL
        ADD HL,BC
        EX DE,HL
        LD (HL),E
        INC L
        LD (HL),D
        INC L
        JR NZ,ia_s0
        INC L
        LD H,L
        LD (A_qty),HL
        LD (C_qty),HL
sav_SP0 LD SP,0
stop
       LD HL,DUMMYORN
        LD (Ao_adr+1),HL
        LD (Bo_adr+1),HL
        LD (Co_adr+1),HL
        LD (Asi_adr+1),HL
        LD (Bsi_adr+1),HL
        LD (Cs_adr+1),HL
        LD (Ach_adr+1),HL
        XOR A
        LD (Am_vol+1),A
        LD (Bm_vol+1),A
        LD (Cm_vol+1),A
       LD (Ei_form+1),A ;no glu glu after switch module
       SUB 16 ;FIX
       LD (Agi_vol+1),A
       LD (Bgi_vol+1),A
        LD (Cg_vol+1),A
       SBC A,A
        LD (Avb_lok+1),A
        LD (Cvb_lok+1),A
        LD (Bvb_lok+1),A
       XOR A
       IF0 frq
       NOP 
       ENDIF 
        shut
        RET 
       IF0 frq
esld
       ENDIF 
tba_smp DS 64,0
tba_orn DS 32,0
        DISPLAY $
tab_vol
frq_A   DB 0,0
frq_B   DB 0,0
frq_C   DB 0,0
N_frq   DB 0 ;;4
        DB 0     ;mix    ;no_use
vol_A   DB 0
vol_B   DB 0
vol_C   DB 0
frq_E   DB 0,0
E_form  DB 0 ;;4
DUMMYORN
DUMMYSMP
       DS 2
        DB 0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1
        DB 0,0,0,0,1,1,1,1,1,1,1,1,2,2,2,2
        DB 0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3
        DB 0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4
        DB 0,0,1,1,1,2,2,2,3,3,3,4,4,4,5,5
        DB 0,0,1,1,2,2,2,3,3,4,4,4,5,5,6,6
        DB 0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7
        DB 0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8
        DB 0,1,1,2,2,3,4,4,5,5,6,7,7,8,8,9
        DD 0001010203030405050607070809090A
        DD 000101020304040506070708090A0A0B
        DD 0001020203040506060708090A0A0B0C
        DD 00010203030405060708090A0A0B0C0D
        DD 00010203040506070708090A0B0C0D0E
        DD 000102030405060708090A0B0C0D0E0F
tab_frq
        DS #C0
        IFN ?tabl-2
        MACRO tabl
       IF0 port3
\0ef_nsT=0
       ENDIF 
       IF0 vib6
\0ef_vib=0
       ENDIF 
\0_eff  DW \0ef_slT ;1/2xxx
        DW \0ef_nsT ;3xxx
        DW \0ef_dSm ;4.xx
        DW \0ef_dOr ;5.xx
        DW \0ef_vib ;6.xx
       IF0 vib6
        DS 4,1
       ELSE 
\0ef_vib LD A,(DE)
        INC DE
        JR \0VIB
       ENDIF 
        DW Eef_sld
        DW eff_tmp
       IFN $-18!$&#FF00
        DISPLAY "ERROR \0_eff
       ENDIF 
       IFN vib6
;0ef_vib LD A,(DE)
       ;INC DE
\0VIB
        LD (\0vb_ist+1),A;fix fr/st
       IF0 "\0 "-"C "
        LD (\0vb_stp+1),A
       ENDIF 
        LD A,(DE)
        INC DE
        LD (\0vb_ifr+1),A;fix st/fr
       IFN "\0 "-"C "
        LD A,6,(\0_ins4),A
       ENDIF 
        RET 
       ENDIF 
        ENDM 
        ENDIF 
tabl A
tabl B
tabl C

A_qty   NOP 
B_qty   NOP 
C_qty   NOP 
play    JP play_0
       EXX ;for B'<>1
        LD A,#C3,(play),A
;--- install_A ----
        XOR A
        LD L,A,H,A
       LD DE,#618
A_gli   LD (Asl_dsp+1),HL
A_ins0  JR A_ins0Q
       LD (As_dsp+1),A ;note
       IFN smpfix
        LD (As_Nsl+1),A
        LD (As_Esl+1),A
        LD (As_dtn+1),HL
       ENDIF 
       LD (Ao_dsp+1),A ;todo VARIABLE?
        LD (Asl_stp+1),A
       IFN vib6
        LD (Avb_stp+1),A
       ENDIF 
Avb_cpl CPL 
        LD (Avb_lok+1),A
       IFN port3
       LD A,(A_ins3)    ;3.699
       CP E;24          ;
       JZ $+8           ;
       LD A,(Api_lok+1) ;
       OR A             ;
       JZ $+7           ;
       ENDIF 
Asi_not LD A,0
        LD (As_note+1),A
Asi_adr LD HL,0
        LD (As_adr+1),HL
       IFN smpfix
       LD A,16
       LD (As_Vsl+1),A
       ENDIF 
A_ins0Q

Agi_vol LD A,0         ;global_volume
avol    LD (Ag_vol+1),A

A_ins2  JR A_ins2Q
        XOR A          ;ornament
        LD (Ao_dsp+1),A
Aoi_adr LD HL,0
        LD (Ao_adr+1),HL
Ami_vol LD A,0
        LD (Am_vol+1),A
A_ins2Q
A_ins3  JR A_ins3Q
;port & sld
Api_stp LD A,0
        LD (Asl_stp+1),A
        LD (Asl_sts+1),A
Api_tfr LD HL,0
        LD (Asl_tfr+1),HL
       IFN port3
Api_not LD A,0
        LD (Asl_not+1),A
Api_lok LD A,0
        LD (Asl_plk-1),A
       ENDIF 
       IFN vib6
         XOR A
         LD (Avb_stp+1),A
       ENDIF 
A_ins3Q
        IFN vib6
A_ins4  JR A_ins4Q
       LD A,E;24        ;vib
        LD (A_ins4),A
Avb_ist LD A,0
        LD (Avb_sts+1),A
        LD (Avb_stp+1),A
Avb_ifr LD A,0
        LD (Avb_frq+1),A
A_ins4Q
        ENDIF 
A_ins5   JR A_ins5Q
Asi_dsp  LD A,0         ;disp_sample
         LD (As_dsp+1),A
        LD A,E;24
         LD (A_ins5),A
A_ins5Q
A_ins6   JR A_ins6Q
Aoi_dsp  LD A,0
         LD (Ao_dsp+1),A;disp_ornament
        LD A,E;24
         LD (A_ins6),A
A_ins6Q
;--- install_B ---

        XOR A
        LD L,A,H,A
B_gli   LD (Bsl_dsp+1),HL
B_ins0  JR B_ins0Q
        LD (Bs_dsp+1),A
       IFN smpfix
        LD (Bs_Nsl+1),A
        LD (Bs_Esl+1),A
        LD (Bs_dtn+1),HL
       ENDIF 
        LD (Bo_dsp+1),A
        LD (Bsl_stp+1),A
       IFN vib6
        LD (Bvb_stp+1),A
       ENDIF 
Bvb_cpl CPL 
        LD (Bvb_lok+1),A
       IFN port3
       LD A,(B_ins3)    ;3.699
       CP E;24          ;
       JZ $+8           ;
       LD A,(Bpi_lok+1) ;
       OR A             ;
       JZ $+7           ;
       ENDIF 
Bsi_not LD A,0
        LD (Bs_note+1),A
Bsi_adr LD HL,0
        LD (Bs_adr+1),HL
       IFN smpfix
       LD A,16
       LD (Bs_Vsl+1),A
       ENDIF 
B_ins0Q

Bgi_vol LD A,0
bvol    LD (Bg_vol+1),A

B_ins2  JR B_ins2Q
        XOR A
        LD (Bo_dsp+1),A
Boi_adr LD HL,0
        LD (Bo_adr+1),HL
Bmi_vol LD A,0
        LD (Bm_vol+1),A
B_ins2Q
B_ins3  JR B_ins3Q
Bpi_stp LD A,0
        LD (Bsl_stp+1),A
        LD (Bsl_sts+1),A
Bpi_tfr LD HL,0
        LD (Bsl_tfr+1),HL
       IFN port3
Bpi_not LD A,0
        LD (Bsl_not+1),A
Bpi_lok LD A,0
        LD (Bsl_plk-1),A
       ENDIF 
       IFN vib6
        XOR A
        LD (Bvb_stp+1),A
       ENDIF 
B_ins3Q
       IFN vib6
B_ins4  JR B_ins4Q
       LD A,E;24
        LD (B_ins4),A
Bvb_ist LD A,0
        LD (Bvb_sts+1),A
        LD (Bvb_stp+1),A
Bvb_ifr LD A,0
        LD (Bvb_frq+1),A
B_ins4Q
       ENDIF 
B_ins5  JR B_ins5Q
Bsi_dsp LD A,0
        LD (Bs_dsp+1),A
       LD A,E;24
        LD (B_ins5),A
B_ins5Q
B_ins6  JR B_ins6Q
Boi_dsp LD A,0
        LD (Bo_dsp+1),A
       LD A,E;24
        LD (B_ins6),A
B_ins6Q
;--- install_E ---
Ei_form LD A,0         ;env_form
        LD (E_form),A ;;4
        OR A
        JR Z,temp
Ei_frq  LD HL,0        ;env_frq
        LD (E_frq+1),HL
        XOR A
        LD L,A,H,A
        LD (Ei_form+1),A
        LD (Esl_frq+1),HL
        LD (Esl_stp+1),A

temp    LD A,3,(int_qty+1),A
Ni_frq  LD A,0,(N_frq),A ;;4

E_ins0  JR Ei_Q
Esl_ids LD HL,0        ;stp_sld_env
        LD (Esl_sds+1),HL
Esl_ist LD A,0         ;stp_sld_p
        LD (Esl_stp+1),A
        LD (Esl_sts+1),A
       LD A,E;24
        LD (E_ins0),A
Ei_Q
;--- nota_A + calc next position ---
       LD HL,A_qty
       DEC (HL)
        LD H,E
      ;LD L,1 ;E
        LD B,E
        EXX 
        JR NZ,AqtyQ
      ;LD (avol+2),A
Ach_adr LD DE,tab_vol+16
        LD A,(DE)
        OR A
        JR NZ,Ps_n0
       LD (Ni_frq+1),A ;;5!!!
       LD D,A          ;;
        LD (sav_SP2+1),SP
Psa_beg LD HL,module+201
        LD A,(HL)
      ;LD E,A           ;6
        INC A       ;AAA;6
        JR NZ,Ps_n1 ;NC ;6
Psa_lop LD HL,module+201
Ps_n1
       IFN ts2
        LD A,47*3
        SUB (HL)
        LD E,A
       ELSE 
        LD E,(HL)       ;6
       ENDIF 
        INC HL
        LD (Psa_beg+1),HL

Psa_chn LD HL,0
        ADD HL,DE
       ADD HL,DE
        LD SP,HL
        POP HL
ia_pos0 LD BC,0
        ADD HL,BC
        EX DE,HL       ;DE=adr_chn_A
        POP HL
        ADD HL,BC      ;HL=adr_chn_B
        LD (Bch_adr+1),HL
        POP HL
        ADD HL,BC      ;HL=adr_chn_C
        LD (Cch_adr+1),HL
sav_SP2 LD SP,0
Ps_n0
        LD H,'compile
        CALL An_clc1
        LD (Ach_adr+1),DE
Ai_qty  LD A,0,(A_qty),A
AqtyQ  LD A,1
       DJNZ $+4
       LD A,34
       LD (A_gli),A
        EXX 
        LD A,B,(A_ins2),A
        LD A,H,(A_ins0),A
        LD A,E,(A_ins3),A

play_0  LD L,0        ;smp_sl_env
        EXX 
N_add   LD IX,0        ;HX=noise LX=mix
        LD (sav_SP1+1),SP

        IFN ?sam1-2
        MACRO sam1
\0vb_lok LD A,-1
        LD H,A
        INC A
        JP Z,\0vb_n0
\0s_adr LD SP,DUMMYSMP ;sample
        POP DE         ;loop E=beg D=end
\0s_dsp LD A,0
        LD L,A
        INC A
        CP D
        JR C,$+3       ;bug NZ/C
        LD A,E
        LD (\0s_dsp+1),A
        m4
        ADD HL,SP
        LD SP,HL
        POP DE ;D= Nm ts ns Tm v3 v2 v1 v0
        LD A,D ;E= sv +- N4 N3 N2 N1 N0 Em
       IFN smpfix
        OR #F0
        LD L,A
        LD A,E
        ADD A,A
\0s_Vsl LD A,16
        JR NC,\0s_VslG
        JP M,\0s_n2
        SUB 1
        JR $+4
\0s_n2  CP 31
        ADC A,0
        LD (\0s_Vsl+1),A
\0s_VslG
        ADD A,L
        JR C,$+3
        XOR A
        CP 16
        JR C,$+4
        LD A,15
       ELSE 
        AND 15
       ENDIF 
\0g_vol ADD A,#F0
        LD L,A,H,'tab_vol
        LD A,(HL)
        SRL E
        JR C,$+4
\0m_vol OR 0
        EXA 
        LD A,D
        RLCA 
        JR C,\0s_n5
       IFN smpfix
\0s_Nsl LD A,0
        ADD A,E
        BIT 5,D
        JR Z,$+5
        LD (\0s_Nsl+1),A
        LD HX,A
       ELSE 
        LD HX,E
       ENDIF 
        jp \0s_n7

\0s_n5  LD A,E
        AND 31
        CP 16
        JR C,$+4
        OR #F0
       IFN smpfix
\0s_Esl ADD A,0
        BIT 5,D
        JR Z,$+5
        LD (\0s_Esl+1),A
       ENDIF 
       EXX 
       ADD A,L
       LD L,A
       EXX 
\0s_n7  LD A,D
        RRCA 
        RRCA 
        AND 36
        ENDM 
        ENDIF 

        IFN ?sam2-2
        MACRO sam2
        LD LX,A
       IFN smpfix
        POP BC
\0s_dtn LD HL,0        ;dsp_frq_smp
        ADD HL,BC
       BIT 6,D
        JR Z,$+5
        LD (\0s_dtn+1),HL
        EX DE,HL
       ELSE 
        POP DE
       ENDIF 

\0o_adr LD SP,DUMMYORN ;ornament
        POP BC         ;loop C=beg B=end
\0o_dsp LD A,0
        LD L,A
        INC A
        CP B
        JR C,$+3       ;bug NZ/C
        LD A,C
        LD (\0o_dsp+1),A
        LD H,0
        ADD HL,SP
       IFN port3
        LD A,(\0s_note+1)
       ELSE 
\0s_note LD A,0
       ENDIF 
        ADD A,(HL)     ;dsp_orn
        ADD A,A
     JR NC,$+3
     XOR A
        LD L,A,H,'tab_frq
        LD SP,HL
        POP HL
        ADD HL,DE
\0sl_dsp LD BC,0
        ADD HL,BC
        LD (frq_\0),HL

\0sl_stp LD A,0
        DEC A
        JP M,\0sl_s0
        JR NZ,\0sl_s1
\0sl_tfr LD DE,0
       ADD HL,DE
       EX DE,HL
        ADD HL,BC
        LD (\0sl_dsp+1),HL
       IFN port3
        JR \0sl_sts     ;port off/on
\0sl_plk
\0sl_not LD A,0
        LD L,A
        ADD HL,HL
        LD H,'tab_frq
        LD SP,HL
        POP HL
\0s_note CP 0
        JR NC,$+3
        EX DE,HL
        SBC HL,DE
        JR C,\0sl_sts
        LD (\0s_note+1),A
        XOR A
        LD L,A
        LD (\0sl_dsp+1),HL
        JR $+4
       ENDIF 
\0sl_sts LD A,0
\0sl_s1 LD (\0sl_stp+1),A
\0sl_s0 EXA 

\0vb_n0 LD (vol_\0),A
       IFN vib6
\0vb_stp LD A,0
        DEC A
        JP M,\0smpQ
        JR NZ,\0vb_n1
        DEC A           ;;
        LD HL,\0vb_lok+1;;
        XOR (HL)        ;;
        LD (HL),A       ;;4
\0vb_frq LD A,0
        JR NZ,$+4
\0vb_sts LD A,0
\0vb_n1 LD (\0vb_stp+1),A
       ENDIF 
\0smpQ
        ENDM 
        ENDIF 
sam1 A
        RRCA 
        RRCA 
sam2 A
sam1 B
        RRCA 
        OR LX
sam2 B
sam1 C
        OR LX
sam2 C
;---- sampler_E ----
Esl_    EXX 
        LD A,L
Esl_frq LD DE,0        ;stp_sl_env
E_frq   LD HL,0        ;frq_env
        ADD A,L        ;stp_smp_sl_env
        LD L,A
        ADD HL,DE
        LD (frq_E),HL
Esl_stp LD A,0
        DEC A
        JP M,sav_SP1
        JR NZ,E_n0
Esl_sds LD HL,0
        ADD HL,DE
        LD (Esl_frq+1),HL
Esl_sts LD A,0
E_n0    LD (Esl_stp+1),A

;---- out_to_processor ----

sav_SP1 LD SP,0
out_
       IFN msx
        LD DE,#A0A1
        LD HL,frq_A
       DUP 6
        LD C,D
        OUT (C),L
        LD C,E
        OUTI 
       EDUP 
        LD C,D
        OUT (C),L
        LD A,HX        ;noise
        LD (N_add+3),A
        ADD A,(HL) ;;4
        OUT (#A1),A
        INC L
        OUT (C),L
       LD A,LX        ;mix TODO (HL)
       AND %00111111
       OR %10000000 ;portA=input, portB=output
        OUT (#A1),A
        INC L
        OUT (C),L
        LD C,E
        OUTI 
       DUP 4
        LD C,D
        OUT (C),L
        LD C,E
        OUTI 
       EDUP 
        LD A,(HL) ;;4
        OR A
        JR Z,int_qty
        LD C,D
        OUT (C),L
        OUT (#A1),A
        LD (HL),0 ;;4
       ELSE ;zx
        LD DE,#FFBF
        LD BC,-3
        LD HL,frq_A
       DUP 6
        OUT (C),L
        LD B,E
        OUTI 
        LD B,D
       EDUP 
        OUT (C),L
        LD A,HX        ;noise
        LD (N_add+3),A
        ADD A,(HL) ;;4
        LD B,E
        OUT (C),A
        INC L
        LD B,D
        OUT (C),L
       LD A,LX        ;mix TODO (HL)
        LD B,E
        OUT (C),A
        INC L
       DUP 5
        LD B,D
        OUT (C),L
        LD B,E
        OUTI 
       EDUP 
        LD A,(HL) ;;4
        OR A
        JR Z,int_qty
        LD B,D
        OUT (C),L
        LD B,E
        OUT (C),A
        LD (HL),0 ;;4
       ENDIF 

;--- calc_next_positon_channels ---
int_qty LD A,3
        DEC A
        LD (int_qty+1),A
        JR Z,notaC;if tmp=1,CALL notaB first!!!
        DEC A
        RET NZ

;--- nota_B ---
       LD HL,B_qty
       DEC (HL)
        LD DE,#618
        LD H,E
      ;LD L,1 ;E
        LD B,E
        EXX 
        JR NZ,BqtyQ
      ;LD (bvol+2),A
Bch_adr LD DE,0
        LD H,'compile
        CALL Bn_clc1
        LD (Bch_adr+1),DE
Bi_qty  LD A,0,(B_qty),A
BqtyQ  LD A,1
       DJNZ $+4
       LD A,34
       LD (B_gli),A
        EXX 
        LD A,B,(B_ins2),A
        LD A,H,(B_ins0),A
       ;LD A,L,(B_ins1),A
        LD A,E,(B_ins3),A
        RET 

;--- nota_C ---
notaC
       INC A;LD A,1
        LD (play),A
       LD HL,C_qty
       DEC (HL)
        RET NZ
Cch_adr LD DE,0
        LD H,'compile
        CALL Cn_clc1
        LD (Cch_adr+1),DE
Ci_qty  LD A,0,(C_qty),A
       DEC B
       RET NZ
        LD H,B,L,B
        LD (Csl_dsp+1),HL
        RET 

        IFN ?not-2
        MACRO not
       IFN "\0 "-"C "
\0ni_v0 LD A,47
\0nivolU LD (\0vb_cpl),A
        EXX 
        LD H,D
        EXX 
        RET 
\0ni_not LD (\0si_not+1),A
        XOR A
       LD B,1
       jp \0nivolU
       ENDIF 
\0ni_vol JR Z,\0ni_v0
        DUP 4
        ADD A,A
        EDUP 
        LD (\0gi_vol+1),A
        jp \0n_clc2
\0ni_vqe JR Z,\0ni_v1
        DEC A
        JR NZ,\0ni_e0
        LD A,(DE)
        INC DE
        LD (\0i_qty+1),A
        jp \0n_clc2

\0ni_e0 LD (Ei_form+1),A
        LD A,(DE)
        INC DE
        LD (Ei_frq+2),A
        LD A,(DE)
        INC DE
        LD (Ei_frq+1),A
        LD A,16
\0ni_v1 LD (\0mi_vol+1),A
       IFN "\0 "-"C "
        EXX 
        LD B,D
        EXX 
       ENDIF 
       jp \0n_clc2

\0ni_s_o ADD A,A
        ADD A,tba_orn
        LD L,A
        LD C,(HL)
        INC L
        LD B,(HL)
        LD (\0oi_adr+1),BC
        XOR A
\0ni_sm0 LD (\0mi_vol+1),A
       IFN "\0 "-"C "
        EXX 
        LD B,D
        EXX 
       ELSE 
        XOR A
        LD (\0o_dsp+1),A
       ENDIF 
        LD A,(DE)
        INC DE
\0nism0U ADD A,tba_smp
        LD L,A
        LD C,(HL)
        INC L
        LD B,(HL)
        LD (\0si_adr+1),BC
\0n_clc1 LD BC,#1020
\0n_clc2 LD A,(DE)
        INC DE
        ADD A,B
        JR C,\0ni_s_o
        ADD A,C
        JR C,\0ni_smp
        ADD A,B
        JR C,\0ni_vol
        ADD A,B
        JR C,\0ni_vqe
        ADD A,96
        JR C,\0ni_not
        ADD A,B
        JR C,\0ni_orn
       IF0 "\0 "-"B "
        ADD A,C
        JR C,\0ni_noi
        ADD A,B
       ELSE 
        ADD A,48
       ENDIF 
        JR C,\0ni_vse
        RLA 
        LD HL,-256&\0_eff+.(\0_eff+30)
        ADD A,L
        LD L,A
        LD A,(HL)
        INC L
        LD H,(HL)
        LD L,A
        PUSH HL
       IF0 "\0 "-"C "
       IFN port3
       LD A,(Cs_note+1)
       LD (CnsTnxt+1),A
       ENDIF 
       ENDIF 
        jp \0n_clc2
       IF0 "\0 "-"B "
\0ni_noi LD (Ni_frq+1),A;global_noise
        jp \0n_clc2
       ENDIF 
\0ni_vse JR Z,\0ni_sm0
        LD (Ei_form+1),A
        LD A,(DE)
        INC DE
        LD (Ei_frq+2),A
        LD A,(DE)
        INC DE
        LD (Ei_frq+1),A
        LD A,16
        jp \0ni_sm0

\0ni_smp RET Z
        ADD A,A
        jp \0nism0U

\0ni_orn ADD A,A
        ADD A,tba_orn
        LD L,A
        LD C,(HL)
        INC L
        LD B,(HL)
        LD (\0oi_adr+1),BC
       IFN "\0 "-"C "
        EXX 
        LD B,D
        EXX 
       ELSE 
        XOR A
        LD (Co_dsp+1),A
       ENDIF 
        jp \0n_clc1
        ENDM 
        ENDIF 
not A
not B
Cgi_vol=Cg_vol
Cmi_vol=Cm_vol
Coi_adr=Co_adr
Csi_adr=Cs_adr
Cni_v0
       IFN vib6
        LD (Cvb_stp+1),A
       ENDIF 
        DEC A
        LD (Cvb_lok+1),A
        RET 
not C
Cni_not LD (Cs_note+1),A
        XOR A
        LD H,A,L,A
        LD (Cs_dsp+1),A
        LD (Co_dsp+1),A
        LD (Csl_stp+1),A
        LD (Cvb_lok+1),A
       IFN vib6
        LD (Cvb_stp+1),A
       ENDIF 
       IFN smpfix
        LD (Cs_Nsl+1),A
        LD (Cs_Esl+1),A
        LD (Cs_dtn+1),HL
       LD A,16,(Cs_Vsl+1),A
       ENDIF 
       LD B,1
        RET 

;---- special_effects_COM.xxxx ----
Aef_dSm LD A,6,(A_ins5),A
        l Asi_dsp+1
Aef_dOr LD A,6,(A_ins6),A
        l Aoi_dsp+1
Bef_dSm LD A,6,(B_ins5),A
        l Bsi_dsp+1
Bef_dOr LD A,6,(B_ins6),A
        l Boi_dsp+1
Cef_dSm l Cs_dsp+1
Cef_dOr l Co_dsp+1

Cpi_stp=Csl_stp
Cpi_tfr=Csl_tfr
        IFN ?_slT-2
        MACRO _slT
\0ef_slT LD A,(DE)
        INC DE
        LD (\0pi_stp+1),A
       IF0 "\0 "-"C "
        LD (\0sl_sts+1),A
       ENDIF 
        LD A,(DE),L,A
        INC DE
        LD A,(DE),H,A
        INC DE
        LD (\0pi_tfr+1),HL
       IFN port3
        LD A,\0sl_sts-\0sl_plk
        LD (\0pi_lok+1),A;port_off
       ENDIF 
        ENDM 
        ENDIF 
_slT A
        EXX 
        LD E,D
        EXX 
        RET 
_slT B
        EXX 
        LD E,D
        EXX 
        RET 
_slT C
       IFN vib6
        XOR A
        LD (Cvb_stp+1),A
       ENDIF 
        RET 

       IFN port3
        IFN ?_nsT-2
        MACRO _nsT
\0ef_nsT LD A,(DE)
        INC DE
        LD (\0pi_stp+1),A
       IF0 "\0 "-"C "
        LD (\0sl_sts+1),A
       ENDIF 
        INC DE
        INC DE
        LD A,(DE),L,A
        INC DE
        LD A,(DE),H,A
        INC DE
        LD (\0pi_tfr+1),HL
        XOR A
       LD B,A
        ENDM 
        ENDIF 
_nsT A
        LD (Api_lok+1),A;port_on
      ; LD HL,Asi_not+1
      ; LD A,(HL)
       LD A,(Asi_not+1)
        LD (Api_not+1),A
      ;LD A,(As_note+1)
      ; LD (HL),A
        EXX 
        LD E,D
        EXX 
        RET 
_nsT B
        LD (Bpi_lok+1),A
      ; LD HL,Bsi_not+1
      ; LD A,(HL)
       LD A,(Bsi_not+1)
        LD (Bpi_not+1),A
      ;LD A,(Bs_note+1)
      ; LD (HL),A
        EXX 
        LD E,D
        EXX 
        RET 
_nsT C
       IFN vib6
        LD (Cvb_stp+1),A
       ENDIF 
        LD (Csl_plk-1),A
        LD HL,Cs_note+1
        LD A,(HL)
        LD (Csl_not+1),A
CnsTnxt LD (HL),0
        RET 
      ENDIF 

eff_tmp l temp+1
       IFN frq
esld
MAKEfrq
;Roshin
        INC HL
        EX DE,HL
        ADD HL,BC
        LD A,(DE)
       LD (COPF3),A
        INC DE
        LD A,(DE)
        ADD A,C
        LD C,A
        ADC A,B
        SUB C
        LD B,A
        PUSH BC
        LD DE,tab_frq
        PUSH DE
        LD B,12
COPF1   PUSH BC
        LD C,(HL)
        INC HL
        PUSH HL
        LD B,(HL)
        PUSH DE
        EX DE,HL
        LD DE,23
        LD HX,8
COPF2   SRL B
        RR C
;COPF3   NOP ;AND A
        LD A,C
COPF3   ADC A,D ;=ADC 0
        LD (HL),A
        INC HL
        LD A,B
        ADC A,D
        LD (HL),A
        ADD HL,DE
        DEC HX
        JR NZ,COPF2
        POP DE
        INC DE,DE
        POP HL
        INC HL
        POP BC
        DJNZ COPF1

        POP HL
        POP DE

        ;LD A,E
        ;CP TCOLD_1
        ;JR NZ,CORR_1
        ;LD A,#FD,(FrTab+#2E),A
CORR_1  LD A,(DE)
        AND A
        RET Z
        INC DE
        RRA 
       PUSH HL
        PUSH AF
        ADD A,A
        LD C,A
        ADD HL,BC
        POP AF
        INC (HL)
        JR NC,$+4
        DEC (HL),(HL)
       POP HL
       ;AND A
       ;SBC HL,BC
        JR CORR_1

NT_DATA
        DB T_NEW_0-T_
       ADC A,D
        DB TCNEW_0-T_
       ;DB T_OLD_0-T_
       ;AND A
       ;DB TCOLD_0-T_

        DB T_NEW_1-T_
        AND A
        DB TCNEW_1-T_
       ;DB T_OLD_1-T_
       ;AND A
       ;DB TCOLD_1-T_

        DB T_NEW_2-T_
       ADC A,D
        DB TCNEW_2-T_
       ;DB T_OLD_2-T_
       ;NOP
       ;DB TCOLD_2-T_

        DB T_NEW_3-T_
       ADC A,D
        DB TCNEW_3-T_
       ;DB T_OLD_3-T_
       ;NOP
       ;DB TCOLD_3-T_
T_
;COLD_0 DB #00+1,#04+1,#08+1,#0A+1,#0C+1,#0E+1,#12+1,#14+1
;       DB #18+1,#24+1,#3C+1,0
TCNEW_1
TCOLD_1 DB #5C+1,0
;COLD_2 DB #30+1,#36+1,#4C+1,#52+1,#5E+1,#70+1,#82,#8C,#9C
;       DB #9E,#A0,#A6,#A8,#AA,#AC,#AE,#AE,0
TCNEW_3 DB #56+1
TCOLD_3 DB #1E+1,#22+1,#24+1,#28+1,#2C+1,#2E+1,#32+1,#BE+1,0
TCNEW_0 DB #1C+1,#20+1,#22+1,#26+1,#2A+1,#2C+1,#30+1,#54+1
        DB #BC+1,#BE+1,0
TCNEW_2 DB #1A+1,#20+1,#24+1,#28+1,#2A+1,#3A+1,#4C+1,#5E+1
        DB #BA+1,#BC+1,#BE+1,0

;first 12 values of tone tables

T_NEW_1
T_OLD_1 DW #0EF8*2,#0E10*2,#0D60*2,#0C80*2,#0BD8*2,#0B28*2
        DW #0A88*2,#09F0*2,#0960*2,#08E0*2,#0858*2,#07E0*2
;_OLD_2 DW #0D3E*2,#0C80*2,#0BCC*2,#0B22*2,#0A82*2,#09EC*2
;       DW #095C*2,#08D6*2,#0858*2,#07E0*2,#076E*2,#0704*2
T_NEW_3
T_OLD_3 DW #0CDA*2,#0C22*2,#0B73*2,#0ACF*2,#0A33*2,#09A1*2
        DW #0917*2,#0894*2,#0819*2,#07A4*2,#0737*2,#06CF*2
T_OLD_0=T_OLD_3+2
T_NEW_0=T_OLD_3+2
        DW #066D*2
T_NEW_2 DW #0D10*2,#0C55*2,#0BA4*2,#0AFC*2,#0A5F*2,#09CA*2
        DW #093D*2,#08B8*2,#083B*2,#07C5*2,#0755*2,#06EC*2
       ENDIF 

DISPLAY $-compile
       IFN vib6
Cvb_ifr=Cvb_frq
Cvb_ist=Cvb_sts
       ENDIF 
       IFN port3
Cpi_lok=Csl_plk-2
       ENDIF 
       IF0 ?StAnDaLoNe
module
        INCBIN "*.m"
       ENDIF 
       IF0 frq
plyend
        ORG tab_frq
IF0 .{module+99}-0
       ;INCBIN "tb_PT
        DD 220C730BCF0A330AA109170994081908A4073707CF066D06
        DD 1106BA0567051A05D0048B044A040C04D2039B0367033703
        DD 0803DD02B4028D026802460225020602E901CE01B4019B01
        DD 84016E015A0146013401230112010301F500E700DA00CE00
        DD C200B700AD00A3009A009100890082007A0073006D006700
        DD 61005C00560052004D004900450041003D003A0036003300
        DD 31002E002B00290027002400220020001F001D001B001A00
        DD 180017001600140013001200110010000F000E000D000C00
ENDIF 
IF0 .{module+99}-1
       ;INCBIN "tb_ST
        DD F80E100E600D800CD80B280B880AF0096009E0085808E007
        DD 7C070807B0064006EC0594054405F804B00470042C04FD03
        DD BE03840358032003F602CA02A2027C02580238021602F801
        DD DF01C201AC0190017B01650151013E012C011C010A01FC00
        DD EF00E100D600C800BD00B200A8009F0096008E0085007E00
        DD 770070006B0064005E00590054004F004B00470042003F00
        DD 3B003800350032002F002C002A0027002500230021001F00
        DD 1D001C001A00190017001600150013001200110010000F00
ENDIF 
IF0 .{module+99}-2
       ;INCBIN "tb_ASM
        DD 100D550CA40BFC0A5F0ACA093D09B8083B08C5075507EC06
        DD 88062A06D2057E052F05E5049E045C041D04E203AB037603
        DD 44031503E902BF02980272024F022E020F02F101D501BB01
        DD A2018B01740160014C013901280117010701F900EB00DD00
        DD D100C500BA00B000A6009D0094008C0084007C0075006F00
        DD 690063005D00580053004E004A00460042003E003B003700
        DD 340031002F002C00290027002500230021001F001D001C00
        DD 1A00190017001600150014001200110010000F000E000D00
ENDIF 
IF0 .{module+99}-3
       ;INCBIN "tb_REAL
        DD DA0C220C730BCF0A330AA109170994081908A4073707CF06
        DD 6D061106BA0567051A05D0048B044A040C04D2039B036703
        DD 37030803DD02B4028D026802460225020602E901CE01B401
        DD 9B0184016E015A0146013401230112010301F500E700DA00
        DD CE00C200B700AD00A3009A009100890082007A0073006D00
        DD 670061005C00560052004D004900450041003D003A003600
        DD 330031002E002B00290027002400220020001F001D001B00
        DD 1A00180017001600140013001200110010000F000E000D00
ENDIF 
        ORG plyend
       ENDIF 
       IF0 ?StAnDaLoNe
        ORG #7000
        CALL compile
play_l  EI 
        HALT 
        CALL play
        LD A,#7F
        IN A,(-2)
        RRA 
        JR C,play_l
       LD L,#E
       XOR A
        shut
        RET 
       ENDIF 0858*2,#07E0*2
;_OLD_2 DW #0D3E*2,#0C80*2,#0BCC*2,#0B22*2,#0A82*2,#09EC*2
;       DW #095C*2,#08D6*2,#0858*2,#07E0*2,#076E*2,#0704*2
T_NEW_3
T_OLD_3 DW #0CDA*2,#0C22*2,#0B73*2,#0ACF*2,#0A33*2,#09A1*2
        DW #0917*2,#0894*2,#0819*2,#07A