;todo ANYSCREEN (LDIR #4000,NO INDICATE)+ALASM res
;KILL REDISASM?KILL BUFFER?
v1="5
v2="+
v3="7

oldres=1              ;54
splash=0
_3d13=0                ;-117 sp=#4020   
rus=1                  ;657(654)
romfont=1              ;-489
disdisk=0              ;829:(
small=romfont          ;-2

mega=1                 ;-2

reswin=1               ;12
beeps=1;1              ;11
downs=1                ;9
xxx=0                 ;28
ssk=1;1                ;6
drives=1-_3d13         ;38/27 ss1,fix=10

windows=1             ;86
titl=1                ;63
shad=1                ;23

scrolls=1;1            ;6
sinc=1                 ;24
trbank=1;1            ;29
user=1;1              ;37
userarea=1
trfind=1;1            ;64
eof=0                  ;10 ?
eol=1-disdisk           ;8 ?

;P_BUF_END=#FF40
P_BUFFER=#FF80
BUFFER=#FF00
DD_BUF=#4000 ;#9000 !!!!!
LOCEND_BUF=#5AFF

VECTOR=#FF1C
ENT_TXT=#FF80
ENT_BUFFER=#FF98

_8020=8020
_28E=#28E
_31E=#31E
_334=#334

RES=23698
        ORG #DB00
        LD (QUIT_SP),SP
      ;;;  
rETURN_COM
       LD (RES+6),SP
RES_ADR6=$-2
       LD SP,RES+6 ;  ...
RES_ADR6A=$-2
        PUSH BC,AF
       LD A,R ;???  IFF
       DI 
        LD BC,#7FFD
        LD A,#1F
WBANK3=$-1
;OUT (C),A
        DB #ED,0
jP_OUT_COM=$-1;:0/#79
        JP jP_RETURN ;<= IN RESIDENT
REND_LEN=$-rETURN_COM

      ;;;  

JUMP_RES
        OUT (C),A
        LD BC,0
JUMP_BC=$-2
        LD A,0
JUMP_A=$-1
EI_DI   DI 
RSTART_LEN=$-JUMP_RES ;=8

RES_LEN=RSTART_LEN+4+REND_LEN

; 
SET_BREAK
        CALL REST_BREAK ;  
        CALL ENTER_SET ;BC=DE=.
BREAK_PSET
        LD (BREAK_PC),DE
        LD HL,BREAK_BUF-1
        LD B,3
        CALL MEM_STS_COPY

;HL=BRET_CODE-1
BREAK_PUT
        EXX 
        CALL RES_PUT
        EXX 
        LD DE,0
BREAK_PC=$-2
        LD B,3
        CALL MEM_STS_COPY
        JP RES_INP

BREAK_BUF DS 3 ;  
;BRET_CODE
        JP RES+RSTART_LEN+3 ;=+11
RES_ADR11=$-2

TRACE_GO
        LD A,(TrC_TXT)
        RRCA 
        LD A,NO_TR_CALL-STC_JR-1
        JR C,$+3
        XOR A
        LD (STC_JR),A

        LD HL,TRACE_SIM
;CALL ENTER_END+3
        LD (W_KEY_JP),HL
        LD A,(Ind_TXT)
        RRCA 
        LD SP,STACK
 IFN trfind
       JP C,CANCEL+6
 ELSE 
       JR C,CANCEL+6
 ENDIF 

        LD A,(BANKS) ;MEM_BANK
        AND 8
        CALL NZ,SCR_SET ;!!!
TRACE_CKL
        CALL TRACE_SIM
        CALL STEP_Z80
        JR TRACE_CKL
TRACE_SIM
        LD A,#7F
        IN A,(-2)
        RRCA 
        JR NC,TRACE_END
        LD A,(StD_TXT);#9D=ON
        RRCA 
        JR NC,NO_TestDOS
        LD A,(DOS_JR)
        CP #18
        JR NZ,TRACE_END;IN DOS
NO_TestDOS
 IFN trfind
        LD A,(StF_TXT);#9D=ON
        RRCA 
        CALL C,TRACE_FIND
 ENDIF 
        LD HL,(REG_PC)
        LD DE,(TR_STOP_A)
        AND A
        SBC HL,DE
        JR Z,TRACE_END
;NZ!
 IFN user
        LD A,(StU_TXT);#9D=ON
        RRCA 
        CALL C,USER
        JR Z,TRACE_END
 ENDIF 
        LD A,(TrC_TXT);#9D=ON
        RRCA 
        LD E,":"
        RET C
        LD E,"`"
        RET 

DISPLAY $," DON'T CROSS PARAGRAPH!"

MASK_TABL
        DB #FC,0
        DB #3F,0
        DB #F,#C0
        DB #3,#F0
 IFN trfind
TRACE_FIND
        CALL RES_INP
        LD DE,(REG_PC)
        LD BC,FIND_BUF+1  ;!!!
        LD HL,F_MASK_BUF+1;!!!
TF_CP_CKL
        CALL RES_IO ;A<=(DE) INC DE
       LD HY,A
       LD A,(BC)
       XOR HY
       AND (HL)
        RET NZ
        INC BC,HL
        LD A,L
        CP FINDE+1
TF_END_TST=$-1
        JR NZ,TF_CP_CKL
      ;JR TRACE_END
 ENDIF 

TRACE_END
;LD HL,INKEY
;LD (W_KEY_JP),HL
;RET
        JR CANCEL

jP_RETURN
        LD SP,STACK
JUMP_SP=$-2 ;   JP/CALL?
        CALL REG_SAVE
       JR CANCEL
JP_RET_JR=$-1   ;!!!
        LD HL,(BREAK_PC)
        LD (REG_PC),HL
;JP REST_BREAK
REST_BREAK
        LD HL,BREAK_BUF-1
        CALL BREAK_PUT
        LD (BREAK_PC),BC;=0
        RET 

RET_STEP  ;JR from JP_RET_JR
        LD A,1
        JP ADD_IR ;STEP_END2

dIS_LIST_S
        LD HL,PANEL_JR
       LD A,DISASM-PANEL_JR-1
        XOR (HL)
        LD (HL),A
        LD HL,PANEL_ZONE
        LD A,(HL)
        AND A
        JR NZ,$+3
        INC (HL)
        JR CANCEL
JmpFrAlm
       DISPLAY "JUMP FROM ALASM=",$
        DI 
        LD (QUIT_SP),SP
CANCEL
        LD SP,STACK
        CALL START;RESTORE_VARS 
START_JP=$-2
        LD A,(WBANK) ;RESTORE_MEM_BANK
        AND 8
MD_SCR_COM
        CALL Z,SCR_SET

        LD      HL,FILER_END
        XOR     A
        LD      (L_PC_CUR),A
        CP      (HL)
        JR      NZ,NOT_FILER
        LD      (HL),":"
        LD      HL,(FSTART)
       OR H,L
       JR Z,NOT_FILER
        LD      (ADR),HL
NOT_FILER
        JR DISASM
PANEL_JR=$-1

LIST    CALL WINDOW
        DB 2,0,0,32,24,0
        DB 0,0,0
        DW LIST_REFR
;   SCROLL ZONE DPgUp YDN  X,Y,W, H
;                 B    S   S S B  S
        DEFB     -21*8,22, 1,1,30,21
        DB 1,1,4
        DW ENTER_ADR,#203
        DB 2,6,18
        DW ENTER_DUMP,#301
        DB 3,25,6
        DW ENTER_TEXT,#102

DISASM  CALL WINDOW
;FL5=$+4
;UD12=$+2
        DB 2,0,0,32,24,0
;UD29=$+1
 IFN xxx
        DB 2,10
 ELSE 
        DB 2,14
 ENDIF 
IFN small
        DB "int",0
ELSE 
        DB "INT",0
ENDIF 
        DW DIS_REFR
;   SCROLL ZONE DPgUp YDN  X,Y,W, H
;                 B    S   S S B  S
        DEFB     -21,  22, 9,1,25,21

        DB 0,0,7
        DW ENTER_REG,#103
        DB 1,7,4
        DW ENTER_ADR,#200
        DB 2,11,7
        DW ENTER_CODE,#301
        DB 3,#12,#E
        DW ENTER_ASM,2

SCR_SET LD A,(BANKS) ;MEM_BANK
        XOR 8
        JR BANK_PUT

BANK_SET
       LD HL,#1726
        LD A,(BANKS)
        CALL INPUT_B
BANK_PUT_M
        OR 8
MD_8_BANK=$-1
BANK_PUT
       IF mega
        AND #DF
       ENDIF 
        LD (BANKS),A
        LD (BANK3),A
        AND #18
        OR 0
WBANK_0=$-1
        LD (WBANK),A
        LD (WBANK3),A
        LD BC,#7FFD
        OUT (C),A
        AND 8
        LD (MD_8_BANK),A
        RET 

BANK_TEXT
        DB #21,#17
;UD5=$-1
        DB 14,2
BANK3   DB #18
        DB 0,0,0
REG_TXT
IFN small
        DB "pc"
        DB "sp"
        DB "ix"
        DB "iy"
        DB "hl"
        DB "de"
        DB "bc"
        DB "af"
        DB "ir"
 IF xxx
        DB "hl"
        DB "de"
        DB "bc"
        DB "af"
 ENDIF 
ELSE 
        DB "PC"
        DB "SP"
        DB "IX"
        DB "IY"
        DB "HL"
        DB "DE"
        DB "BC"
        DB "AF"
        DB "IR"
 IF xxx
        DB "HL"
        DB "DE"
        DB "BC"
        DB "AF"
 ENDIF 
ENDIF 
FLAG_TXT DB "SZ5H3PNC"
;commented for fixed AL_ASMBANK
      ;IFN disdisk
DD_NAME=$-7
        DB "0"
      ;ENDIF

DIS_REFR
        LD HL,DIS_LINE
        CALL REFR_START
REG_PR
        LD DE,REG_PC
        EXX 
        CALL RES_INP
       ;LD HL,(SUD12-1)
       LD H,0
        LD BC,#C000
ML_ADR=$-2
        CALL LIST_LINE
       ;INC H
       ;LD L,0
       LD HL,#100
        LD DE,REG_TXT
 IFN xxx
        LD B,9
 ELSE 
        LD B,9+4
 ENDIF 
REG_CKL PUSH BC
        CALL AT
        PUSH HL,HL
        CALL PR2INC_DE
 IFN xxx
        LD A,B
        SUB 2
        CP 4
        JR NC,$+7
SXX=$+1
       LD A," "
 ELSE 
        LD A,B
        CP 5
        JR NC,$+7
       LD A,"'"
 ENDIF 
       CALL PR

        EXX 
        EX DE,HL
        LD C,(HL)
        INC HL
        LD B,(HL)
        INC HL
        EX (SP),HL
        LD L,3
        CALL PRINT_W
        POP DE
        EXX 
        POP HL
        INC H
        POP BC
        DJNZ REG_CKL
        PUSH HL
        LD L,6
        CALL AT
        LD A,#1C
INT_TXT=$-1
        CALL PR
        POP HL
        INC H
        CALL AT
       LD BC,(REG_AF)
      ;LD C,A
        LD DE,FLAG_TXT
        LD B,8
FPR_CKL RLC C
        LD A,(DE)
        INC DE
        JR C,$+4
       LD A," "
       CALL PR
        DJNZ FPR_CKL
PRINT_BANK
;TODO PRINT RESIDENT???

        LD HL,BANK_TEXT
        JP PRINT_T_AT

REG_SAVE
        LD (SSP1),SP
        LD A,#1D

;TODO ROSHIN FIX?

        JP PO,INT_OFF
        JR PUT_INT
INT_OFF DEC A
PUT_INT LD (INT_TXT),A
        LD SP,ADR  ;REG_END
        EXX 
        EX AF,AF'
        PUSH AF,BC,DE,HL
        LD A,I
        LD H,A
        LD A,R
        LD L,A
        PUSH HL
        LD SP,(RES_ADR)
        POP HL;NOP
        POP AF;AF
        POP BC;BC
        POP HL;SP
        LD SP,REG_AF+2
        PUSH AF,BC
        EXX 
        PUSH DE,HL,IY,IX
        EXX 
        PUSH HL
;todo DETECT CACHE (use in GET,ssZ..)
       IN A,(#7B)
        LD SP,STACK-2
SSP1=$-2
        XOR A
        LD I,A
        LD A,#80-#22;+1 ;5.4
ADD_IR  LD HL,REG_IR
        SLA (HL)
        RLA 
        ADD A,(HL)
        RRCA 
        LD (HL),A
        RET 

 IFN xxx
SET_XXX LD A,(PANEL_JR)
        AND A
        RET  Z
        LD HL,SXX
        LD A,7
        XOR (HL)
        LD (HL),A

        LD HL,REG_HL
        LD DE,REG_HLX
        LD B,8
SWAP_X0 LD C,(HL)
        LD A,(DE)
        LD (HL),A
        LD A,C
        LD (DE),A
        INC HL,DE
        DJNZ SWAP_X0
        JR REFR_REG
 ENDIF 

ENTER_REG
        LD HL,(CUR_Y)
        LD A,L
 IFN xxx
        CP 10
 ELSE 
        CP 10+4
 ENDIF 
        JR Z,ENTER_INT
        ADD HL,HL
        LD DE,REG_PC-2
        ADD HL,DE
        EX DE,HL
;       ADD A,0
;UD32=$-1
        LD H,A
        LD L,3
        CALL INPUT_W_D
        JR REFR_REG

STEP_COM_X
        XOR A
        JR $+4
STEP_COM
        LD A,NO_TR_CALL-STC_JR-1
        LD (STC_JR),A
;STEP_COM_2
        CALL STEP_Z80
        LD A,1
        LD (WAIT_FAST),A
        LD A,(PANEL_JR)
        AND A
REFR_OPER ;_/Z, C9/C8
        RET Z ;NZ???
REFR_REG
        CALL REG_PR ;REG_PR+PC_CUR+NO
;_REFR
NO_REFR_2
        POP AF
        JP REFR+2
SCREEN_SET=SCR_SET
;CALL SCR_SET
;JR NO_REFR_2

ENTER_INT
        LD HL,INT_TXT
        CALL XOR_1HL
        JR REFR_REG

FILER_REFR
        LD      HL,FILER_LINE
        JR      REFR_START
LIST_REFR
       CALL PRINT_BANK
       CALL RESTORE_IX

        LD HL,LIST_LINE
REFR_START
        LD (LINE_SUBR),HL
        CALL RES_INP
        LD BC,(ADR)
        LD H,0
;UD2=$-1
REFR_L_CKL
        INC H
REFR_L_C2
        PUSH HL
        CALL PANEL_LINE
        LD HL,(TABL_ADR)
        LD (NEXT_ADR),HL
        LD (HL),C
        INC HL
        LD (HL),B
        INC HL
        LD (TABL_ADR),HL
        POP HL
       LD A,(IX-5)
       CP H
        JR NZ,REFR_L_CKL
        RET 

PANEL_LINE
        JP DIS_LINE
LINE_SUBR=$-2
LIST_LINE
        LD L,1
        PUSH HL,BC
        CALL PRINT_W
        POP DE,HL
        PUSH DE
        LD B,8
        LD L,B
LBYTE   CALL RES_IO
        PUSH HL
        CALL PRINT_HB
        POP HL
        INC L,L,L
        DJNZ LBYTE
        INC L
        CALL AT
       POP DE
        LD B,8
LTX_CKL CALL TAKE_SYM
        CALL PR
        DJNZ LTX_CKL
        LD C,E,B,D
        RET 
FILER_LINE
;BC=ADR_COORECT
       CALL Fadr
        PUSH    DE
        POP     IY

        LD      L,1;3;for "filenam_"
        CALL    AT

;0123456789ABCDEF0123456789ABCDEF0123456789
;   FILENAME C  #5D3B #2000  #20  #A0 #02

        LD      C,H
        LD      B,8
FRP_CKL CALL    PR_INC_DE
        DJNZ    FRP_CKL
        CALL    INC_POS
        CALL    PR_INC_DE
;FR START
        LD      H,C
        PUSH    HL
        LD      L,#F

        LD      C,(IY+9)
        LD      B,(IY+10)
        CALL    PRINT_W
;FR LENGTH
        POP     HL
        PUSH    HL
        LD      L,#15
        LD      C,(IY+11)
        LD      B,(IY+12)
        CALL    PRINT_W
;FR LEN SEC
        POP     HL
        PUSH    HL
        LD      L,#1C
        LD      A,(IY+13)
        CALL    PRINT_B
;FR F.TR
        POP     HL
        PUSH    HL
        LD      L,#21
        LD      A,(IY+14)
        CALL    PRINT_B
;FR F.SEC
        POP     HL
        PUSH    HL
        LD      L,#25
        LD      A,(IY+15)
        CALL    PRINT_B
        POP     HL
       LD      BC,16
       ADD     IY,BC
       PUSH    IY
       POP     BC
       SRA     B
       RR      C
        RET 

TAKE_SYM
        CALL RES_IO ;INC DE
      IF rus
       AND #7F
       CP " "
       RET NC
       LD A,#1F
      ELSE 
     IFN romfont
      ;AND #FF
     ELSE 
      CP -16
      JR NC,$+5
     ENDIF 
       CP " "
       RET NC
       LD A,#1F
      ENDIF 
        RET 

ENTER_TEXT
        PUSH BC
        LD HL,BUFFER
        PUSH HL
        PUSH AF ;A=D

        LD B,8
LE2CKL  CALL TAKE_SYM
        LD (HL),A
        INC L
        DJNZ LE2CKL

        POP HL
        LD L,33
        LD C,8
        CALL INPUT_1F

        POP HL ;=BUFFER
        POP DE
        LD B,8
LE2CKL2 EXX 
        CALL RES_INP
        EXX 
        CALL RES_IO ;A,(DE) INC DE
        AND #80
        LD C,A
        EXX 
        CALL RES_PUT
        EXX 
        LD A,(HL)
        INC HL
        CP #1F
        JR Z,$+6  ;IGNNN
        OR C
        CALL dIO    ;(DE),A
        DJNZ LE2CKL2
        JR ENTER_END
ENTER_ASM                              
        LD (ASM_AT+1),A
        CALL INPUT_ASM
        JR ENTER_END
ENTER_CODE
        PUSH AF
       INC HL
       LD E,(HL)
       INC HL
       LD D,(HL)
       EX DE,HL
        SBC HL,BC
        LD A,L
        LD DE,-5
        ADD HL,DE
        POP DE
        LD E,#F
        JR NC,ENTER_L_OK
        ADD HL,BC
        INC HL
        LD B,H,C,L
        LD A,4
ENTER_L_OK
        LD HL,INPUT_HLIN
        JR ENT_DL1
ENTER_DUMP
        LD HL,INPUT_HD
        LD D,A
        LD E,8
        LD A,E
ENT_DL1 LD (HLIN_CALL),HL
        PUSH BC ;=ADR_IN_MEM
        PUSH DE ;=YX_COORDS
;ENTER_LOAD_MEM
        LD E,C
        LD D,B
        LD HL,ENT_BUFFER
        LD B,A ;MAIN_LEN
        LD (HL),B
        PUSH HL
        CALL MEM_STS_COPY

        POP DE;=ENT_BUFFER
        POP HL;=YX
        PUSH DE
        CALL 0
HLIN_CALL=$-2
        CALL RES_PUT
        POP HL;=ENT_BUFFER
        POP DE;=ADR_IN_MEM
        LD B,(HL);<9,>1
        CALL MEM_STS_COPY
ENTER_END
        JR RESTORE_VARS
CRD_JR=$-1
        LD HL,AUTO_ENT
        LD (W_KEY_JP),HL
        LD A,RESTORE_VARS-CRD_JR-1
        LD (CRD_JR),A
       JP CRDOWN

RESTORE_VARS
        LD HL,INKEY
        LD (W_KEY_JP),HL

        LD A,(NAME_PR_AT+1)
        LD (ASM_AT),A
        LD A,#C3
        LD (JPC_COM),A
NORM_INP
        XOR A
        LD (HD_OPER),A
        LD A," "
        LD (ULINE),A
        LD HL,PRINT
        LD (IPRINT),HL
        LD A,(DE) ;FOR IHD (BIOS)
        RET 

INPUT_HD
        LD BC,HDUMPPR
        LD (IPRINT),BC
        LD A,#85 ;ADD A,L
        LD C,8
        JR $+5
INPUT_HLIN
        LD C,4
        XOR A
        LD (HD_OPER),A
;INPUT_HDUMP_REWRITE
                ;DE=ADR_HDUMP_BYTES
                ;HL=YX
                ;C=MAIN_LEN
        LD A,(DE)
        LD B,A;=BYTE_LEN
        PUSH DE,BC
        CALL CONV_HDBUF
HD_REINP
        POP BC
        PUSH BC
        SLA C
        PUSH HL
        CALL INPUT_1F
        POP HL
;CONV_BUF_HD
        POP BC,DE
        PUSH DE
        INC DE
        PUSH BC
        EXX ;!!!CL
        LD DE,BUFFER
        EXX 
        LD B,0
CBHD_CKL
        EXX 
        CALL INP_2_HEX
        BIT 0,E
        EXX 
        JR NC,HD_OK
        JR Z,HD_REINP
        CP #1F-"0"
        JR NZ,HD_REINP
        JR IHD_END
HD_OK   LD (DE),A
        INC DE,B
        DEC C
        JR NZ,CBHD_CKL
IHD_END LD A,B
        AND A
        JR Z,HD_REINP
        POP BC,DE
        LD (DE),A
        JR NORM_INP

QUIT    CALL WINDOW
        DB 4,8,8,16,6,#47
        DB 19,8
        DB #F,#A0
        DB 16,10
        DB #F,8,"AS",#80+"M"
        DB 15,11
        DB #F,8,21,#A0 ;BASIC
        DB 17,12
        DB "Call ",22,0;TRDOS
        DB #A,9,14
        DW QUIT_ASM,#B0C
        DB #B,9,14
        DW QUIT_BAS,#C0A
        DB #C,9,14
        DW CALL_DOS,#A0B
QUIT_ASM                              
       IF #DFF9-$&#8000
       DS #DFF9-$
       ENDIF 
        LD A,#51
AL_ASMBANK=$-1
DISPLAY "AL_ASMBANK=",AL_ASMBANK
        LD DE,#C000
        JR QUIT_PUSK
QUIT_IM1
       LD HL,#5C3A
       LD (REG_IY),HL
        INC L
        LD (HL),#CC
        LD HL,INT_TXT
        LD (HL),#1D ;EI
QUIT_PUSK                              
        LD HL,0
QUIT_SP=$-2
;Q_PUSK_2
        OR #10
      ;LD (BANKS),A ;v5+5
       ;LD (REG_SP),HL
     ;LD (JP_SP),HL
        IM 1
;1
CALL_START
       LD BC,CANCEL-JP_RET_JR-1*256+#F7
        JR QUIT_INIT
QUIT_BAS                              
       LD HL,#2758
       LD (REG_HLX),HL
        XOR A
        LD DE,#58
        JR QUIT_IM1
CALL_DOS
       XOR A
       LD (REG_IR+1),A
        LD A,#CD
        LD (JPC_COM),A
        LD DE,#3D00
        LD A,(BANKS)
        JR QUIT_IM1

STEP_SUBR
        CALL REST_BREAK
        LD BC,(REG_PC)
        CALL IPRDIS_INS
;STEP_CALL                              
        EX DE,HL
        CALL BREAK_PSET
SS_K    LD C,-1
        JR JUMP_INIT

CALL_SUBR
        LD A,#CD
        LD (JPC_COM),A

        CALL WINDOW
        DB 5,7
        DB 15,12
        DB "CALL",0
        LD HL,#C14
        LD DE,REG_PC
        CALL INPUT_W_D
       ;LD DE,(REG_PC)
       LD E,C,D,B
       LD A,(BANKS)
      LD HL,(REG_SP)
        JR CALL_START
;18
JUMP_SUBR
        CALL WINDOW
        DB 5,7
        DB 16,12
        DB "JP",0
        LD HL,#C13
        LD DE,REG_PC
        CALL INPUT_W_D
SS_J                              
        LD C,#F7
JUMP_INIT
       XOR A
       LD (PC_CUR_COM),A
       LD B,A
       LD A,(BANKS)
        LD DE,(REG_PC)
      LD HL,(REG_SP)
;1
QUIT_INIT
      LD (JP_SP),HL
       LD HL,JP_RET_JR
       LD (HL),B
        LD HL,(RES_ADR6)
        INC HL,HL        ;+8
        LD (HL),#C3
JPC_COM=$-1
       INC HL
       LD (HL),E
       INC HL
       LD (HL),D
       INC HL
;1
RET_Q_ASM
        AND C
        LD (JP_BANK),A
        EX DE,HL

        LD A,(INT_TXT)
        RRCA                
       SBC A,A
       AND #FB
       OR #F3
        LD (EI_DI),A
        LD A,(REG_AF+1)
        LD (JUMP_A),A
        LD HL,(REG_AF-2)
        LD (JUMP_BC),HL

        LD HL,rETURN_COM
        LD BC,REND_LEN
        LDIR                

        LD C,RSTART_LEN
        LD DE,(RES_ADR)
        LDIR                

        LD (JUMP_SP),SP ;  (jP_RETURN)
;JUMP_RES_PUT                           
;REG_LOAD                               
        LD A,128-#20
        CALL ADD_IR
        LD R,A
        LD SP,REG_IX
        POP IX,IY,HL,DE,BC,AF
        EXX                
        EXA 
        POP AF
        LD I,A
        POP HL,DE,BC,AF
        EXA 
        EXX                
       ;LD SP,(REG_SP)
JP_SP=$+1
       LD SP,0
        LD A,#18
JP_BANK=$-1
        JP RESIDENT ;RES_JUMPER

TRACE   CALL WINDOW
        DB 4,7,7,17,12,#46
        DB 18,7
        DB #10,#A0
        DB 19,9,"G","O"+#80
        DB 12,10
        DB "Indicat","e"+#80
        DB 27,10
Ind_TXT DB #9C
        DB 12,11
        DB "Re",18,#A0
        DB 27,11
ReD_TXT DB #9C
;STOP IF TR-DOS
        DB 12,12,13,22,#A0
        DB 27,12
StD_TXT DB #9D

 IFN trfind
        DB 12,13,13,"Fin","d"+#80
        DB 27,13
StF_TXT DB #9C
 ENDIF 
 IFN user
        DB 12,14,13,"Use","r"+#80
        DB 27,14
StU_TXT DB #9C
 ENDIF 
        DB 12,15,13,#A0
        DB 17,15,"o","n"+#80
        DB 24,15,1
TR_STOP_A DW 0

 IFN trbank
        DB 12,16
        DB 16,14,#A0
        DB 27,16
TrB_TXT DB #9D
 ENDIF 
        DB 12,17
        DB 16,"CAL","L"+W
        DB 27,17
TrC_TXT DB #1C
        DB 0

        DB 9,#E,3
        DW TRACE_GO,#A11
        DB 10,20,2
        DW SET_IND,#B09
        DB 11,20,2
        DW SET_REDIS,#C0A
        DB 12,20,2
        DW SET_ST_DOS,#D0B
        DB 13,20,2
 IFN trfind
        DW SET_ST_FND,#E0C
        DB 14,20,2
 ENDIF 
 IFN user
        DW SET_ST_USE,#F0D
        DB 15,18,5
 ENDIF 
        DW SET_ST_ADR,#100E
        DB 16,20,2
 IFN trbank
        DW SET_TR_BAN,#110F
        DB 17,20,2
 ENDIF 
        DW SET_TR_CALL,#910

SET_ST_ADR
        LD HL,#F18
        LD DE,TR_STOP_A
        JP INPUT_W_D

STEP_Z80
        CALL RES_INP ;@@??
       ;LD A,1
       ;CALL ADD_IR
       CALL RET_STEP
        XOR A
        LD (NEW_PC+1),A
        LD (DEBUG_CNT),A
        LD (PC_CUR_COM),A
        LD (OVER_PREF),A
        LD (PREF_CNT),A
        LD (ED_DEB_COM),A
        DEC A
        LD (Debug_IF),A ;=#FF
        LD BC,(REG_PC)
;LD (OLD_PC),BC
        CALL DIS_IGN_PR
        LD A,#C5
        LD (PR),A
        LD (REG_PC),BC ;NEXT_PC
        LD A,0
DEBUG_CNT=$-1
        AND A
        JP NZ,Step_RET
;Step_Simple_Command
STEP_SIMPL
        LD A,0
OVER_PREF=$-1
        CALL ADD_IR
        LD DE,0
COM_ADR=$-2
        CALL RES_IO ;A,(DE) INC DE
 IFN trbank
        JR NO_LD_AHL
STEP_B_JR=$-1 ;NO_LD_AHL/ BN_NO_BANK
NO_LD_AHL
 ENDIF 
        CP #ED
        JR NZ,BN_OUT_A
        LD HL,(REG_HL+4);=REG_BC
        BIT 1,L     ;7FFD:b15=0,b1=0
        JR NZ,BN_NO_BANK
        BIT 7,H
        JR NZ,BN_NO_BANK

        CALL RES_IO ;A,(DE)
        DEC DE

        LD C,A
        AND #C7
        CP #41
        JR NZ,BN_NO_BANK
        XOR C
        RRCA                
        RRCA                
        RRCA                
        LD C,A
         SUB 6 ;OUT (C),0
         JR Z,OUT_0
        LD HL,BN_COM_TAB
        LD B,0
        ADD HL,BC
        LD C,(HL)
        LD HL,REG_HL
        ADD HL,BC
        LD A,(HL)
OUT_0                              
        LD HL,PREF_CNT
        INC (HL)
BN_PUT                              
        CALL BANK_PUT_M ;MASK
       JP STEP_END
             ;B C D E H L 0 A
BN_COM_TAB DB 5,4,3,2,1,0,6,7
                         ;nu
BN_OUT_A                              
        CP #D3
        JR NZ,BN_NO_BANK
        CALL RES_IO
        DEC DE
        BIT 1,A ;7FFD:b15=0,b1=0
        JR NZ,BN_NO_BANK
        LD A,(REG_AF+1)
        BIT 7,A
        JR Z,BN_PUT
BN_NO_BANK
        DEC DE
        LD BC,#FF
COM_LEN=$-1
      LD HL,(REG_SP)
      LD (JP_SP),HL
        LD HL,(RES_ADR6)
        INC HL
        CALL MEM_STS_COPY
        INC HL
        LD A,RET_STEP-JP_RET_JR-1
       ;JP RETURN_LD
      ;JR rET_Q_ASM
;1
;RETURN_LD ;HL=COM_ADR IN RES
        LD (JP_RET_JR),A
        LD A,(BANKS)
       JP RET_Q_ASM
;rET_Q_ASM

Step_RET                              
        LD DE,(REG_SP)
        SUB 3
        JR NC,Step_DJNZ

        LD HL,PREF_CNT
ED_DEB_COM NOP ;/INC (HL)
        CALL IF_PC
        JR NZ,STEP_END
        CALL RES_IO ;INC DE
        LD L,A
        CALL RES_IO ;INC DE
        LD H,A
        CALL PUT_NEW+3
        JR STEP_SP

Step_DJNZ                              
        JR NZ,Step_CLRST
        LD HL,REG_B
        DEC (HL)
        CALL NZ,PUT_NEW
        JR STEP_END

Step_CLRST ;CALL & RST                  
        SUB 3
        JR NC,Step_JP_HL
;DE=REG_SP
        JR NO_TR_CALL
STC_JR=$-1
        JP STEP_SIMPL
NO_TR_CALL
        CALL IF_PC
        JR NZ,STEP_END

        EXX                
        CALL RES_PUT
        EXX                
        LD A,B
        CALL dIO    ;INC DE
        DEC DE
        LD A,C
        CALL dIO    ;INC DE
        DEC DE
STEP_SP                              
        LD (REG_SP),DE
STP_END JR STEP_END

Step_JP_HL                              
        JR NZ,Step_JUMP
        LD HL,(REG_HL)
JP_HLX_REG=$-2
        CALL PUT_NEW+3
        JR STEP_END
Step_JUMP ;JP/JR
        CALL IF_PC
STEP_END                              
        LD A,0
PREF_CNT=$-1
;LD E,-1;NO_KEY
        JP ADD_IR

IF_PC   LD A,0
Debug_IF=$-1
        INC A
        JR Z,PUT_NEW
        DEC A
        SRL A
        INC A
        LD HL,FLAG_MASKS-1
FLAG_S  INC HL
        DEC A
        JR NZ,FLAG_S
        LD A,(REG_AF)
        JR NC,$+3
        CPL                
        AND (HL)
        RET NZ
PUT_NEW LD HL,0
NEW_PC=$-2
;SET_NEW_PC
        LD (REG_PC),HL
        EXA 
        LD A,H
        CP #3D
        JR NZ,NO_SET_DOS
;SET_DOS                                
        LD A,#20
        JR SET_DOS_JR
NO_SET_DOS                              
        CP #40
        JR C,SET_DOS_JR+3
;SET_BAS                                
        LD A,#18
SET_DOS_JR                              
        LD (DOS_JR),A
        EXA 
        RET                
;DOS_JR: JR/JR_NZ:BASIC/DOS

FLAG_MASKS                              
        DB #40,1,4,#80

 IFN drives
SET_DRIVE
        LD HL,#101;#B1C
        LD DE,DRIVE
        LD C,1
        CALL INPUT_REWR
DRIVE=$+1
        LD A,"A"
        SUB "A"
        CP 4
        JR NC,SET_DRIVE
       IFN _3d13
       LD C,1
       JP DOS
       ELSE 
        OR #3C
        LD (OUT_FF_3C),A
       LD DE,#1FF3   ;OUT (FF),A
       CALL DOS
       LD A,8
       JP OUT_1F
       ENDIF 
 ENDIF 

 IFN disdisk
DIS_DISK
        INCLUDE "71DASM",#C0
 ENDIF 
        INCLUDE "71FUN",#44
        INCLUDE "disa72",#86
        INCLUDE "biosrus",#46

       IF romfont
FNT     DB #A2,#54,#08,#A2,00
        DB #02,#02,#44,#A8,#18
        DB #28,#50,#28,#A8,#A8
        DB #2A,#55,#2A,#AA,#AA
        INCBIN "STS4FONT"
       IFN rus
        INCBIN "RUS128",#70*5
       ENDIF 
       ELSE 
       IFN rus
FNT     INCBIN "rus128-",#80*5
       ELSE 
SETKA   DB #54,#AA,#54,#AA,#54,#AA,#54
       ENDIF 
       ENDIF 
;DB "(C)STALKER STACK PLACED IN THIS MEMORY !"
        DS 40
STACK
       IFN oldres
OLD_RES
        DUP RES_LEN/2
        DB 0,0 ;#BE,#7A
        EDUP 
       ENDIF 
;MMM=#23
USER    DS -$,#C9

        ORG #FE62;#FEE4-125+5-10
        DISPLAY "FREE=",$-USER
        DISPLAY "END=",USER

AP_BUF  DW #6000
        DW #8000
        DW #C000
        DW #5D3B
        DW #5CF4
PRINT_WLAB
        JR $+2 ;0/3
PRWW    JP PRINT_W
        PUSH HL
        PUSH BC ;=WORD
        LD HL,RES_WL
        CALL RES_SET
        POP BC
        PUSH BC
        LD HL,#FEF0
AL_LSTART=$-2
DISPLAY "AL_LSTART=",AL_LSTART
        LD D,0
        EXX 
        LD HL,(BANKS)
        LD A,L
        AND #18
        OR #C3
AL_LBANK=$-1
DISPLAY "AL_LBANK=",AL_LBANK
        LD (LAB_BANK),A
        CALL RESIDENT
        EXX 
        EXA 
        PUSH HL
        CALL RES_INP
        POP DE,BC,HL
        EXA 
        JR NZ,PRWW
        SUB 3 ;!
        CP 11
        JR C,$+4
        LD A,10
        LD B,A
        LD A,(PRINT+1)
        OR A
        CALL Z,AT
;DE=LAB_TEXT_ADR in PGSYM
        LD HL,BANKS
        LD C,(HL)
        LD (HL),#18+3
LAB_BANK=$-1
PLW_CKL DEC DE
        CALL RES_IO ;A<=(DE)
        DEC DE
        CP #20
        JP M,PLW_END
        CALL PR
        DJNZ PLW_CKL
PLW_END
        LD A,C
        LD (BANKS),A
        RET 

RES_WL
        OUT (C),A
        EXX 
RWL_CKL
        LD A,(HL)
        AND #3F
        SUB 2
        JR C,RWL_END;!!!
        LD E,A
        INC HL
        LD A,C
        CP (HL)
        INC HL
        JR NZ,RWL_2
        LD A,B
        CP (HL)
        JR Z,RWL_E1
RWL_2   ADD HL,DE
        JR RWL_CKL
RWL_E1  ADD HL,DE
        XOR A
        LD A,E
RWL_END EXX 
        OUT (C),H
        RET 
;REG_RE  DW 23698
;REG_PG  DW #1010
REG_PC  DW #8000
REG_SP  DW #5AFF
REG_IX  DW #0000
REG_IY  DW #5C3A
           ;HL    DE    BC
REG_HL  DW #000,#0000,#0000
REG_B=$-1
REG_AF  DW #00
REG_IR  DW #3F00
           ;HL'   DE'   BC'  AF'
REG_HLX DW #2758,#000,#0000,#0000
ADR     DW #8000

ZONE_DELTA=7
DISPLAY "endregs=",$
        ORG #FF00
        INCLUDE "70START",#C7
IF userarea
USER=user_
ENDIF 
       DS -$,#C9
        ORG #5B20
GO      LD HL,#DB00
        LD DE,#9B00
        LD BC,#2500
        LDIR 
        LD BC,#7FFD
        LD A,#1F
        OUT (C),A
        LD HL,#9B00
        LD DE,#DB00
        LD B,#25
        LDIR 
        JP JmpFrAlm