        MAIN "STS*",#C6
;STS_BIOS STALKER'1994
;INPUT/PRINT_WORD/BYTE/(_D)
;INPUT_W
                ;HL<=YX
                ;BC<=WORD
                ;WORD=>BC=HL
                ;A=C, Cf=0
;INPUT_W_D
                ;HL<=YX
                ;(DE)<=WORD  ,DE=WORD_ADR
                ;WORD=>BC=HL=(WORD_ADR)
                ;A=C, Cf=0
;INPUT_HD
                ;HL<=YX
                ;DE<=TXT: 1F_LEN,#11,#2A ...,#CD
                ;LEN=8
                ;IN INPUT :"11 2A ... CD"
                ;BYTE_LEN=>A ,DE=TXT
;PRINT_HD
                ;ANALOG ^
;INPUT_HLIN
                ;...,LEN=4
                ;IN INPUT :"112A...CD"
                ;BYTE_LEN=>A ,DE=TXT
;NEW INKEY+KEY
                ;KEY_NUM=>E
;PRINT
                ;TXT:FROM (DE)TO (0)
                ;HL<=YX
                ;BC=NO MODIFY
                ;A=0, Cf=0
;NEW INPUT
                ;(CURSOR)=0
;NEW INPUTC
                ;(CURSOR)<=..
                ;KEY UP/DOWN

                ;A<=TXT_LEN
                ;TXT=>(BUFFER)
;AT
                ;HL<=YX
;PR
                ;A <=CHAR
;FONT COMPRESSED 6*8=>6*6

FILL_FF
 IFN windows
       LD A,-1
 ENDIF 
FILL
 IFN windows
        PUSH HL,BC
        LD D,H,E,L
        INC E
        LD B,0
        LD (HL),A
        LDIR 
        POP BC,HL
 ENDIF 
NL      INC H
        LD A,H
        AND 7
        RET NZ
        LD A,L
        ADD A,32
        LD L,A
        RET C
        LD A,H
        SUB 8
        LD H,A
        RET                
STANDART;TYPE,X,Y,L,H,COLOR
        DB 5,5,9,#15,6,0
WINDOW
        LD A,#A
        LD (STAT_ZONE),A
        POP IX
        BIT 0,(IX)
        JR Z,NO_STAND_W
        LD A,(IX+1)
        LD DE,-4
        ADD IX,DE
        PUSH IX
        LD IX,STANDART
        LD (IX+5),A
        LD A,#C9
        JR $+5
NO_STAND_W                              
       PUSH IX
       XOR A
        LD (aUTOSTART),A
        XOR A
        LD (WDR_JR),A
        LD H,A ;ATTRIBUTES
        LD C,(IX+4)
        LD L,(IX+2)
        DB ")))))
        LD E,(IX+1)
        LD D,#D8 ;/#58
MD_1=$-1
        ADD HL,DE
       IFN winatr
        LD A,(IX+5)
        AND A
        JR NZ,$+4;W_ATR_2
       ENDIF 
        LD A,#07
COLOR=$-1
       DISPLAY /T,COLOR
;W_ATR2
        LD (COLOR2),A
 IFN windows
        LD DE,#20
       IFN titl
        BIT 1,(IX)
        LD B,(IX+3)
        JR NZ,WYATR ;PANEL
        PUSH HL
       PUSH AF
        LD B,D ;INV ATR
        ADD A,A,A,A
        RL D
        ADD A,A
        RL B
        ADD A,A
        RL B
        ADD A,A
        RL B
        SRL D
        RRA 
        RRCA 
        ADD A,B
        LD B,(IX+3)
;W_INV
        LD (HL),A
        INC L
        DJNZ $-2
       POP AF
        JR W_IATR
       ENDIF 
      ;IFN winatr
WYATR   LD B,(IX+3)
        PUSH HL
;WXATR
        LD (HL),A
        INC L
        DJNZ $-2
W_IATR  POP HL
        ADD HL,DE ;Cf=0
        DEC C
        JR NZ,WYATR
      ;ENDIF
       IFN shad
       BIT 2,(IX)
       JR Z,W_CLEAR
       LD A,1
       LD B,(IX+3)
       INC HL
       LD (HL),A
       DJNZ $-2
       LD B,(IX+4)
       LD (HL),A
       SBC HL,DE ;Cf=0
       DJNZ $-3
W_CLEAR
       ENDIF 
        LD A,(IX+2)

        PUSH AF
        RRCA 
        RRCA 
        RRCA 
        AND #E0
        ADD A,(IX+1);<42!
        LD L,A
        POP AF
        AND #18
        ADD A,#40+#80;
MD_2=$-1
        LD H,A
        LD C,(IX+3)
        DEC C
       IFN titl
        BIT 1,(IX)
        JR NZ,W_PANEL
        LD B,8 ;W_WINDOW
;CLUPCKL
        XOR A
        CALL FILL
        DJNZ $-4
        LD A,(IX+4)
        DEC A
        ADD A,A,A,A,A,A
        JR W_VERT
W_PANEL
       ENDIF 
        CALL FILL_FF
        LD A,(IX+4)
        ADD A,A,A,A,A,A
        DEC A
W_VERT  DEC A
        LD B,A
        DEC C,C
WCL_CKL
        LD (HL),#80
        INC L
        XOR A
        CALL FILL
        DEC L
        LD A,1
        LD (DE),A
        DJNZ WCL_CKL
        INC C,C
        CALL FILL_FF
 ENDIF 
        POP HL
        PUSH HL
        LD DE,6 ;D=0
        ADD HL,DE
        LD (WINDOW_TXT),HL
        CALL PRINT_T_AT
;W_DATA_INIT
        EX DE,HL
        EX (SP),HL
aUTOSTART ;(OPER)
        RET 
;W_NOAUTOSTART
        BIT 1,(HL)
        POP HL
        JR NZ,W_PAN_DATA
;W_STATIC_DATA
        LD (START_ZONE),HL
STAT_CKL
        LD A,1
STAT_ZONE=$-1
        AND #1F
        LD (CUR_Y),A
        LD HL,STAT_KEYS
        LD BC,STAT_ZONE
        LD DE,STAT_CKL
        XOR A ;!
        CALL REST_ZONE
        LD HL,0
WINDOW_TXT=$-2
        CALL PRINT_T_AT
        JR STAT_CKL

INKEY
WAIT_FAST=$+1
WAIT=$+2
        LD BC,#101
WAIT_F_CKL
        PUSH BC
        LD IY,0 ;IY
;CAPS_FLAG=$-1 ;0:NO 1:CAPSLOCK
EXTKEY
       IFN onint
       LD A,201
       LD (-1),A ;  ?
       EI 
       HALT ;im1  #5C00..8, 23670/1
       DI 
       ELSE 
        LD C,#12 ;KBD_SPEED
        DJNZ $
        DEC C
        JR NZ,$-3
       ENDIF 

       CALL _28E
        JR NZ,EXTKEY ;KEY_END
       CALL _31E
        JR NC,KEY_END
        LD E,A
        LD D,#CC  ;(IY+1)
       LD C,HY ;0 ;(IY+7)
       CALL _334 ;A=ASCII SYM
        CP #80
       INC HY ;=1
        JR NC,EXTKEY
KEY_END
        POP BC
        JR NC,NEW_KEY
        LD E,A
        CP 0
LAST_KEY=$-1
        LD (LAST_KEY),A
        JR Z,NORM_KEY
NEW_KEY LD BC,#20F;A,#18
       ;LD (WAIT_FAST),A
       ;LD B,2 ;? 1 -:(
NORM_KEY
        DJNZ WAIT_F_CKL

;WAIT_FAST=$+1
        LD A,C;1
        LD (WAIT),A
       ;LD A,1 ;?
       ;LD (WAIT_FAST),A

BEEP   IFN beeps
       ;LD A,(COLOR)
       ;RRA
       ;RRA
       ;RRA
SOUND=$+1
        LD BC,#0418
      ;LD A,24
      ;XOR 0
      ;LD ($-1),A
        LD A,C
        OUT (-2),A
        DJNZ $
        XOR C
        OUT (-2),A
       ELSE 
        XOR A
        OUT (-2),A
       ENDIF 
CANCEL_TEST
       CALL _8020
        RET C
        JR CANC1

W_PAN_DATA
        LD E,(HL)
        INC HL
        LD D,(HL)
       ;INC HL
        LD (REFR),DE
       LD DE,7
       ADD HL,DE
        LD (START_ZONE),HL
       PUSH HL
       POP IX

        LD A,1
PANEL_Y=$-1
        LD (CUR_Y),A
W_DREFRESH
        LD HL,(ADR)
        LD (#FFC0),HL
        LD HL,#FFC2
        LD (TABL_ADR),HL
        CALL 0
REFR=$-2
        LD A,(CUR_Y)
        LD (PANEL_Y),A
;LD A,0
;UD8=$-1
;LD (SUD8_1),A
        LD A,(PANEL_JR)
       LD HL,FILER_END
       AND (HL)
       CALL NZ,PC_CUR_PUT
        LD A,-WDR_JR+W_DREFRESH-1
        LD (WDR_JR),A

        LD HL,PANEL_KEYS
        LD BC,PANEL_ZONE
        LD DE,REFR+2
       LD A,#B ;STAT_END
        CALL REST_ZONE
        JR W_DREFRESH
WDR_JR=$-1
CANC1   JP CANCEL

PC_CUR_PUT
        LD IY,PC_CUR_DAT
        LD HL,0
L_PC_CUR=$-2
        LD A,(COLOR)
        CALL PC_CURSOR
        LD BC,#1601 ;1C01
;FL6=$-1
       LD (PCC_SP),SP
        LD SP,BUFFER+#C0
        LD DE,(REG_PC)
PCCPCKL POP HL
        XOR A
        SBC HL,DE
        JR Z,PC_CUR_ON
        INC C
        DJNZ PCCPCKL
        LD SP,STACK-2
PCC_SP=$-2
PC_CUR_COM ;C9/0
        RET 
       ;LD SP,STACK
       POP AF
        EX DE,HL
        LD (ADR),HL ;=REG_PC
        JR W_DREFRESH+3
;
PC_CUR_ON
        LD SP,STACK-2
        LD H,A,L,C
        LD (L_PC_CUR),HL
        LD A,#38
        JP PC_CURSOR
PC_CUR_DAT=$-1
        DB 7,25
;
REST_ZONE
       LD (STAT_END),A

        LD (NO_REFR_JP),DE
        LD (KEYTAB_ADR),HL
        LD (ZONE_VAR),BC
RESTORE_Z
        LD HL,(ZONE_VAR)
        LD D,(HL)

        LD A,(HL)
        AND A
        JR NZ,ZONE_REFR
        LD HL,CUR_Y
 IFN xxx
        LD A,10
 ELSE 
        LD A,10+4
 ENDIF 
        CP (HL)
        JR NC,ZONE_REFR
        LD (HL),A
ZONE_REFR
        CALL FIND_ZONE
        LD A,#70
COLOR_CUR=$-1
        CALL PANEL_CUR
NO_REFR
       LD IX,(START_ZONE) ;v5+5
W_KEY   CALL INKEY
W_KEY_JP=$-2
        LD A,#C9
        LD (PC_CUR_COM),A
        LD A,E
       SUB "1"
       CP 5
       JP C,gOTO_AP

        LD HL,PANEL_KEYS
KEYTAB_ADR=$-2
W_KSCAN
        LD A,(HL)
        AND A
        JR Z,W_KEY
        INC HL
        LD C,(HL)
        INC HL
        LD B,(HL)
        INC HL
        CP E
        JR NZ,W_KSCAN
;ZAPUSK
        PUSH BC
        CALL RES_INP
SET_ACT_ZONE
        LD HL,(ZONE_VAR)
        LD D,(HL)

FIND_ZONE
       LD A,(FILER_END) ;!
       LD E,A

        LD BC,ZONE_DELTA ;=7
        LD IY,0
START_ZONE=$-2

FIND_Z_CKL
        LD A,(IY)
        LD (PANEL_ZONE),A
ZONE_VAR=$-2
        CP D
        RET Z
        ADD IY,BC
        JR FIND_Z_CKL

ADR_TO_ML
        LD A,ML_RETURN-CWB_JR-1
        JR SET_MR
MEM_TO_ADR
;      LD HL,(ADR)
;      LD (MTA_ADR),HL
        LD A,MTA_RETURN-CWB_JR-1
SET_MR  LD (CWB_JR),A
KEY_ENTER
        LD L,(IY+3)
        LD H,(IY+4)
        PUSH HL
ENTER_SET
       CALL RES_INP  ;FOR SET_BREAK ???
        LD A,(PANEL_Y);FOR FIND
ENTER_SET2
        LD C,A
       LD HL,BUFFER+#BE
        ADD A,A
        ADD A,L
        LD L,A
        LD A,C
;       ADD A,0
;UD4=$-1
        LD C,(HL)
        INC HL
        LD B,(HL);BC=DE=ADR MEMOR
        LD E,C   ;A=Y OF CURSOR
        LD D,B   ;Zf=0 Cf=0
        RET 

PC_TO_CUR
        CALL ENTER_SET
        LD (REG_PC),BC
AUTO_ENT
        LD E,#D
        RET 

SET_AP LD A,1
       OUT (-2),A
        CALL INKEY
        LD A,E
        SUB "1"
;;RET C
        CP 5
        RET NC
       LD HL,AP_BUF
        ADD A,A
        ADD A,L
        LD L,A

        LD DE,(ADR)
        LD (HL),E
        INC L
        LD (HL),D
        RET 
SET_USER
        LD A,(WBANK)  ;HL(STS_BANK)
        CALL BANK_PUT ;BANK_PUT_0
        LD HL,USER
        JR PUT_ADR

gOTO_AP
       LD HL,AP_BUF
        ADD A,A
        ADD A,L
        LD L,A
       LD E,(HL)
       INC L
       LD D,(HL)
       EX DE,HL
        JR PUT_ADR
MEMORYSET
        LD A,1
        CALL ENTER_SET2
        JR $+5
ENTER_ADR
        CALL ENTER_SET
        LD HL,(ADR)
        SBC HL,DE
        PUSH HL
        LD H,A,L,1
        LD A,(PANEL_JR)
        AND A
       JR Z,$+4 ;LIST_AD
        LD L,9
        CALL INPUT_W
        POP BC
        JR ADD_ADR
PAGE_UP
;       LD A,(PANEL_JR)
;       AND A
;       LD A,-22
;FLP=$-1
;       JR Z,$+5
;       ADD A,A,A,A,A,A
;       LD C,A
       LD C,(IX-6)
ADD_AC  LD B,-1
        LD HL,(ADR)
ADD_ADR ADD HL,BC
PUT_ADR LD (ADR),HL
        RET 
PAGE_DOWN
        LD HL,(NEXT_ADR)
       DEC L
       LD D,(HL)
       DEC L
       LD E,(HL)
       EX DE,HL
        JR PUT_ADR
MEM_TO_PC
        LD HL,(REG_PC)
        JR PUT_ADR
RETURN_MTA
;       LD HL,0
;TA_ADR=$-2
       LD HL,(P_BUF_ADR)
       BIT 7,L
       RET NZ
       LD E,(HL)
       INC L
       LD D,(HL)
       INC L
       LD (P_BUF_ADR),HL
       EX DE,HL
        JR PUT_ADR

KEY_LEFT
       OR E ;A=0 E=FILER_END
       JR Z,PAGE_UP
        LD D,(IY+5)
        JR KEY_LR
KEY_RIGHT
       OR E
       JR Z,PAGE_DOWN
        LD D,(IY+6)
KEY_LR
        CALL STIR_CUR
        CALL FIND_ZONE
        JR ZONRRR
KEY_UP
;E=FILER_END
        LD A,(CUR_Y)
        DEC A
        LD D,A
        JR NZ,CUR_NORM
SCROLL_DOWN
        LD C,-8
        CALL ADD_AC
        LD A,(PANEL_JR)
       AND E ;=FILER_END
       JR Z,UP_ADR
        INC HL,HL,HL
        LD B,4
DIS_SCKL
        PUSH BC
        INC HL
        PUSH HL
        LD B,H,C,L
        CALL IPRDIS_INS
        EX DE,HL
        LD HL,(#FFC0)
        AND A
        SBC HL,DE
        POP HL
        POP BC ;?
        JR Z,UP_ADR
        DJNZ DIS_SCKL
        JR PUT_ADR
UP_ADR  LD (ADR),HL
        LD (#FFBE),HL
        PUSH HL
;       LD DE,#D0C1;/#C841 DOWN
;D_11=$-1
;UDP2=$-2
       LD H,(IX-5) ;SZ YDOWN
        LD A,#D6 ;SUB N
        CALL SCROLL
       ;LD HL,(SUD2-1)
       LD H,(IX-3)
        POP BC
        CALL PANEL_LINE
        LD DE,-1
        LD HL,-3
        LD BC,-2-#FFBE;!
        LDDR 
        JR ZONRRR

CRDOWN
        CALL ENTER_SET
        INC HL
        LD (TABL_ADR),HL
;BC=CUR_ADR
        LD H,A;=Y OF CUR
       CALL REFR_L_C2
        CALL SET_ACT_ZONE
KEY_DOWN
        LD A,(CUR_Y)
;       INC A
;       CP 23
;FL4=$-1
       CP (IX-5)
        JR Z,SCROLL_UP
       INC A
 IFN xxx
        CP 11
 ELSE 
        CP 11+4
 ENDIF 
        LD D,A
        JR C,CUR_NORM
        LD A,1
PANEL_ZONE=$-1
        AND A
        JR Z,SCROLL_UP
CUR_NORM
        CALL STIR_CUR
        LD A,D
        LD (CUR_Y),A
ZONRRR
       ;LD A,2
       ;LD (WAIT_FAST),A
        POP AF ;ANTI_CALL
        JP 0
NO_REFR_JP=$-2
;
SCROLL_UP
        LD HL,(#FFC2)
        LD (ADR),HL
;       LD DE,#C021;UP
;D_12=$-1 ;???
;UDP1=$-2
       LD H,(IX-3) ;SCROLLZONE Y
        LD A,#C6 ;ADD A,N
        CALL SCROLL
       ;LD HL,(SUD3-1)
       ;DEC H
       LD H,(IX-5)
        LD BC,(BUFFER+#EC)
NEXT_ADR=$-2
        CALL PANEL_LINE
        LD HL,0
TABL_ADR=$-2
        LD (HL),C
        INC HL
        LD (HL),B
        LD HL,#FFC2
        LD DE,#FFC0
        LD B,1
      ;LD BC,46
        LDIR 
        JR ZONRRR
SCROLL
        LD (SC_OPR1),A
        LD (SC_OPR2),A

       LD L,(IX-4);SCROLLZONE X
                  ;H=SCROLLZONE Y
       CALL AT
       LD DE,(POS)

       ;LD A,(PANEL_JR)
       ;AND A
       ;LD A,#1E
       ;JR NZ,LIST_SC
       ;LD A,E
       ;ADD A,6
       ;LD E,A
       ;LD A,25
;IST_SC LD (SCROLL_LEN),A
        EXX 
        LD B,(IX-1);SCROLLZONE HEIGHT 21
;SFL3=$-1
SCR_CKL_2
        EXX 
        LD H,D
        LD A,E
SC_OPR1 ADD A,#20
        LD L,A
        JR NC,PRODSCR
        LD A,H
SC_OPR2 ADD A,8
        LD H,A
PRODSCR
        LD A,7 ;8???
SCR_CKL_1
        PUSH HL,DE
;LD BC,#1E
;SCROLL_LEN=$-2
       LD C,(IX-2) ;SCROLLZONE WIDTH
       LD B,0
        LDIR 
        POP DE,HL
        INC H,D
        DEC A
        JR NZ,SCR_CKL_1
        LD B,#F9 ;F8???
        ADD HL,BC
        EX DE,HL
        EXX 
        DJNZ SCR_CKL_2
        RET 

STIR_CUR
        LD A,0
COLOR2=$-1
PANEL_CUR
        LD HL,1
CUR_Y=$-2

PC_CURSOR
;       LD BC,0
;UD8_1=$-2
;       ADD HL,BC
        DB ")))))

        LD C,(IY+1)
        LD B,#D8 ;/58
MD_3=$-1
        ADD HL,BC
        LD B,(IY+2)
        LD (HL),A
        INC L
        DJNZ $-2
        RET 

INPUT_W_D
        EX DE,HL
        LD (WORD_ADR),HL
        LD C,(HL)
        INC HL
        LD B,(HL)
        EX DE,HL
        CALL INPUT_W ;BC=HL=WORD
        LD (0),HL
WORD_ADR=$-2
        RET 
INPUT_B_D
        LD A,(DE)
        PUSH DE
        CALL INPUT_B
        POP DE
        LD (DE),A
        RET 

ML_TO_SP
        LD BC,(REG_SP)
        XOR A
ML_RETURN
        LD (ML_ADR),BC
       ;JR $+6
       JR MLTA_RET
MTA_RETURN
       LD SP,P_BUFFER
P_BUF_ADR=$-2
       LD HL,(ADR)
       PUSH HL
       LD (P_BUF_ADR),SP
        LD (ADR),BC
MLTA_RET LD SP,STACK-2
        LD HL,#21C5
        LD (PR),HL
MTA_R2
        LD (CWB_JR),A
        RET 

CONV_W_BUF ;SOHR HL
        XOR A
        JR $+2
CWB_JR=$-1
        LD DE,BUFFER+5
        LD (DE),A
        LD E,A ;DE=BUFFER
        LD A,1
DEC_HEX=$-1
        AND A
        LD (CURSOR),A
        JR Z,DECPW
        CALL HEXP
        LD A,C
        JR PUT_2_HEX
DECPW   LD E,4 ;2byte only
        PUSH HL
        LD H,B,L,C
        LD A,B
        OR C
        JR NZ,DCPWCKL
        LD A,"0"
        LD (DE),A
        DEC E
DCPWCKL
;DIV_HL_C ;HL=HL/C
        LD BC,#110A ;DE=DE
        XOR A       ;B=0
DIV_CKL             ;A=OSTATOK
        RLA 
        SUB C
        JR NC,$+3   ;DIV_1
        ADD A,C     ;DIV_0
        CCF 
        ADC HL,HL
        DJNZ DIV_CKL

        LD C,A
        OR H,L
        LD A,"0"
        JR NZ,$+4;DEC_NUM
        LD A," "
        ADD A,C
PUT_DEC LD (DE),A
        DEC E
        LD A,E
        INC A
        JR NZ,DCPWCKL
        POP HL
        RET 
CONV_B_BUF ;SOHR HL
        LD B,A
        LD DE,BUFFER+3
        XOR A
        LD (DE),A
        LD E,A ;DE=BUFFER
        LD A,(DEC_HEX)
        AND A
        LD (CURSOR),A
        JR NZ,HEXP
;DECP
        LD E,2
        LD C,B
        LD B,A;=0
        JR DECPW+2
HEXP    LD A,"#"
        LD (DE),A
        INC E
        LD A,B
PUT_2_HEX
       PUSH AF
       RRCA 
       RRCA 
       RRCA 
       RRCA 
       CALL pUT_HEX
       POP AF
pUT_HEX
       AND 15
        ADD A,#90
        DAA 
        ADC A,#40
        DAA 
IFN small
       OR 32
ENDIF 
lixl    LD (DE),A
        INC E
        XOR A
        LD (DE),A ;EOL
        RET 

HDUMPPR            ;DE=ADDR OF HEX
;DAMP BYTES
        CALL AT    ;HL=AT YX
HDPCKL  LD A,(DE)
        AND A
        RET Z
         CALL PR2INC_DE
        LD A," "
        CALL PR
        JR HDPCKL

CONV_HDBUF ;DE=HD;HL_SOHR;C=MAIN_LEN
;B=BYTE_LEN
        EXX 
        LD DE,BUFFER
        EXX 
CHD_B_CKL
        INC DE
        LD A,(DE)
        EXX 
        CALL PUT_2_HEX
;LD (DE),A;=0=EOL
        EXX 
        DEC C
        DJNZ CHD_B_CKL
        RET Z
CHD_1F  LD A,#1F
        INC DE
        EXX 
        LD (DE),A
        INC E

       CALL lixl
       ;LD (DE),A
       ;INC E
       ;XOR A
       ;LD (DE),A

        EXX 
        DEC C
        JR NZ,CHD_1F
        RET 

PRINT_HB ;PRINT_A;HL=COORDS
        PUSH DE
        LD DE,BUFFER
        CALL PUT_2_HEX ;A=0
        LD E,A
        CALL PRINT
        POP DE
        RET 
CONV_BUF_B
        LD DE,BUFFER+2
        JR $+5

CONV_BUF_W ;BUFFER_TXT TO WORD=BC
        LD DE,BUFFER+4
        LD A,(BUFFER)
        CP "#"
        JR Z,HEXC_W_B
;DECC_W_B
        LD BC,0
        LD HL,1
DCCWCKL
        LD A,(DE) ;INP_DEC
        CP " "
        JR Z,DCC_IGN
        CP #3A
        CCF 
        RET C
        SUB "0"
        RET C
        PUSH HL;STEPEN
        PUSH BC
        LD C,L,B,H
        LD HL,0
        JR Z,zERO
MUL_CKL ADD HL,BC;UMN
        DEC A
        JR NZ,MUL_CKL
zERO    POP BC
        ADD HL,BC
        EX (SP),HL;(SP)=WORD;HL=STEP
        ADD HL,HL
        LD C,L,B,H
        ADD HL,HL
        ADD HL,HL
        ADD HL,BC;*10

        POP BC ;=WORD
DCC_IGN DEC E
        LD A,E
        INC A ;=0 IF A=E=FF
        JR NZ,DCCWCKL
        LD A,C ;Cf=0
        RET 
HEXC_W_B
        BIT 1,E
        LD E,1
        JR NZ,INP_2_HEX
        CALL INP_2_HEX
        RET C
        LD B,A ;** (HL)
INP_2_HEX
        LD HL,BYTEBUF
        CALL INP_HEX
        RET C
INP_HEX LD A,(DE)
        INC E
        SUB "0"
        RET C
        CP 10
        JR C,C_H_T2
        AND #DF
        SUB 7
        CP #A
        RET C
        CP #10
C_H_T2  CCF 
        RET C
        RLD 
        LD A,0
BYTEBUF=$-1
        LD C,A
        RET 

     ;INPUT VARS
;LENGTH DB 0      ;IN TEXT
;BUFEND DW 0      ; ...
;CURSOR DB 0      ; ...
;OUTPOS DW 0      ; ...
;C - TXT_LEN
;H - Y COORDINATE
;L - X COORDINATE

;NO INSERT
;NEW DELETE...
INPUT_1F
        LD A,#1F
        LD (ULINE),A

INPUT   XOR A
        LD (CURSOR),A

INPUTC  LD (OUTPOS),HL
        LD B,'BUFFER
        XOR A
        LD (BC),A;=EOL
        LD HL,CWB_JR
        CP (HL)
        JP NZ,MTA_R2

ACCEPT  LD HL,0
OUTPOS=$-2
        LD DE,BUFFER
        CALL PRINT
IPRINT=$-2
        CALL PUT_ICUR
        CALL INKEY ;GETKEY
        CALL PUT_ICUR ;SOHR_DE
        LD A,E
       SUB "A"
       AND #5F
       CP 26
       LD A,E
        JR NC,NO_SMALL
       XOR #20
C_L=$-1
NO_SMALL
 IFN downs
       CP #A
       JR NZ,$+7
       XOR A
       LD (CRD_JR),A
       RET 
 ENDIF 
        CP #D
        RET Z
       LD HL,ACCEPT
       PUSH HL
        LD HL,BUFFER
CURSOR=$-2
        CP 6
        JR Z,CAPS_LOCK
        CP 8
        JR Z,CRLEFT
        CP 9
        JR Z,CRRIGHT
       ;CP #C
       ;JR Z,DELETE
        CP " "
       JR C,DELETE

        LD (HL),A
CRRIGHT INC HL
        LD A,(HL)
        AND A
        JR NZ,pUT_POS
CRLEFT  INC L
        DEC L
        RET Z
        DEC L
pUT_POS LD (CURSOR),HL
        RET 

DELETE  INC L
        DEC L
        RET Z
        DEC L
        LD (HL)," "
ULINE=$-1
        JR pUT_POS

CAPS_LOCK
        LD HL,C_L
        LD A,#20
        JR xorHL

SET_DOS
        LD A,#38
        LD HL,DOS_JR
        JR xorHL

SET_DECHEX
        LD HL,DEC_HEX
XOR_1HL LD A,1
xorHL   XOR (HL)
        LD (HL),A
        RET 
DIS_LABEL
        LD HL,HHH_IGN+1;PRINT_WLAB+1
        LD A,3
       JR xorHL
       ;XOR (HL)
       ;LD (HL),A
       ;LD (HHH_IGN+1),A
       ;RET

SET_REDIS
        LD HL,REFR_OPER
       CALL XOR_1HL
        LD HL,ReD_TXT
        JR XOR_1HL
SET_IND
        LD HL,Ind_TXT
        JR XOR_1HL
SET_ST_DOS
        LD HL,StD_TXT
        JR XOR_1HL
 IFN trfind
SET_ST_FND
        LD HL,StF_TXT
        JR XOR_1HL
 ENDIF 
 IFN user
SET_ST_USE
        LD HL,StU_TXT
        JR XOR_1HL
 ENDIF 
 IFN trbank
SET_TR_BAN
        LD HL,STEP_B_JR
;STEP_B_JR=$-1;NO_LD_AHL/ BN_NO_BANK
        LD A,BN_NO_BANK-STEP_B_JR-1
        XOR (HL)
        LD (HL),A
        LD HL,TrB_TXT
        JR XOR_1HL
 ENDIF 
SET_TR_CALL
;LD A,NO_TR_CALL-STC_JR-1
;LD HL,STC_JR
;XOR (HL)
;LD (HL),A
        LD HL,TrC_TXT
        JR XOR_1HL

INPUT_REWR         ;DE=TEXT_ADR
        PUSH HL    ;XY
        PUSH DE
        PUSH HL
       EX DE,HL
       LD DE,BUFFER
       LD B,E
       LD A,C     ;TXT_LEN
       LDIR 
       LD C,A
       POP HL
       PUSH BC
        CALL INPUT
        LD HL,BUFFER
       POP BC,DE
       PUSH HL
       LDIR 
       POP DE;=BUFFER
       POP HL
PRINT   JR $+2 ;PRINT_AT_JR
        CALL AT;DE - INC
PRN_CKL LD A,(DE)
        INC DE
        CP " "
        JR Z,$+2
PR_SP_JR=$-1
        AND A ;END_OF_LINE:0
        RET Z
        CALL PR
        JR PRN_CKL
PUT_ICUR
        LD A,(CURSOR)
        LD L,A
        ADD A,A
HD_OPER NOP ;/ADD A,L
        SRL A
        LD HL,(OUTPOS)
        ADD A,L
        LD L,A
        CALL AT
        LD HL,MASK_TABL
        LD A,(JRT_POS)
        ADD A,L
        LD L,A

        LD C,(HL)
        INC HL
        LD B,(HL)
        LD HL,(POS)
        DEC H
X_CUR_CKL
        LD A,(HL)
        XOR C
        LD (HL),A
        INC L
        LD A,(HL)
        XOR B
        LD (HL),A
        DEC L
       INC H
       LD A,H
       AND 7
        JR NZ,X_CUR_CKL
        RET 

;QUICK PR 6*8,Ver 4
;(C) STALKER'96
;FNT 6*7(X),LEFT,COMPRESED
AT      PUSH HL    ;PERED PR, H<=Y 0..23
        LD A,L               ;L<=X 0..41
        ADD A,L    ;PORTIT AF
        ADD A,L
        INC A      ;SDVIG NA +2 BITA
        LD L,A
        XOR A
        SRL L
        RRA 
        SRL L
        RLA 
        RLA 
        ADD A,A
        LD (JRT_POS),A

        LD A,H
        AND 7
        RRCA 
        RRCA 
        RRCA 
        ADD A,L
        LD L,A
        LD A,H
        AND #18
        ADD A,#C1 ;#41=SCREEN
AT_MD=$-1
        LD H,A
        LD (POS),HL
        POP HL
        RET 

NORM_PR DEC C
        LD A,(HL)
        ADD A,A
        ADD A,A
        JR WRRD_OK

        LD HL,BUFFER
PR_BUF_ADR=$-2
        LD (HL),A
        INC L
        JR NZ,pR_B_OK
        INC H
 IFN disdisk
        XOR A
        LD (DD_NEXTSEC),A
 ENDIF 
pR_B_OK
        LD (PR_BUF_ADR),HL
        RET 

 IF eol
PREOL   LD A,13
        JR PR
 ENDIF 
 IFN romfont
 IFN rus
NPRROM_ LD B,H ;15
       ADD HL,HL
       ADD HL,BC
       LD BC,-15*#300+FNT-#80
       ADD HL,BC
        LD BC,#500
        JR INP_CHB
 ENDIF 
 ENDIF 
YE_WR   LD A,C
        INC C
        JR WRRD_OK
PR2INC_DE
        CALL PR_INC_DE
PR_INC_DE
        LD A,(DE)
        INC DE
      ;IF romfont
       CALL TAKE_SYM+3
     ;IF rus
     ; AND #7F
     ; CP " "
     ; JR NC,PR
     ; LD A,#1F
     ;ELSE
     ; CP " "
     ; JR NC,$+4
     ; LD A,#1F
     ;CP -14
     ;JR NC,$-4
     ;ENDIF
      ;ENDIF
PR
        PUSH BC ;#C5,#21
        LD HL,0
POS=$-2 ;    PR_BUF_ADR
PBA=PR_BUF_ADR-1-POS
DISPLAY "PBA=",-PBA,"(<#80)"
PUSH_BUF=PBA*256+#18
        EXX 
 IF romfont
       LD H,0
       LD B,H
       LD C,A
      IF rus
       ADD A,A;<128
      ENDIF 
       LD L,A
      IFN rus
       ADD HL,HL
      ENDIF 
       ADD HL,HL
       ADD HL,BC

       LD BC,FNT-140;-5*28
       ADD HL,BC
        LD BC,#500
 ELSE 
       LD H,15
      IF rus
       ADD A,A
       CP #9C*2
       JR NZ,$+4
       LD A,"-"*2
       CP #9D*2
       JR NZ,$+4
       LD A,"+"*2
       LD L,A
       ADD HL,HL
       ADD HL,HL
       INC L
       CP #A0*2
       JR NC,$+5
       LD HL,SETKA
        LD BC,#700
      ELSE 
      IF rusend
      CP #F2
      JR NC,rusNET
      ENDIF 
      IFN rushole
      CP #B3
      JR C,rusHok
      CP #DB
      JR C,rusNET
      SUB #DB-#B3
rusHok
      ENDIF 
       CP #1C
       JR NZ,$+4
       LD A,"-"
       CP #1D
       JR NZ,$+4
       LD A,"+"
        CP #20
       JR NC,$+4
rusNET LD A,"-"
       LD C,A
       ADD A,A
       LD L,A
        JR C,NPRROM_
       ADD HL,HL
       ADD HL,HL
       INC L
        LD BC,#700
      ENDIF 
 ENDIF 
INP_CHB
        LD A,(HL)
        ADD A,A
 IFN rus
       BIT 7,H
       JR Z,WRRD_OK
;IF romfont
        JR C,YE_WR
NO_WR   ADD A,A
        JR NC,WRRD_OK
        LD C,A
;ENDIF
 ELSE 
 IF romfont
        JR C,YE_WR
NO_WR   ADD A,A
        JR NC,WRRD_OK
        LD C,A
 ENDIF 
 ENDIF 
WRRD_OK
        EXX 
LAST_PR JR SDV_0
JRT_POS=$-1
        JR SDV_0
        JR SDV_1
        JR SDV_2
;SDV_3
        LD C,0
        ADD A,A
        RL C
        ADD A,A
        RL C

        LD B,A
        LD A,(HL)
        AND #FC
        OR C
        LD (HL),A
        INC L
        LD A,(HL)
        AND #F
        JR PR_2_BYTE
SDV_2   RRCA 
        RRCA 
        LD B,0
        RRA 
        RR B
        RRA 
        RR B
        XOR (HL)
        AND #F
        XOR (HL)
        LD (HL),A
        INC L
        LD A,(HL)
        AND #3F
PR_2_BYTE
        OR B
        LD (HL),A
        DEC L
PR_1_BYTE
        INC H
        EXX 
        BIT 0,C
       JP NZ,NORM_PR
        INC HL
        DJNZ INP_CHB
        INC B
        EXX 
        XOR A
        BIT 2,H
        JR NZ,LAST_PR
        POP BC

        LD HL,JRT_POS
        LD A,(HL)
        AND A
        JR NZ,JRT_NE
        LD (HL),6
        RET 

JRT_NE  DEC (HL),(HL)
INC_POS LD HL,POS
        INC (HL)
        RET 

SDV_0   XOR (HL)
        AND #FC
        JR SDV1Q
SDV_1   RRCA 
        RRCA 
        XOR (HL)
        AND #3F
SDV1Q   XOR (HL)
        LD (HL),A
        JR PR_1_BYTE
;DISPLAY "'PRINT='HDUMPPR"
;DISPLAY /T,PRINT,HDUMPPR