;z80
;zx-spectrum
;assembler

        MAIN    "6ECCUL3",11


;-------   IM 2

_IM2    DI 
        LD      HL,#BE00
        LD      DE,#BE01
        LD      B,E
        LD      C,L             ;BC=#100
        LD      A,H
        LD      I,A
        IM      2
        INC     A
        LD      (HL),A
        CALL    _LDIR
        LD      L,H             ;HL=#BFBF
        LD      (HL),#C3
        INC     L
        LD      (HL),INTA
        INC     L
        LD      (HL),'INTA
        EI 
        RET 


;-------      
INST_FONT
        LD      A,STR_7
        CALL    PAGE

        LD      HL,FONT
        LD      DE,#5000
        CALL    DEHRUST
        LD      HL,#5000
        LD      DE,#4000
        LD      BC,#4800
INST_F  LD      A,(HL)
        AND     #F0
        LD      (DE),A
        LD      A,(HL)
        AND     #0F
        LD      (BC),A
        INC     L
        INC     E
        INC     C
        JP      NZ,INST_F
        INC     H
        INC     D
        INC     B
        BIT     3,D
        JP      Z,INST_F

        XOR     A
        JP      PAGE

;-------   
;     (1,3,4,6)   85 
;  24*8=192 
;    #8000
INST_TEXT
        XOR     A
        CALL    PAGE
        LD      HL,#8000
        LD      D,H
        LD      E,L
        CALL    DEHRUST
        LD      DE,0-#8000
        ADD     HL,DE
        LD      (LEN_TXT+1),HL  ;  

        LD      HL,ADR_LINE     ; 
        LD      DE,COL_LINE     ; 
        EXX 
        XOR     A
        LD      (N_PAGE),A
        LD      H,A
        LD      L,A
        LD      (ALL_LINE+1),HL
        DEC     H
        DEC     L
        LD      (FIRST_3),HL
        LD      (FIRST_4),HL
        LD      (FIRST_6),HL
        LD      H,#C0           ;   
        LD      L,A
        LD      (ADRT_CUR+1),HL
        LD      A,1
        CALL    PAGE

        LD      HL,#8000        ;  
LEN_TXT LD      BC,0            ; 
        ADD     HL,BC
        LD      A,L
        LD      (L_END+1),A
        LD      A,H
        LD      (H_END+1),A
        SBC     HL,BC

INST_T1 LD      DE,#5000
        LD      B,48            ; 
        LD      A,(HL)
        CP      ","             ;   ?
        JR      NZ,NO_COL       ;
        INC     HL
        LD      A,(HL)          ; 
        SUB     "0"
        ADD     A,A
        ADD     A,A
        ADD     A,A
        ADD     A,A
        LD      C,A
        INC     HL
        LD      A,(HL)          ; 
        SUB     "0"
        OR      C
        LD      (CUR_COL+1),A
        INC     HL
NO_COL  LD      A,(HL)
        INC     HL
        CP      #0D
        JR      Z,END_LINE
KOD_0D  LD      (DE),A
        INC     DE
        DEC     B
        JR      NO_COL
END_LINE
        LD      A,(HL)
        CP      #0A
        LD      A,#0D
        JR      NZ,KOD_0D
        INC     HL

        LD      A,B
        OR      A
        JR      Z,LINE_OK
        CP      48
        JR      NZ,L_ESTX
        EXX 
        LD      BC,LINE_SP      ;   
        LD      (HL),C
        INC     HL
        LD      (HL),B          ;
        INC     HL
        LD      A,(CUR_COL+1)
        LD      (DE),A          ;  
        INC     DE
        EXX 
        PUSH    HL
        JP      INST_T7

L_ESTX  LD      A," "
LIN_FIL LD      (DE),A
        INC     DE
        DJNZ    LIN_FIL
LINE_OK                         ;  
        PUSH    HL
        EXX 
ADRT_CUR LD     BC,#C000        ;    
                                ;  
LINE_O1 LD      (HL),C          ;  
        INC     HL
        LD      (HL),B
        INC     HL
        EX      DE,HL
CUR_COL LD      (HL),0          ;  
        EX      DE,HL
        INC     DE
        PUSH    HL
        LD      HL,84
        ADD     HL,BC
        PUSH    HL
        POP     IX              ;   -84
        POP     HL
        EXX 

        LD      BC,#5000        ;    
        LD      LY,48/2
INST_T5 LD      D,#40
        LD      H,#48

        LD      A,(BC)
        INC     C
        LD      E,A
        LD      A,(BC)
        INC     C
        LD      L,A

        LD      A,(DE)
        INC     D
        OR      (HL)
        INC     H
        LD      (IX-84),A
        LD      A,(DE)
        INC     D
        OR      (HL)
        INC     H
        LD      (IX-60),A
        LD      A,(DE)
        INC     D
        OR      (HL)
        INC     H
        LD      (IX-36),A
        LD      A,(DE)
        INC     D
        OR      (HL)
        INC     H
        LD      (IX-12),A
        LD      A,(DE)
        INC     D
        OR      (HL)
        INC     H
        LD      (IX+12),A
        LD      A,(DE)
        INC     D
        OR      (HL)
        INC     H
        LD      (IX+36),A
        LD      A,(DE)
        INC     D
        OR      (HL)
        INC     H
        LD      (IX+60),A
        LD      A,(DE)
        OR      (HL)
        LD      (IX+84),A

        INC     IX
        DEC     LY
        JP      NZ,INST_T5

        LD      HL,(ADRT_CUR+1)
        LD      BC,192+192
        ADD     HL,BC
        BIT     6,H
        JR      NZ,INST_T6      ;Ѩ ٨   
        LD      HL,N_PAGE
        INC     (HL)
        LD      E,(HL)
        INC     HL              ;HL=PAGE_T
        LD      D,0
        ADD     HL,DE
        LD      A,(HL)          ;  
        CALL    PAGE

        EX      DE,HL
        ADD     HL,HL
        LD      DE,FIRST_3-2
        ADD     HL,DE           ;HL=FIRST_3, 4  6
        LD      DE,(ALL_LINE)
        LD      (HL),E
        INC     HL
        LD      (HL),D          ;    
        INC     HL
        LD      HL,#C000+192    ;   

INST_T6 LD      BC,0-192
        ADD     HL,BC
        LD      (ADRT_CUR+1),HL
INST_T7 LD      HL,(ALL_LINE)
        INC     HL
        LD      (ALL_LINE),HL
        POP     HL

H_END   LD      A,0
        CP      H
        JP      NZ,INST_T1
L_END   LD      A,0
        CP      L
        JP      NZ,INST_T1

        LD      HL,(ALL_LINE)
INST_T8 LD      DE,24           ;-   
        OR      A
        SBC     HL,DE
        DEC     HL
        LD      (DW_STR),HL     ; ,  
        XOR     A
        JP      PAGE


;-------

N_PAGE  DEFB    0       ;   , 0-3
PAGE_T  DEFB    1,3,4,6 ;  
FIRST_3 DEFW    0       ;   3 
FIRST_4 DEFW    0       ;   4 
FIRST_6 DEFW    0       ;   6 

ALL_LINE DEFW   0       ;-   
DW_STR  DEFW    0       ;   
CUR_STR DEFW    0       ;   

CUR_LINE DEFB   0       ;   
SPEED   DEFB    0       ;  

ADR_OUT DEFW    #C004+24;  
KOL_STR DEFB    24      ;-   

CUR_TXT DEFB    0       ; 
OLD_TXT DEFB    #FF     ;  
CUR_MUS DEFB    5       ; 
OLD_MUS DEFB    5       ;  

TXT_TS  DEFW    #0B05   ; /  
ALL_TXT DEFB    17      ; - 
        DEFB    #12,#19,#13,8,#10,#17,#18,#13,#10,#14,#12,#0D
        DEFB    #16,#18,#1D,8,#18
;         

MUS_TS  DEFW    #0408   ; /  
ALL_MUS DEFB    15      ; - 
        DEFB    8,8,7,5,10,9,4,7,9,7,7,8,6,9,5
;         

ERROR   DEFB    0       ;  (  )

;       
;  
T_SPEED DEFB    1,1,2,2,3,3,4,5,6,7,9,10,11,13,14,16

LINE_SP DEFS    192,0


;-------     
INST_PRNT
        LD      HL,PRN_SCR
        LD      DE,3
INST_P0 LD      C,192+8
INST_P1 LD      (HL),#3B        ;DEC SP
        INC     HL
        LD      (HL),#3B        ;DEC SP
        INC     HL
        LD      (HL),#E1        ;POP HL
        INC     HL
        LD      (HL),#F9        ;LD SP,HL
        INC     HL
        LD      B,12/2
INST_P2 LD      (HL),#21        ;LD HL,...
        ADD     HL,DE
        LD      (HL),#E5        ;PUSH HL
        INC     HL
        LD      (HL),#21        ;LD HL,...
        ADD     HL,DE
        LD      (HL),#E5        ;PUSH HL
        INC     HL
        DJNZ    INST_P2
        DEC     C
        JP      NZ,INST_P1

        LD      (HL),#C3
        INC     HL
        LD      (HL),PRN_SCR
        INC     HL
        LD      (HL),'PRN_SCR
        RET 

;-------
MENU_OUT LD     A,STR_7
        CALL    PAGE
        LD      HL,FON
        LD      DE,#8000
        CALL    DEHRUST         ; 

        LD      DE,#5804        ;  
        EXX 
        LD      HL,#8000
        LD      DE,#4004

        LD      HX,24
FON1_1  LD      LX,24
FON1_2  LD      C,D
        LD      B,8
FON1_3  LD      A,(HL)
        LD      (DE),A
        INC     HL
        INC     D
        DJNZ    FON1_3
        LD      D,C
        INC     E
        DEC     LX
        JR      NZ,FON1_2
        LD      A,E
        ADD     A,32-24
        LD      E,A
        JR      NC,$+2+4
        LD      A,D
        ADD     A,8
        LD      D,A
        PUSH    HL
        EXX 
        POP     HL
        LD      BC,24
        CALL    _LDIR
        EX      DE,HL
        LD      BC,32-24
        ADD     HL,BC
        EX      DE,HL
        PUSH    HL
        EXX 
        POP     HL
        DEC     HX
        JR      NZ,FON1_1
        XOR     A
        JP      PAGE

;-------    
INST_ART
        LD      A,STR_7
        CALL    PAGE
        LD      HL,NAME_TXT
        LD      DE,#8100        ;  
        PUSH    DE
        CALL    DEHRUST         ;  , 1024 

        LD      HL,FONT2
        LD      DE,#8500
        CALL    DEHRUST         ; 8x8, 768 

        LD      DE,#8800        ;   
        EXX                     ;  (MAX=21, #1A40)

        POP     HL              ;  
        LD      A,(ALL_TXT)
        LD      C,A             ;- 
I_AR1   LD      DE,#8000        ;  
        CALL    I_ART0          ;  
        LD      E,#01           ;-/-  
        CALL    I_ART0          ;  

        PUSH    HL
        LD      HL,#8000        ; 
        LD      B,40            ;  
I_AR2   LD      A,(HL)
        INC     HL
        EXX 
        SUB     #20
        ADD     A,A
        LD      L,A
        LD      H,0
        ADD     HL,HL
        ADD     HL,HL
        LD      BC,#8500
        ADD     HL,BC           ;HL= 
       DUP      8
        LDI                     ;
       EDUP 
        EXX 
        DJNZ    I_AR2
        POP     HL
        DEC     C
        JR      NZ,I_AR1        ;  

        LD      HL,FONT3
        LD      DE,#8500
        CALL    DEHRUST         ; 8x8, 768  

        LD      DE,#A240        ;   
        EXX                     ;  (MAX=21, #1A40)

        LD      HL,#8100        ;  
        LD      A,(ALL_TXT)
        LD      C,A             ;- 
I_AR3   LD      DE,#8000        ;  
        CALL    I_ART0          ;  
        LD      E,#01           ;-/-  
        CALL    I_ART0          ;  
        PUSH    HL

        LD      HL,#8000+40-2
        LD      DE,#8040
        LD      B,20
I_AR4   LD      A,(HL)          ;  
        LD      (DE),A          ; 
        INC     HL
        INC     DE
        LD      A,(HL)
        LD      (DE),A
        INC     DE
        DEC     HL
        DEC     HL
        DEC     HL
        DJNZ    I_AR4

        LD      HL,#8040        ; 
        LD      B,40            ;  
I_AR5   LD      A,(HL)
        INC     HL
        EXX 
        SUB     #20
        ADD     A,A
        LD      L,A
        LD      H,0
        ADD     HL,HL
        ADD     HL,HL
        LD      BC,#8500
        ADD     HL,BC           ;HL= 
       DUP      8
        LDI                     ;
       EDUP 
        EXX 
        DJNZ    I_AR5
        POP     HL
        DEC     C
        JR      NZ,I_AR3        ;  
        XOR     A
        JP      PAGE

I_ART0  LD      B,20            ;MAX.  
I_ART1  LD      A,(HL)
        INC     HL
        CP      #0D
        JR      Z,I_ART2
        LD      (DE),A          ;  
        INC     DE
        INC     DE
        DJNZ    I_ART1
I_ART2  INC     HL
        LD      A,B
        OR      A
        RET     Z
        LD      A,#20
        LD      (DE),A          ; 
        INC     DE
        INC     DE
        DJNZ    $-3
        RET 


;-------  
PRN_ART
        LD      A,(CUR_TXT)     ; 
        LD      HL,#8800-#140
        LD      DE,#140
        INC     A
        LD      B,A
        ADD     HL,DE
        DJNZ    $-1             ;  . 
PRN_A0  LD      DE,0            ;  
        ADD     HL,DE
        EXX 
        LD      B,A
        LD      HL,#A240-#140
        LD      DE,#140
        LD      B,A
        ADD     HL,DE
        DJNZ    $-1             ;  . 
PRN_A1  LD      DE,0
        ADD     HL,DE

        LD      DE,#4024+24-3

        LD      LX,20
PRN_A2  LD      C,D
       DUP      7
        LD      A,(HL)
        LD      (DE),A
        INC     HL
        INC     D
       EDUP 
        LD      A,(HL)
        LD      (DE),A
        INC     HL
        LD      D,C
        INC     E
       DUP      7
        LD      A,(HL)
        LD      (DE),A
        INC     HL
        INC     D
       EDUP 
        LD      A,(HL)
        LD      (DE),A
        INC     HL
        LD      D,C
        DEC     E
        LD      A,E
        ADD     A,#20
        LD      E,A
        JR      NC,$+2+4
        LD      A,D
        ADD     A,8
        LD      D,A
        DEC     LX
        JR      NZ,PRN_A2       ;  .
        EXX 

        LD      DE,#50A4+1

        LD      LX,20
PRN_A3  LD      C,D
       DUP      7
        LD      A,(HL)
        LD      (DE),A
        INC     HL
        INC     D
       EDUP 
        LD      A,(HL)
        LD      (DE),A
        INC     HL
        LD      D,C
        LD      A,E
        ADD     A,#20
        LD      E,A
       DUP      7
        LD      A,(HL)
        LD      (DE),A
        INC     HL
        INC     D
       EDUP 
        LD      A,(HL)
        LD      (DE),A
        INC     HL
        LD      D,C
        LD      A,E
        SUB     #20-1
        LD      E,A
        DEC     LX
        JR      NZ,PRN_A3       ; ..
        RET 

;-------  
MENU_KEY
        HALT 
        CALL    PRN_ANIM        ;  2x2
        CALL    OPROS_K         ;
        LD      A,C
        CPL 
        AND     3               ;  /?
        JR      Z,MENU_K1       ;
        RRA 
        JR      NC,M_LEFT
        RRA 
        JR      NC,M_RIGHT
MENU_K1 LD      A,C
        CPL 
        AND     %00001100       ;  /?
        JR      Z,MENU_K2       ;
        BIT     2,A
        JR      Z,M_RIGHT       ;   
        BIT     3,A
        JR      Z,M_LEFT        ;   
MENU_K2 BIT     4,C
        JR      Z,MENU_KEY
        RET                     ;  

M_LEFT  LD      A,(CUR_TXT)     ;   
        OR      A
        JR      Z,MENU_KEY      ;  
        LD      B,20
M_LEFT1 PUSH    BC
        LD      HL,(PRN_A0+1)
        LD      DE,0-16
        ADD     HL,DE
        LD      (PRN_A0+1),HL   ; 
        LD      (PRN_A1+1),HL
        HALT 
        CALL    PRN_ART         ;  .
        CALL    PRN_ANIM
        POP     BC
        DJNZ    M_LEFT1         ; 
        LD      HL,CUR_TXT
        DEC     (HL)
M_LEFT2 LD      H,B
        LD      L,B
        LD      (PRN_A0+1),HL   ; 
        LD      (PRN_A1+1),HL
        JR      MENU_KEY+1

M_RIGHT LD      A,(ALL_TXT)     ; - 
        DEC     A
        LD      C,A
        LD      A,(CUR_TXT)     ;   
        CP      C
        JR      NC,MENU_KEY     ;  
        LD      B,20
M_RIGHT1 PUSH    BC
        LD      HL,(PRN_A0+1)
        LD      DE,16
        ADD     HL,DE
        LD      (PRN_A0+1),HL   ; 
        LD      (PRN_A1+1),HL
        HALT 
        CALL    PRN_ART         ;  .
        CALL    PRN_ANIM
        POP     BC
        DJNZ    M_RIGHT1        ; 
        LD      HL,CUR_TXT
        INC     (HL)
        JR      M_LEFT2

;------- 
PRN_ANIM
        LD      A,0             ;
        INC     A
        AND     3
        LD      (PRN_ANIM+1),A
        RET     NZ              ;
FAZA    LD      A,0             ; 
        INC     A
        CP      8               ; -  ?
        JR      C,$+2+1         ;
        XOR     A
        LD      (FAZA+1),A
        LD      HL,ANIMA
        JR      Z,ANIM_OK
        LD      DE,32
        LD      B,A
        ADD     HL,DE
        DJNZ    $-1
ANIM_OK LD      DE,#50B9

        LD      B,16
ANIM_1  LD      A,(HL)
        LD      (DE),A
        INC     L
        INC     E
        LD      A,(HL)
        LD      (DE),A
        INC     L
        DEC     E
        INC     D
        LD      A,D
        AND     7
        JR      NZ,ANIM_2
        LD      A,E
        ADD     A,#20
        LD      E,A
        JR      C,ANIM_2
        LD      A,D
        SUB     8
        LD      D,A
ANIM_2  DJNZ    ANIM_1
        RET 


;------- :   
LOAD
        LD      A,(CUR_TXT)     ;  
        LD      B,A
        LD      A,(OLD_TXT)     ; 
        CP      B
        RET     Z               ;  
        LD      DE,0            ;   
        LD      HL,ALL_TXT+1
        LD      A,B
        OR      A
        JR      Z,TXT_FIND
LOAD_1  LD      A,(HL)
        INC     HL
        ADD     A,E
        LD      E,A
        JR      NC,$+2+1
        INC     D
        DJNZ    LOAD_1
TXT_FIND                        ;DE=
        LD      B,(HL)          ;  
        LD      HL,(TXT_TS)     ; / 

LOAD_2  LD      A,D
        OR      E
        JR      Z,LOAD_3
        INC     L
        BIT     4,L
        JR      Z,$+2+3
        LD      L,0
        INC     H
        DEC     DE
        JR      LOAD_2
LOAD_3  EX      DE,HL           ;/ 
        LD      C,5
        PUSH    DE,BC
        DI 
        LD      A,#3F
        LD      I,A
        IM      1
        XOR     A
        CALL    PAGE
        CALL    MUSIC+8         ; 
        LD      HL,10072
        LD      IY,23610
        EXX 
        POP     BC,DE
        XOR     A
        LD      (ERROR),A       ;  
        LD      HL,#8000
        PUSH    HL
        CALL    #3D13           ;
        DI 
        LD      A,#BE
        LD      I,A
        IM      2
        EI                      ;  
        POP     HL
        LD      A,(HL)
        CP      "h"
        JR      NZ,LOAD_4
        INC     HL
        LD      A,(HL)
        CP      "r"
        JR      NZ,LOAD_4
        RET 
LOAD_4  LD      A,#FF
        LD      (ERROR),A
        RET 

;------- 
HELP_
        CALL    SCR_0
        HALT 
        CALL    COPY            ; 0  1
        CALL    SCR_1
        HALT 
        CALL    INST_FONT
        LD      HL,#4000
        LD      DE,#8000
        LD      BC,#1000
        CALL    _LDIR           ; 
        CALL    CLS             ; 0
        LD      HL,#5800
        LD      DE,#5801
        LD      BC,#02FF
        LD      (HL),#44
        CALL    _LDIR           ;

        LD      A,STR_7
        CALL    PAGE
        LD      HL,HELP
        LD      DE,#9000
        CALL    DEHRUST         ;
        XOR     A
        CALL    PAGE
                                ;  
        LD      IX,#9000        ;
        LD      DE,#4004        ;
        LD      LY,24
HELP_2  PUSH    DE
        LD      HY,24
HELP_3  PUSH    DE
        LD      B,#80
        LD      C,(IX+0)
        LD      H,#88
        LD      L,(IX+1)
       DUP      7
        LD      A,(BC)
        OR      (HL)
        LD      (DE),A
        INC     D
        INC     H
        INC     B
       EDUP 
        LD      A,(BC)
        OR      (HL)
        LD      (DE),A
        POP     DE
        INC     E
        INC     IX
        INC     IX
        DEC     HY
        JR      NZ,HELP_3
        POP     DE
        LD      A,E
        ADD     A,#20
        LD      E,A
        JR      NC,$+2+4
        LD      A,D
        ADD     A,8
        LD      D,A
        INC     IX
        INC     IX
        DEC     LY
        JR      NZ,HELP_2       ; 

        CALL    SCR_0
HELP_4  HALT                    ;

        CALL    OPROS_K
        BIT     5,C
        JR      Z,HELP_4        ;Escape
HELP_5
        HALT 
        CALL    OPROS_K
        BIT     5,A
        JR      NZ,HELP_5       ;  Escape

        CALL    SCR_1
        HALT 
        CALL    COPY            ; 1  0,  .
        CALL    SCR_0
        HALT 
        CALL    INST_PRNT       ; 
        CALL    PRN_ALL
        JP      L1              ;

;------- 
TRACK_LIST
        CALL    SCR_0
        HALT 
        CALL    COPY            ; 0  1
        HALT 
                                ;  
        LD      HL,CHUNK88_
        LD      HX,16           ;16 
TRACK_0 LD      DE,#4004
        LD      LX,8
TRACK_1 PUSH    DE
        LD      B,24            ;24 
        LD      C,(HL)
        INC     HL
TRACK_2
       DUP      24
        LD      A,(DE)
        AND     C
        LD      (DE),A
        INC     E
       EDUP 
        LD      A,E
        ADD     A,#20-24
        LD      E,A
        JR      NC,$+2+4
        LD      A,D
        ADD     A,8
        LD      D,A             ;  
        DJNZ    TRACK_2
        POP     DE
        INC     D
        DEC     LX
        JR      NZ,TRACK_1
        LD      DE,0-8-8
        ADD     HL,DE
        HALT 
        DEC     HX
        JP      NZ,TRACK_0      ; 

        LD      A,STR_7
        CALL    PAGE
        LD      HL,FONT
        LD      DE,#8000
        CALL    DEHRUST

        LD      HL,#8000
        LD      DE,#AE00
        LD      BC,#B600
TRACK_3 LD      A,(HL)
        AND     #F0
        LD      (DE),A
        LD      A,(HL)
        AND     #0F
        LD      (BC),A
        INC     L
        INC     E
        INC     C
        JP      NZ,TRACK_3
        INC     H
        INC     D
        INC     B
        LD      A,H
        CP      #88
        JP      NZ,TRACK_3

        LD      HL,MUS
        LD      DE,#8000
        CALL    DEHRUST         ;  [#798]

        LD      HL,NAME_MUS
        LD      DE,#8800
        CALL    DEHRUST         ;  [#176]
        XOR     A
        CALL    PAGE

        LD      IX,#8B00        ;   
        LD      HL,#8800        ;
        LD      A,(ALL_MUS)
        DEC     A
        LD      B,A             ;- 

TRACK_5 PUSH    BC,IX
        LD      DE,#8A00
        LD      B,32            ;MAX.   
TRACK_6 LD      A,(HL)
        INC     HL
        CP      #0D
        JR      Z,TRACK_7
        LD      (DE),A
        INC     DE
        DJNZ    TRACK_6
TRACK_7 INC     HL
        LD      A,B
        OR      A
        JR      Z,TRACK_8
        LD      A,#20
        LD      (DE),A
        INC     DE
        DJNZ    $-1-1
TRACK_8 LD      E,0             ;DE=#8A00
        PUSH    HL
        LD      LY,32/2
TRACK_9 LD      A,(DE)
        INC     DE
        LD      C,A
        LD      A,(DE)
        INC     DE
        LD      L,A
        LD      B,#AE
        LD      H,#B6
MEM=0
       DUP      8
        LD      A,(BC)
        OR      (HL)
        LD      (IX+MEM),A
        INC     B
        INC     H
MEM=MEM+16
       EDUP 
        INC     IX
        DEC     LY
        JR      NZ,TRACK_9
        POP     HL,IX,BC
        LD      DE,#80
        ADD     IX,DE
        DJNZ    TRACK_5         ;  

        LD      HL,#8000+480    ;  
        LD      A,(CUR_MUS)     ; 
        CP      2
        JR      NC,TR_1         ;    
                                ; 1  2  
        SUB     2
        NEG 
        LD      B,A             ;-   

        LD      DE,216
        ADD     HL,DE
        DJNZ    $-1             ;    

        SUB     5
        NEG 
        LD      B,A             ;  
        JR      TR_2
TR_1
        LD      C,A
        LD      A,(ALL_MUS)     ; - 
        DEC     A
        SUB     C               ;  
        CP      2
        LD      B,5             ; 5  
        JR      NC,TR_2
        SUB     B
        NEG 
        LD      B,A             ;  
TR_2    PUSH    HL,BC
        LD      A,(CUR_MUS)     ; 
        LD      HL,#8B00        ; 
        LD      DE,128
        CP      3
        JR      C,TR_3
        SUB     2
        JR      Z,TR_3
        LD      B,A
        ADD     HL,DE
        DJNZ    $-1
TR_3    PUSH    HL              ; 
        POP     IX,BC,HL

TR_4    PUSH    BC
        LD      B,16
TR_5
MEM=0
       DUP      8
        LD      A,(IX+MEM)
        LD      (HL),A
        INC     HL
MEM=MEM+16
       EDUP 
        INC     IX
        DJNZ    TR_5            ;   
        LD      DE,#80-16
        ADD     IX,DE
        LD      DE,88
        ADD     HL,DE
        POP     BC
        DJNZ    TR_4            ;   

        LD      IY,#0901
        LD      DE,#50E4        ;  
TR_6    PUSH    IY,DE
        HALT 
        CALL    TRAC_0          ;  - 
        POP     DE,IY
        LD      A,E
        SUB     #20
        LD      E,A
        JR      NC,$+2+4
        LD      A,D
        SUB     8
        LD      D,A
        INC     LY
        DEC     HY
        JR      NZ,TR_6

        LD      HL,#8A00
        XOR     A
        LD      (HL),A          ; 2   
        INC     L
        JR      NZ,$-2

        LD      A,(ALL_MUS)     ; - 
        DEC     A
        LD      H,#8B
        LD      DE,#80
        LD      B,A
        ADD     HL,DE
        DJNZ    $-1
                                ;HL- 
        XOR     A
        LD      (HL),A
        INC     HL
        DJNZ    $-2
TR_MENU
        HALT 
        CALL    OPROS_K         ;
        LD      A,C
        CPL 
        AND     3               ;  /?
        JR      Z,TR_K1         ;
        RRA 
        JR      NC,TR_D         ;
        RRA 
        JR      NC,TR_U         ;
TR_K1   LD      A,C
        CPL 
        AND     %00001100       ;  /?
        JR      Z,TR_K2         ;
        BIT     2,A
        JR      Z,TR_U          ;
        BIT     3,A
        JR      Z,TR_D          ;
TR_K2   BIT     4,C
        JP      NZ,LOAD_MUS     ; 
        BIT     5,C
        JR      Z,TR_MENU
TR_K3   HALT                    ;  ESCAPE
        CALL    OPROS_K
        BIT     5,C
        JR      NZ,TR_K3        ;  ESCAPE

        LD      A,(OLD_MUS)     ;,  
        LD      (CUR_MUS),A
        CALL    SCR_1           ;  ESCAPE
        HALT 
        CALL    COPY
        HALT 
        CALL    INST_PRNT       ; 
        CALL    PRN_ALL         ;    
        JP      L1

TR_D    LD      A,(CUR_MUS)     ;   
        OR      A
        JR      Z,TR_MENU       ;  
        LD      HL,#8B00        ;
        LD      B,A
        LD      DE,128
        ADD     HL,DE
        DJNZ    $-1             ;  
        SBC     HL,DE
        OR      A
        SBC     HL,DE           ;  1 

        LD      B,8
TR_D1   PUSH    BC
        LD      DE,0-16
        ADD     HL,DE
        HALT 
        PUSH    HL
        CALL    TR_OUT
        POP     HL,BC
        DJNZ    TR_D1           ; 
        LD      HL,CUR_MUS      ;   
        DEC     (HL)            ;
        JR      TR_MENU+1

TR_U    LD      A,(ALL_MUS)     ; - 
        SUB     2
        LD      C,A
        LD      A,(CUR_MUS)     ;   
        CP      C
        JR      NC,TR_MENU      ;  
        LD      HL,#8B00-128    ;
        INC     A
        LD      B,A
        LD      DE,128
        ADD     HL,DE
        DJNZ    $-1             ;  
        SBC     HL,DE
        OR      A
        SBC     HL,DE           ;  1 

        LD      B,8
TR_U1   PUSH    BC
        LD      DE,16
        ADD     HL,DE
        HALT 
        PUSH    HL
        CALL    TR_OUT
        POP     HL,BC
        DJNZ    TR_U1           ; 
        LD      HL,CUR_MUS      ;   
        INC     (HL)
        JP      TR_MENU+1

TR_OUT  LD      B,5*8
        LD      DE,#502A        ; 
TR_OUT1 PUSH    BC,DE
       DUP      16
        LDI 
       EDUP 
        POP     DE
        INC     D
        LD      A,D
        AND     7
        JR      NZ,TR_OUT2
        LD      A,E
        ADD     A,#20
        LD      E,A
        JR      C,TR_OUT2
        LD      A,D
        SUB     8
        LD      D,A
TR_OUT2 POP     BC
        DJNZ    TR_OUT1
        RET 

TRAC_0  LD      HL,#8000        ;  
TRAC_1  PUSH    DE,DE
        LD      B,24
TRAC_2  LD      C,D
       DUP      7
        LD      A,(HL)
        LD      (DE),A
        INC     HL
        INC     D
       EDUP 
        LD      A,(HL)
        LD      (DE),A
        INC     HL
        LD      D,C
        INC     E
        DJNZ    TRAC_2
        POP     DE
        LD      A,D
        RRA 
        RRA 
        RRA 
        AND     3
        OR      #58
        LD      D,A

       DUP      24
        LDI 
       EDUP 
        POP     DE
        LD      A,E
        ADD     A,#20
        LD      E,A
        JR      NC,$+2+4
        LD      A,D
        ADD     A,8
        LD      D,A

        DEC     LY
        JR      NZ,TRAC_1
        RET 

;------- 
LOAD_MUS
        LD      A,(CUR_MUS)     ;  
        LD      B,A
        LD      A,(OLD_MUS)     ; 
        CP      B
        JP      Z,TR_MENU       ;  
        LD      DE,0            ;   
        LD      HL,ALL_MUS+1
        LD      A,B
        OR      A
        JR      Z,MUS_FIND
LD_MUS1 LD      A,(HL)
        INC     HL
        ADD     A,E
        LD      E,A
        JR      NC,$+2+1
        INC     D
        DJNZ    LD_MUS1
MUS_FIND                        ;DE=
        LD      B,(HL)          ;  
        LD      HL,(MUS_TS)     ; / 
;-------
MUSLD2  LD      A,D
        OR      E
        JR      Z,MUSLD3
        INC     L
        BIT     4,L
        JR      Z,$+2+3
        LD      L,0
        INC     H
        DEC     DE
        JR      MUSLD2
MUSLD3  EX      DE,HL           ;/ 
        LD      C,5
        PUSH    DE,BC
        DI 
        LD      A,#3F
        LD      I,A
        IM      1
        XOR     A
        CALL    PAGE
        CALL    MUSIC+8         ; 
        LD      HL,10072
        LD      IY,23610
        EXX 
        POP     BC,DE
        LD      HL,#CE21
        PUSH    HL
        CALL    #3D13           ;
        POP     HL
        LD      A,(HL)          ;  ?
        CP      "h"
        JR      NZ,MUSLD5       ;
        INC     HL
        LD      A,(HL)
        CP      "r"
        JR      NZ,MUSLD5       ;

        LD      A,#21           ;  
        LD      (#C000),A
        LD      A,#C3
        LD      (#C005),A
        LD      (#C008),A

        LD      HL,#CE21
        LD      DE,#CE21
        CALL    DEHRUST         ; 
        LD      A,STR_7
        CALL    PAGE
        LD      HL,FM_TAB
        LD      DE,#BB00
        CALL    DEHRUST         ;
        XOR     A
        CALL    PAGE
        LD      A,(#CE21+99)
        INC     A
        LD      B,A
        LD      HL,#BB00-#C0
        LD      DE,#C0
        ADD     HL,DE
        DJNZ    $-1             ;HL-  
        LD      DE,#C200
        LD      BC,#C0
        CALL    _LDIR
        CALL    MUSIC           ; 

MUSLD4  DI 
        LD      A,#BE
        LD      I,A
        IM      2
        EI 
        LD      A,(CUR_MUS)
        LD      (OLD_MUS),A
        JP      TR_MENU

MUSLD5  LD      A,#C9           ; 
        LD      (#C000),A
        LD      (#C005),A
        LD      (#C008),A       ;   
        JR      MUSLD4

CHUNK88 DEFB    #00,#00,#00,#00,#00,#00,#00,#00
        DEFB    #88,#00,#00,#00,#88,#00,#00,#00
        DEFB    #88,#00,#22,#00,#88,#00,#22,#00
        DEFB    #88,#00,#AA,#00,#88,#00,#AA,#00
        DEFB    #AA,#00,#AA,#00,#AA,#00,#AA,#00
        DEFB    #AA,#44,#AA,#00,#AA,#44,#AA,#00
        DEFB    #AA,#44,#AA,#11,#AA,#44,#AA,#11
        DEFB    #AA,#44,#AA,#55,#AA,#44,#AA,#55
        DEFB    #AA,#55,#AA,#55,#AA,#55,#AA,#55
        DEFB    #AA,#55,#BB,#55,#AA,#55,#BB,#55
        DEFB    #EE,#55,#BB,#55,#EE,#55,#BB,#55
        DEFB    #FF,#55,#BB,#55,#FF,#55,#BB,#55
        DEFB    #FF,#55,#FF,#55,#FF,#55,#FF,#55
        DEFB    #FF,#77,#FF,#55,#FF,#77,#FF,#55
        DEFB    #FF,#77,#FF,#DD,#FF,#77,#FF,#DD
CHUNK88_ DEFB   #FF,#FF,#FF,#FF,#FF,#FF,#FF,#FF

