        MAIN "STS*",#C6
;FIND,TOKENS
;NEW SAVE/LOAD
 IFN _3d13
ldMODE=5 ;odd!
svMODE=6 ;even!
 ELSE 
ldMODE=#E5 ;odd!
svMODE=#CA ;even!
 ENDIF 

RESIDENT_W
 IFN reswin
        CALL WINDOW
        DB 5,7
        DB 13,12,"Resident",0
 ENDIF 
       IFN oldres
        CALL REST_RFON
       ENDIF 
ReSET_RES
 IFN reswin
        LD HL,#C16
 ELSE 
rezxy=$+2
        LD HL,#1713
 ENDIF 
        LD BC,(RES_ADR)
        CALL INPUT_W
        LD A,H
        AND #C0
;MD_RES_COM ;JP PE/JP Z:48K MODE
        JP PE,ReSET_RES
        LD (RES_ADR),HL
SAVE_RFON
; ???
;      RES+6, RES+11
        EXX 
        LD HL,(RES_ADR)
       IFN oldres
        PUSH HL
        LD DE,OLD_RES
        CALL RES_LDIR
        POP HL
        LD C,6  ;B=0
       ELSE 
        LD BC,6
       ENDIF 
        ADD HL,BC
        LD (RES_ADR6),HL ;!!!
       LD (RES_ADR6A),HL ;???
;RSTART_LEN=8  FOR 4.x  !
        LD C,5
        ADD HL,BC
        LD (RES_ADR11),HL   ;+11
       IF _3d13
        LD (RES_ADR11A),HL ;+11 for exit DOS
       ENDIF 
        EXX 
        RET 

RESIDENT_HL
        LD HL,#1F18
BANKS=$-2
WBANK=$-1
RESIDENT
        LD BC,#7FFD
        JP RES
RES_ADR=$-2
       IFN oldres
REST_RFON
        LD HL,OLD_RES
        JR RES_SET
       ENDIF 
RES_INP
        LD A,#1A
        JR $+4
RES_PUT
        LD A,#12
        LD (RES_IO_COM),A
        LD HL,SUB_RES_IO
RES_SET
        LD DE,(RES_ADR)
RES_LDIR
        LD BC,RES_LEN
        LDIR 
        RET 

FIND_GO
        CALL FIND_NEXT
        JP CANCEL

Save_Sect
        LD BC,svMODE<8+8   ;2D73 ;SAVE
        JR L_S_Sect
Load_Sect
        LD BC,ldMODE<8+7    ;2F1B ;LOAD
L_S_Sect
        LD A,B
        LD (SL_MODE),A
        LD A,C
        LD (SL_TXT2),A
        XOR #F
        LD (SL_TXT3),A
        ADD A,4 ;12/11
        LD (SL_TXT1),A
        CALL WINDOW
        DB 5,#43
SL_TXT1=$+2
        DB 15,9,12,10,#A0
        DB 23,11,10,2
SEC_TXT DB 0
        DB 8,12,10,5,2
LEN_TXT DB 1
SL_TXT3=$+2
        DB 23,12,8," "+W
        DB 28,12,1
TO_ADR  DW 0
        DB 8,11
SL_TXT2 DB 7
        DB "Track",0

        LD HL,#B13
        LD DE,TRSEC+1
        CALL INPUT_B_D

        LD HL,#B1E
        LD DE,TRSEC
        CALL INPUT_B_D
        LD (SEC_TXT),A

        LD HL,#C13
        LD DE,LEN_TXT
        CALL INPUT_B_D

        PUSH AF
        LD HL,#C1C
        LD DE,TO_ADR
        CALL INPUT_W_D ;HL=TO
        POP BC ;=LEN

S_L_SECTOR
       IFN oldres
        EXX 
        CALL REST_RFON
        EXX 
       ENDIF 
LD_SV_SEC
       IF _3d13
        LD DE,0
TRSEC=$-2
       ELSE 
TRSEC=#5CF4
        LD DE,(TRSEC)
       ENDIF 
        JR lD_SV_SEC2
SAVE_1_SEC
        LD A,svMODE ;2D73
        JR $+4
LOAD_1_SEC
        LD A,ldMODE ;2F1B
        LD (SL_MODE),A
        LD D,0
;1(LOAD_FILE)
SL_BUF_SEC
        LD HL,BUFFER,B,1
;1(FILER)
SL_STS_SEC
        LD A,#18,(DR_COM),A
;_1
lD_SV_SEC2

;DE=(TRSEC)
;HL=DEST_MEM_ADR
;B=SEC_LEN
        XOR A
        LD (DR_SET_JR),A


       IF _3d13


        INC B
        PUSH BC,DE
       LD A,(OUT_FF_3C)
       LD DE,#1FF3   ;OUT (FF),A
       CALL DOS
; FF=0,   -
       LD DE,#3DFD
       CALL DOS
       DI 
        POP DE
        DEC H
        JR GOTO_TR
DISK_CKL
        PUSH BC
        PUSH DE
        LD A,E
        INC A
        LD BC,#105F
        LD DE,#2A53   ;OUT (C),A
        CALL DOS
RE_CKL  PUSH HL,BC
        CALL CANCEL_TEST
        LD A,(SL_MODE) ;E5:LOAD / CA:SAVE
       OR #DF ;FF:L,DF:S
       XOR #7F
        CALL OUT_1F
        LD DE,#3FE5   ;:LOAD;#3FCA:SAVE
SL_MODE=$-2
        LD C,#7F
        LD A,H
        CP #BF
        CALL READ_WRITE_DOS
        CALL TEST_1F
       DI ; 4+11   EI
        SUB B ;A=1
        POP BC
        JR Z,NO_ERROR
        LD HL,#5CD6
        DEC (HL)
        POP HL
        DJNZ RE_CKL
        JP ERROR
NO_ERROR
        POP HL
        POP DE
        INC E
        BIT 4,E
        JR Z,NO_TRACK
        LD E,A ;=0
        INC D
GOTO_TR
        PUSH DE
        LD C,D
        SRL C
        LD A,#3C
OUT_FF_3C=$-1 ;#3C..3F:A..D
        JR NC,$+4
        XOR #10
        LD DE,#2F4D ;TRACK
        CALL DOS
      ;wait 51*65280*3t
       PUSH HL
       LD DE,16066 ; NO DISK 
      ;LD DE,#3EF5
       CALL DOS
       DI 
       POP HL
      ;LD B,6
      ;LD D,B
      ;INC DE
      ;LD A,D
      ;OR E
      ;JR NZ,$-3
      ;DJNZ $-6
        POP DE
NO_TRACK
        POP BC
        INC H
        DJNZ DISK_CKL
        LD (TRSEC),DE
        LD A,#38,(DR_COM),A
        LD A,(DR_SET_JR)
        AND A
        RET NZ  ;B=0
        JP SAVE_RFON


       ELSE 

DISK_CKL
       ;PUSH BC
        PUSH HL
SL_MODE=$+1
        LD C,ldMODE+#100;5:LOAD/6:SAVE
      ;LD B,1 ;  ,   SL_MODE 8-
       LD A,H
       ADD A,B
       CCF 
       JR NC,$+4
       CP #C0
      ;OR A ;CY,  
            ;NC -  (?  ?)
        CALL READ_WRITE_DOS
        POP HL
        LD DE,(#5CF4)
       ;POP BC
       ;INC H
       ;DJNZ DISK_CKL
       ;LD (TRSEC),DE
        LD A,#38,(DR_COM),A
        LD A,(DR_SET_JR)
        AND A
        RET NZ  ;B=0 ?
        JP SAVE_RFON


       ENDIF 
;1
READ_WRITE_DOS
DR_COM  ;#18/#38:IN_7PAGE/IN_BANK
        JR C,DOS

        JR $+2
DR_SET_JR=$-1 ;0/..
        CALL SAVE_RFON  ;WITH EXX..EXX
        LD A,NO_DR_SET-DR_SET_JR-1
        LD (DR_SET_JR),A
NO_DR_SET
        EXX 
        LD HL,DISK_RES
        CALL RES_SET
        LD DE,(BANKS)
        SET 4,E
       IF _3d13
        LD H,B,L,C ;=0
        ADD HL,SP
        LD SP,(RES_ADR11)
        DEC SP,SP
       ENDIF 
        JP RESIDENT
       IFN _3d13
DOS
       EXX 
       LD BC,32765
       LD DE,(BANKS)
      LD E,D
DISK_RES                              
       LD HL,0
       ADD HL,SP
       LD SP,(REG_SP) ; SP=call3D13, 21 
       OUT (C),E
       EXX 
        PUSH IY
        LD IY,23610 ;!!!  ?
        CALL #3D13
        DI 
        POP IY
       EXX 
       LD SP,HL
       OUT (C),D
       EXX 
        RET 
       ;29
       ELSE 
DISK_RES                              
        OUT (C),E
        EXX 
DOS
        PUSH DE
JP_3D2F JP #3D2F
;   PUSH DE
DW #3FE5;:LOAD;#3FCA:SAVE
; :
RES_ADR11A DW RES+DR_RETURN-DISK_RES
       ;8
DR_RETURN  ;+11 /+18(3d13)
        EXX 
        OUT (C),D
        LD SP,HL
        EXX 
        RET 

TEST_1F LD B,1
        LD HL,$-1
        PUSH HL,BC
        LD DE,#2099
        JR DOS
OUT_1F  LD DE,#2FC3   ;OUT (1F),A
        JR DOS
       ENDIF 

dIO     DEC DE
RES_IO
        PUSH HL,BC
        BIT 7,D
        JR NZ,NO_ROM
        BIT 6,D
DOS_JR;JR/JR_NZ:BASIC/DOS
        JR NORMAL_IO

        LD HL,IO_END
        PUSH HL
       LD HL,#1D73 ;A(HL)
        PUSH HL
        LD L,E,H,D
       IFN _3d13
        JP #3D2F
       ELSE 
        JR JP_3D2F
       ENDIF 

NO_ROM  ;8000.FFFF
        BIT 6,D
NORMAL_IO
        CALL RESIDENT_HL
IO_END  POP BC,HL
        INC DE
        RET 

SUB_RES_IO
        OUT (C),L
RES_IO_COM
        LD A,(DE)
        OUT (C),H
        RET 

TEST_ROOM                              
        LD E,8
        CALL LOAD_1_SEC
        LD HL,(#FFE5)
        LD BC,(FLEN)
        LD A,C
        AND A
        JR Z,$+3 ;ST2
        INC B
        LD C,B   ;ST2
        LD B,0
        LD A,C
        LD (FLENSEC),A
        SBC HL,BC
        JR C,No_Room
        LD (#FFE5),HL
        LD A,(#FFE4)
        AND A
        RET P
No_Room LD A,5
       OUT (-2),A
;RET
        JP CANCEL
TR_CANCEL=$-2 ;???
Write
        CALL TEST_ROOM
        LD L,A;=(#FFE4)
        LD H,B ;=0
        DB "))))
        LD C,H;=CAT_SEC
        PUSH BC

        LD A,L
        LD (CAT_ADR),A
        LD HL,(#FFE1)
        LD (TRSEC),HL
        LD (FTRSEC),HL

        LD A,svMODE ;2D73 ;SAVE
        LD (SL_MODE),A

        CALL SL_FILE3
Write_CALL=$-2
        POP DE ;E=CAT_SEC
        LD HL,(TRSEC)
        PUSH HL ;NewFirst_TrSec
        PUSH DE
        CALL LOAD_1_SEC
        LD DE,BUFFER
CAT_ADR=$-2
        LD HL,FNAME_TXT
      ;B=0?
        LD BC,8
        PUSH BC
        LDIR                
        INC HL
       LD A,(HL)
        LDI                
        LD HL,FILE_INFO+1
       CP "B
       JR NZ,$+4
       INC HL,HL
        POP BC;BC=8
       LDI 
       LDI 
       LD HL,FILE_INFO+3
        LDIR                
        POP DE;E=CAT_SEC
        CALL SAVE_1_SEC
        CALL TEST_ROOM ;DEC (DiskFree)
        POP HL;=NewFirst_TrSec
        LD (#FFE1),HL
        LD HL,#FFE4
        INC (HL)
        DEC E;=8!!!
        RET 
SAVE_FILE
        LD A,11
        CALL SL_FILE
        JR C,SAVE_NEW_F
;SaveExistFile
        LD A,svMODE ;2D73 ;SAVE
        LD (SL_MODE),A   ;!!!
       CALL _8020
        RRCA 
        JR NC,SL_FILE3

        LD HL,EXIST_TXT
        CALL PRINT_T_AT
        CALL SL_FILE2
;OverWrite
        CALL Write ;E=8
        LD L,#F4   ;HL=FFF4
        INC (HL)
        CALL SAVE_1_SEC
        LD E,0
DEL_F_SEC=$-1
        CALL LOAD_1_SEC
        LD A,1
        LD (0),A
DEL_F_ADR=$-2
        DEC E   ;DE=DelFileTrSec
        JR SAV_CAN
EXIST_TXT DB 16,#17
       DB 9,"exist",0
SAVE_NEW_F
        LD HL,FILE_INFO
        LD A,(EXT_TXT)
        CALL SL_FILE1_1
        CALL SL_FILE2
WR_DS_NAME
        CALL Write ;E=8 ;SAVE_NEW
SAV_CAN JP SAVE_1_SEC

FILE_INFO
FSTART  EQU $+1
FLEN    EQU $+3
FLENSEC EQU $+5
FTRSEC  EQU $+6
        DB "C",0,0,1,0,1,0,0,0 ;-FOR LAST FILE !!!

LOAD_FILE
        LD A,12
        CALL SL_FILE
        JR NC,LOAD_EXIST
LF_NFOUND
        LD HL,NFOUND_TXT
        CALL PRINT_T_AT
        JP INKEY
NFOUND_TXT
        DB #12,#17,"No ",9,0
       ;DB #D,#17,9,"not found",0
LOAD_EXIST
        CALL SL_FILE2
SL_FILE3
        LD HL,(FSTART)
        LD BC,(FLEN)
        DEC B
        INC B
        PUSH BC
        CALL NZ,S_L_SECTOR
        POP BC
        INC C
        DEC C
        RET Z
        LD B,1

        LD A,(SL_MODE)
        RRCA 
        JP NC,S_L_SECTOR ;SaveLastSec
        PUSH BC,HL
        LD DE,(TRSEC)
        CALL SL_BUF_SEC
        CALL RES_PUT
        LD HL,BUFFER
        POP DE,BC
        LD B,C  ;B=ByteLenOfLastSec
       DEC HL
MEM_STS_COPY
        INC HL
       LD A,(HL)
        CALL RES_IO  ;A<=(DE) INC DE
        LD (HL),A
        DJNZ MEM_STS_COPY
        RET 

Fadr
        SLA     C
        RL      B

        LD      A,B
        AND     7
        OR      #D0
MD_11=$-1
        LD      D,A
        LD      A,C
        AND     #F0
        LD      E,A
       RET 
SL_FILE
        LD (SLF_TXT),A

        LD      A,(FILER_END)
        AND     A
        JR      NZ,NO_FR
        CALL    ENTER_SET
       CALL Fadr
        LD HL,FNAME_TXT
       LD BC,#920
SLFR    LD A,(DE)
        INC E
        AND #7F
        CP C
        JR NC,$+3
        LD A,C
        LD (HL),A
       LD A,B
       INC HL
       SUB 2
       JR Z,$-3
        DJNZ SLFR

NO_FR   CALL    WINDOW
        DEFB    5,#43
      ;IFN hints
        DEFB    10,11
      ;ENDIF
        DEFB    20,"  NONAME   C"
FNAME_TXT EQU   $-10
EXT_TXT   EQU   $-1
        DEFB    #A0,10,12
        DEFB    17,1
FSTART_TXT DEFW 0
        DEFB    22,12,5,1
FLEN_TXT DEFW   0
        DEFB    16,9
SLF_TXT DEFB    11,9,0

        LD      HL,#0B15
        LD      DE,FNAME_TXT
        LD      C,8
        CALL    INPUT_REWR
        LD      HL,#0B1E
        LD      DE,EXT_TXT
        LD      C,1
        CALL    INPUT_REWR
SL_FILE1_0

        LD E,0 ;=0=CAT_SEC
CAT_CKL LD A,E
        LD (DEL_F_SEC),A
        CALL LOAD_1_SEC ;DE=NewCatTrSec
        PUSH DE
       IF _3d13
        DEC H;HL=BUFFER
       ENDIF 
FNAME_CKL
        LD DE,FNAME_TXT
        LD A,(HL)
        AND A
        POP BC;@@
        JR Z,END_CAT
        PUSH BC
        LD B,8
        LD (DEL_F_ADR),HL
FSYM_CKL
        LD A,(DE)
        CP (HL)
        JR NZ,NEXT_FNAME
        INC DE,L
        DJNZ FSYM_CKL
        INC DE
        LD A,(DE)
        CP (HL)
        JR Z,FNAME_OK
NEXT_FNAME
        LD A,L
        AND #F0
        ADD A,#10
        LD L,A
        JR NZ,FNAME_CKL
;END_FNAME_CKL
        POP DE
        BIT 3,E
        JR Z,CAT_CKL
END_CAT
        SCF     ;FILE ABSENT, C=1
        RET 
FNAME_OK ;FILE EXIST C=0 ,A=EXT_NAME
        POP DE
SL_FILE1_1
        INC HL
        LD E,(HL)
        INC HL
        LD D,(HL)    ;FSTART
        INC HL
        LD C,(HL)
        INC HL
        LD B,(HL)
        CP "B"
        JR NZ,NOT_BASIC
       ;LD C,E,B,D
        LD DE,(#5C53);=PROG
NOT_BASIC
        LD (FSTART),DE
        LD (FLEN),BC
        INC HL,HL
        LD E,(HL)
        INC HL
        LD D,(HL)
        LD (TRSEC),DE
        XOR A        ;Cf=0 ,Zf=1
        RET 

SL_FILE2
        LD HL,#0C10;#1610
        LD DE,FSTART
        CALL INPUT_W_D
        LD (FSTART_TXT),HL
REINPFL LD HL,#0C1A;#161A
        LD DE,FLEN  ;_TXT
        CALL INPUT_W_D ;A=L=C
        OR H
        JR Z,REINPFL
        LD (FLEN_TXT),HL
        RET 

FILER
        LD      HL,#DA00
MD_13=$-1
        LD      DE,#DA01
MD_14=$-1
      ;LD D,H,E,1
        LD      A,E
        LD      (PANEL_ZONE),A
        LD      (PANEL_Y),A

       LD BC,#FF
       LD (HL),B;2
       LDIR 

       LD HL,(ADR)
       LD (FSTART),HL
        LD      HL,#D000
MD_10=$-1
       LD (ADR),HL

        LD      D,E ;0
        LD      A,ldMODE ;2F1B LOAD
        LD      (SL_MODE),A
        LD      B,8
        CALL    SL_STS_SEC
       ;LD      A,LIST-PANEL_JR-1
       ;LD      (PANEL_JR),A
        XOR     A
        LD      (FILER_END),A

        CALL    WINDOW
        DEFB    2,0,0,32,16,0
        DEFB    0,0,0
        DEFW    FILER_REFR

;   SCROLL ZONE DPgUp YDN  X,Y,W, H
;                 B    S   S S B  S
        DEFB     -13*8,14, 0,1,32,13

        DEFB    1,1,30
        DEFW    LOAD_FILE,#0101

FILL_BLOCK
        CALL WINDOW
        DB 5,#44
       IFN hints
        DB 16,09,"Fill",6,#A0
       ENDIF 
        DB 23,11,4,1
FL_END  DW 0
        DB 9,12,3
FL_TXT
        DB 1
        DS 8
        DB 9,11,17,0
;Fill_Block2
        CALL RES_PUT
        LD HL,#B0F
        LD DE,FL_START
        CALL INPUT_W_D
        LD HL,#B1B
        LD DE,FL_END
        CALL INPUT_W_D;A=C=L
        LD HL,#C09
        LD DE,FL_TXT
        CALL INPUT_HD ;A=FL_LEN

        LD DE,0
FL_START=$-2
        LD C,A ;=FL_LEN
FL_HD_CKL
        LD HL,FL_TXT+1
        LD B,C
FL_B_CKL
        LD A,D
        CP #C0
        EXX 
        CALL Z,RES_PUT
        EXX 
        LD A,(HL)
        JR NC,$+3
        LD (DE),A
        PUSH DE
        CALL NC,RES_IO ;(DE)<=A
        POP DE

        PUSH HL
        LD HL,(FL_END)
        AND A
        SBC HL,DE
        POP HL
        RET Z
        RET C
        INC HL,DE
        DJNZ FL_B_CKL
        JR FL_HD_CKL
CO_START DW 0
COPY_BLOCK
        CALL WINDOW
        DB 5,#44
       IFN hints
        DB 16,9,"Copy",6,#A0
       ENDIF 
        DB 23,11,4,1
CO_END  DW 0
        DB 17,12,8,1
CO_TO   DW 0
        DB 9,11,17,0
CO_REINPUT
        LD DE,CO_START
        LD HL,#B0F
        CALL INPUT_W_D
        PUSH HL
        LD DE,CO_END
        LD HL,#B1B
        CALL INPUT_W_D
        PUSH HL
        LD DE,CO_TO
        LD HL,#C14
        CALL INPUT_W_D;A=0 Cf=0
        POP HL ;=CO_END
        POP DE ;=CO_START
        SBC HL,DE
        JR C,CO_REINPUT
        INC HL
        LD (CO_LEN),HL
        LD L,C
        LD H,B ;HL=CO_TO
       SBC HL,DE
       EX DE,HL   ;HL=CO_START
        LD E,C     ;DE=CO_TO
        LD D,B
        LD BC,0
CO_LEN=$-2
        LD A,#B0; LDIR
        JR C,CO_PUT_OPR
        LD HL,(CO_LEN)  ;CO_LDD
        DEC HL
        ADD HL,DE
        EX DE,HL   ;DE=CO_TO_END
        LD HL,(CO_END);HL=CO_END
        LD A,#B8; LDDR
CO_PUT_OPR
        LD (CO_OPR),A ;HL=FROM,DE=TO
        EXX 
        LD HL,CO_RES  ;CO_RES_PUT
        CALL RES_SET
        JP RESIDENT_HL
;C_CANCEL JP CANCEL

CO_RES                  ;(HL)=>(DE)
        OUT (C),L   ;=#18
        EXX 
        LDIR 
CO_OPR=$-1
        EXX 
        OUT (C),H   ;=#1F
        RET 

FIND    CALL WINDOW
        DB 4,3,7,#18,9,#45
       IFN hints
        DB #12,7,"Fin",#80+"d"
        DB 5,9
        DB "As","m"+#80
       ENDIF 
        DB #E,9
F_ASM_BUF
       DB "NOP             "
       DB #A0
      ;IFN hints
        DB 5,#A,"Cod","e"+#80
      ;ENDIF
        DB #B,#A,3
FIND_BUF
        DB 1
        DS 8

        DB 5,#B,"Mas","k"+#80
        DB #B,#B,3
F_MASK_BUF
        DB 1
        DS 8,-1

       IFN hints
        DB 5,#C,"Tex","t"+W
       ENDIF 
        DB #11,#C
F_TEXT_BUF
      DB #1E,#1F,#1F,#1F,#1F,#1F,#1F,#1F
      DB #A0,#13,#D,"Inv"
FIND_I_TXT
        DB #9C
        DB #14,#E,"GO"
        DB 0

        DB #9,10,14
        DW FIND_ASM,#A0E
        DB #A,8,18
        DW SET_FIND,#B09
        DB #B,8,18
        DW SET_MASK,#C0A
        DB #C,#C,8
        DW SET_TEXT,#D0B
        DB #D,#0E,4
        DW FIND_INV,#E0C
        DB #E,#E,4
        DW FIND_GO,#90D

FIND_INV
        LD HL,FIND_I_JR
        LD A,8
        XOR (HL)
        LD (HL),A

        LD HL,FIND_I_TXT
        JP XOR_1HL

FIND_ASM
        LD A,(BANKS+1)
        LD (BANKS),A
        CALL RES_INP
        LD HL,#90E
        LD (ASM_AT),HL
        LD BC,FIND_BUF+1
        PUSH BC
        CALL INPUT_ASM
       EX DE,HL
        POP DE;=Find_Buffer+1
       ;AND A
       ;SBC HL,DE
       LD A,L
       SUB E
        LD (FIND_BUF),A
        LD A,26
        LD (ASM_AT),A
        JR FIND_END_T
SET_FIND
        LD HL,#A0B
        LD DE,FIND_BUF
        CALL INPUT_HD
FIND_END_T
        LD HL,FIND_BUF
        LD B,(HL)
        LD C,8
        INC HL
        LD DE,F_TEXT_BUF
FTXTCKL LD A,(HL)
        INC HL
        AND #7F
        CP " "
        JR NC,$+4
        LD A,#1E
        LD (DE),A
        INC DE
        DEC C
        DJNZ FTXTCKL
        JR Z,FIND_END
        LD A,#1F
FTXT_2  LD (DE),A
        INC DE
        DEC C
        JR NZ,FTXT_2
FINDE=F_MASK_BUF+1
FIND_END
        LD A,(BANKS+1)
        LD (BANKS),A
        CALL RES_INP
        LD BC,FIND_BUF+1
        CALL CL_DIS_INS
        LD HL,ENT_TXT;=ASM_BUFFER
        LD DE,F_ASM_BUF
        LD BC,16
        LDIR 
        LD A,(FIND_BUF)
        LD (F_MASK_BUF),A
        ADD A,FINDE
        LD (F_END_TST),A
 IFN trfind
        LD (TF_END_TST),A
 ENDIF 
b3bs
        LD A,(BANK3)
        LD (BANKS),A
        RET 

SET_MASK
        LD DE,F_MASK_BUF
        LD HL,#B0B
        CALL INPUT_HD
;LD A,(F_Mask_Buffer)
        LD HL,FIND_BUF
        CP (HL)
        JR NZ,SET_MASK
        RET 
SET_TEXT
        LD A,#1F
        LD (ULINE),A
        LD DE,F_TEXT_BUF
        PUSH DE
        LD HL,#C11
        LD C,8
        CALL INPUT_REWR
        POP HL;=F_Text_Buffer
        LD DE,FIND_BUF+1
        LD BC,#800
FT_CKL  LD A,(HL)
        CP #1E
        JR Z,FT_IGN
        CP #1F
        JR Z,FT_END
        LD (DE),A
FT_IGN  INC HL,DE,C
        DJNZ FT_CKL
FT_END  LD A,C
        AND A
        JR Z,SET_TEXT
        LD (FIND_BUF),A
        JR FIND_END
FIND_NEXT
        CALL ENTER_SET     ;Cf=0
        LD HL,(ADR)
        SBC HL,DE   ;=-DELTA_ADR
        PUSH HL
        LD (FIND_START),BC;=CUR_ADR+1
        LD BC,0
FIND_CKL
        LD DE,0
FIND_START=$-2
        INC DE
        LD (FIND_START),DE

        LD IX,FIND_BUF+1
        LD HL,F_MASK_BUF+1
        DEC BC
        LD A,B
        OR C
        JR Z,NOT_FOUND
F_CP_CKL
        CALL RES_IO  ;A<=(DE) INC DE
       XOR (IX)
       AND (HL)
FIND_I_JR
        JR NZ,FIND_CKL
        INC IX,HL
        LD A,L
        CP FINDE+1
F_END_TST=$-1
        JR NZ,F_CP_CKL
;FIND_END_OK  Zf=1,Cf=0
        LD HL,(FIND_START)
        POP BC
        ADD HL,BC
        LD (ADR),HL
        RET 
NOT_FOUND
      ;LD A,2
      ;OUT (-2),A
      ;RET
        POP BC
ERROR
        LD A,2
        OUT (-2),A
        JP CANCEL ;!!!

PR_AT   AND #7F
        CALL PR
        EX DE,HL
PRINT_T_AT ;HL=ADR_TXT_AT
        LD E,(HL)
        INC HL
        LD D,(HL)
        INC HL
        EX DE,HL
PRT_AT  CALL AT
        LD A,3
        LD (PRINT+1),A
PRT_T_CKL ;DE=ADR_TXT
        LD A,(DE)
        INC DE
        CP #1C
        JR NC,NORM_SYM
        AND A
        JR Z,PR_AT_END
        DEC A
        JR NZ,TST_BYT
        EX DE,HL
        LD C,(HL)
        INC HL
        LD B,(HL)
        PUSH HL
        CALL PRINT_W
PR_BWH  POP HL
        INC HL
        JR PRINT_T_AT
TST_BYT DEC A
        JR NZ,TST_HD
        LD A,(DE)
        PUSH DE
        CALL PRINT_B
        JR PR_BWH
TST_HD  DEC A
        JR NZ,PR_TOK
;PRINT_H_DUMP       ;DE<=ADR_HDUMP_BYTES
                    ;HL<=YX             
                    ;NEXT_HD_BYT=>DE    
        LD C,8;=MAIN_LEN
        LD A,(DE)
        LD B,A;=BYTE_LEN
        CALL CONV_HDBUF ;HL_SOHR
        PUSH DE
        LD DE,BUFFER
        CALL HDUMPPR
        JR PR_BWH

PR_TOK  LD HL,TOKENS
        LD B,A
TOK_S_CKL                              
        BIT 7,(HL)
        INC HL
        JR Z,TOK_S_CKL
        DJNZ TOK_S_CKL
TOK_CKL LD A,(HL)
        AND #7F
        PUSH HL
        CALL PR
        POP HL
        BIT 7,(HL)
        INC HL
        JR Z,TOK_CKL
        LD A," "
NORM_SYM                              
        CP #80
        JR NC,PR_AT
        CALL PR
        JR PRT_T_CKL
PR_AT_END                              
        LD (PRINT+1),A;=0
        RET                
TOKENS  DB W,"En","d"+W,"Le","n"+W
        DB " Bloc",W+"k","Fro",W+"m"
        DB "T","o"+W
        DB "Fil",W+"e","Secto",W+"r"
        DB "Sav","e"+W,"Loa","d"+W
        DB "Stop i","f"+W,"Ban","k"+W
        DB "Qui","t"+W
        DB "Trac","e"+W,"Star","t"+W
        DB "Disas","m"+W," DEF","B"+W
       DB "FileNam","e"+W
        DB "BASI","C"+W," DO","S"+W
        ;21,22
STAT_KEYS
        DB #B
        DW KEY_LEFT;UP
        DB #A
        DW KEY_RIGHT;DOWN
 IFN sinc
        DB "9"
        DW KEY_LEFT;UP
        DB "8"
        DW KEY_RIGHT;DOWN
 ENDIF 
PANEL_KEYS
        DB #D
        DW KEY_ENTER
 IFN sinc
        DB "0"
        DW KEY_ENTER
 ENDIF 
        DB 8
        DW KEY_LEFT
        DB 9
        DW KEY_RIGHT
 IFN sinc
        DB "6"
        DW KEY_LEFT
        DB "7"
        DW KEY_RIGHT
 ENDIF 
STAT_END
        DB #B
       DW KEY_UP
        DB #A
       DW KEY_DOWN
 IFN scrolls
        DB ")"
        DW SCROLL_DOWN
        DB "("
        DW SCROLL_UP
 ENDIF 
        DB 4
        DW PAGE_UP
        DB 5
        DW PAGE_DOWN
      DB " "
      DW CANCEL
        DB "l"
        DW LOAD_FILE
        DB "s"
        DW SAVE_FILE
        DB "="
        DW Load_Sect
        DB "|" ;SS+S
        DW Save_Sect
        DB "#"
        DW SET_DECHEX
 IFN drives
       DB "!" ;"d"
       DW SET_DRIVE
 ENDIF 
        DB 7
        DW SCREEN_SET
FILER_END
        DB ":"   ;SS+Z
        DW STEP_COM
        DB "`"   ;SS+X
        DW STEP_COM_X
        DB ">"   ;SS+T
        DW STEP_SUBR
        DB "w"
        DW SET_BREAK
        DB "p"
        DW MEM_TO_ADR
        DB #22
        DW RETURN_MTA
        DB "v"
        DW ADR_TO_ML
        DB "m"
        DW MEMORYSET
        DB ","   ;SS+N
        DW ML_TO_SP
        DB "."   ;SS+M
        DW MEM_TO_PC
        DB "z"
        DW PC_TO_CUR

        DB "b"
        DW BANK_SET
        DB "$"
        DW dIS_LIST_S
        DB "r"
        DW RESIDENT_W
        DB "f"
        DW FIND
        DB "n"
        DW FIND_NEXT
        DB "i"
        DW FILL_BLOCK
        DB "o"
        DW COPY_BLOCK
        DB "t"
        DW TRACE
        DB "c"
        DW CALL_SUBR
        DB "j"
        DW JUMP_SUBR
 IFN user
        DB "u"     ;U
        DW SET_USER
        DB "]"     ;SS+U
        DW USER
 ENDIF 
        DB "q"
        DW QUIT
        DB "%"
        DW DIS_LABEL
 IFN xxx
        DB "x"
        DW SET_XXX
 ENDIF 
 IFN ssk
        DB "+"
        DW SS_K    ;JP_TO_PC SCR=1
        DB "-"
        DW SS_J    ;JP_TO_PC SCR=0
 ENDIF 
        DB "a"
        DW SET_AP
;KEY_48K
        DB #E
        DW FILER
        DB "e"
        DW SET_DOS
 IFN disdisk
        DB "d"
        DW DIS_DISK
 ENDIF 
        DB 0
