PROTRACKER372 EMPTYTRK H

From MSX MUSIC WIKI
Revision as of 22:13, 14 February 2020 by Kumokosi (talk | contribs) (Created page with "mic&rc C��ZY�Z-╚;player mic,rc,hrip SLOW ;todo frq нов.ноты 3xxx считать заранее,ч/з п/п twice=1;перемещаемый модуль и м...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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 и т.д.

  1. 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