        MAIN "STS*",#C6
;ASSEMBLER+DISASSEMBLER
;BUG IN ASSEMBLER:RES N,r,(Iz+..)
W=#80
        IFN small
WHL="hl
WIX="ix
WIY="iy
WA="a
        ELSE 
WHL="HL
WIX="IX
WIY="IY
WA="A
        ENDIF 
ASM_BUFFER=#FF80;=ENT_TEXT
ASM_ERROR                              
        LD A,3
        OUT (-2),A
        LD BC,(ASM_ADR)
INPUT_ASM                              
        LD (ASM_ADR),BC
        XOR A
        LD (PRINT_WLAB+1),A
        CALL CL_DIS_INS

        LD DE,ASM_BUFFER
        LD HL,26
ASM_AT=$-2
        LD C,18
        CALL INPUT_REWR
        LD HL,BASE_TABL
;OPER^,COMARE..,NAME+W
        LD C,1
        LD HX,C
        LD A,#10
        LD (ASM_FLAGS),A
NAME_FIND
        LD A,(HL)
        CP -1
        JR NZ,NO_END_TBL
        LD A,HX
        ADD A,A
        CP 8
        JR Z,ASM_ERROR
        LD HX,A
        OR #10
        LD (ASM_FLAGS),A
        INC HL
        LD A,(HL)
NO_END_TBL
        AND #40
        JR NZ,NAME_CP
        DEC C
        JR NZ,NAME_INC
        LD (ASMCOM_ADR),HL
NAME_INC
        INC HL,HL
        JR NAME_FIND

NAME_CP LD DE,ASM_BUFFER
        LD C,1
NAMECP_CKL
        LD A,(DE)
        XOR (HL)
        INC HL,DE
        AND #9F
        JR Z,NAMECP_CKL
        AND 31
        JR Z,NAME_CP_OK
        DEC HL
NAME_IGN
        BIT 7,(HL)
        INC HL
        JR Z,NAME_IGN
        JR NAME_FIND
NAME_CP_OK
        LD A,(DE)
        CP 32
        JR NZ,NAME_FIND
        INC DE
        PUSH DE
FIND_OPER
        POP DE
        LD HL,0
ASMCOM_ADR=$-2
        BIT 6,(HL);NAME?
        JR NZ,NAME_IGN
        PUSH DE
        LD A,(HL)
        AND #3F
        LD B,A
        INC HL
        LD A,(HL)
        LD (ASM_COM),A
        INC HL
        LD (ASMCOM_ADR),HL
        LD HL,OPER_TABL
        INC B
        BIT 7,(HL)
        INC HL
        JR Z,$-3
        DJNZ $-5
OP_INP_CKL
        PUSH HL
        CALL OPER_INP
        POP HL
        JR C,FIND_OPER;ERROR
        BIT 7,(HL)
        INC HL
        JR Z,OP_INP_CKL
        POP DE

PUSH_ASM
        CALL RES_PUT
        LD DE,#8000
ASM_ADR=$-2
        LD HL,ASM_BYTES
        LD BC,#810
ASM_FLAGS=$-2
PUSH_CKL
        RR C
        JR NC,$+6
        LD A,(HL)
        CALL RES_IO;LD(DE),A INC DE
;NOT_PUSH
        INC HL
        DJNZ PUSH_CKL
        RET 

ASM_BYTES DB 0,#CB,#ED
ASM_DELT_1 DB 0
ASM_COM DB 0
ASM_DELT_2 DB 0
ASM_NM  DB 0,0
OPER_INP
;HL=ADR SYM IN OPER_TABL
        LD A,(HL)
        AND #7F
        CP #10
        JR NC,OPER_INP_2
        LD HL,OPER_TOK_1
        LD B,A
        XOR A
        LD C,-1
        CPIR 
        DJNZ $-2
;B=0 =MASK_COUNT
        LD A,(HL)
        LD LX,A;MASK_DIAPAZON
        INC HL
        LD C,(HL)
        INC HL
;N_OPER_SYM_2
        PUSH DE;=ADR SYM IN BUFF
NXT_OP_SYM
;HL=ADR CHECK SYM
;C=DELTA FOR MASK
;B=COUNTER FOR MASK
;LX=MASK DIAPAZON
        CALL OPER_INP_2;NO_AUTOINC HL
        LD A,B;=MASK_COUNT
        JR C,TOK_IGNORE
        BIT 7,(HL)
        INC HL
        JR Z,NXT_OP_SYM
;PUT_OPER_BITS
        POP HL;NEW DE OK
        LD HL,ASM_COM
        OR (HL)
        LD (HL),A
        RET 
TOK_IGNORE
        BIT 7,(HL)
        INC HL
        JR Z,TOK_IGNORE
        ADD A,C
        LD B,A
        AND LX;MASK_DIAPAZON
        POP DE;RESTORE OLD DE
        SCF 
        RET Z
        JR NXT_OP_SYM-1;N_OPER_SYM_2

OPER_INP_2       ;(HL)=CHECK_SYM
        LD A,(HL);(DE)=SYM
                 ;IN ASM_BUFFER
        AND #7F  ;INC DE
        CP 32    ;NO INC HL
        JR C,OPI_TOK_2
        LD A,(DE)
        XOR (HL)
        AND #5F
        INC DE
        RET Z ;OPI2_OK
        SCF 
        RET 

OPI_TOK_2       ;A=SYM
                ;DE=ADR CPSYM IN ASM_BUF
        PUSH HL,BC
        ADD A,A
        ADD A,A
        LD C,A
        LD B,0
        LD HL,OPER_TOK_2+2-#40
        ADD HL,BC
        LD BC,OPI_RET
        PUSH BC
        LD C,(HL)
        INC HL
        LD B,(HL)
        PUSH BC
        EX DE,HL
        PUSH HL
        LD DE,BUFFER
        LD BC,#600+")
        LD A,C
SYM_COPY_C
        CP (HL)
        JR Z,$+6
        LDI 
        DJNZ SYM_COPY_C
        LD (END_N_SYM),HL
        LD A,32
        LD (DE),A
        INC E ;DE>BUFFER=#FF00
        LD (DE),A
        INC E
        LD (DE),A
        INC E
        LD (DE),A
        POP DE;BEG_SYM_ADR
        RET 
OPI_RET LD DE,0
END_N_SYM=$-2
        POP BC
        JR C,$+7
        LD HL,ASM_FLAGS
        OR (HL)
        LD (HL),A
        POP HL
        RET 

INPUT_HXLX
        CALL XY_TEST
        JR NZ,IHL_OK
;IHL_CB TST
        LD A,(ASM_FLAGS)
        AND 2
        SCF 
        RET NZ
        JR IHL_OK
XY_TEST LD A,(DE);Zf=1 IF X OR Y
        AND #DF;SMALL CHAR
        INC DE
        LD C,#DD
        CP "X
        RET Z
        LD C,#FD
        CP "Y
        RET Z
        DEC DE
        LD C,0
        RET 
INPUT_HL
        LD A,(DE)
        AND #DF;SMALL CHAR
        INC DE
        CP "I
        JR Z,XY_CP
        CP "H
        SCF                
        RET NZ
        LD A,(DE)
        AND #DF;SMALL CHAR
        INC DE
        SUB "L
        SCF                
        RET NZ
        LD C,A;=0
        JR IHL_OK
XY_CP   CALL XY_TEST
        SCF                
        RET NZ
IHL_OK                              
        LD A,C
        LD (END_N_SYM),DE
        AND A
        RET Z
        LD (ASM_BYTES),A;0/DD/FD
        LD HL,ASM_FLAGS
IHL_OK2 BIT 2,(HL)
        SCF                
        RET NZ
        XOR A
        INC A
        RET                
INPUT_HL_S                              
        CALL INPUT_HL
        RET C
        RET Z
        LD A,(DE)
        SUB "+
        JR Z,$+8
        CP 2;"-
        SCF                
        RET NZ
        LD A,#44
        LD (IHS_SIGN),A
        INC DE
        LD A,#10
        CALL OPI_TOK_2
        RET C
        LD HL,ASM_FLAGS
        RES 6,(HL)
        LD A,(ASM_NM)
        NEG                
IHS_SIGN=$-1;NOP/NEG
        BIT 1,(HL)
        JR Z,$+9;PUT_D2
        LD (ASM_DELT_1),A
        SET 3,(HL)
        JR IHL_OK2
        LD (ASM_DELT_2),A
        SET 5,(HL)
        JR IHL_OK2

INPUT_E CALL CONV_BUF_W
        RET C
        XOR A
        LD H,B,L,C
        LD BC,(ASM_ADR)
        INC BC,BC
;Cf=0
        SBC HL,BC;8010-7F20=0100-10=#00F0
        RLC L
        RRC L;Cf=b7(L)
        ADC A,H
        SCF 
        RET NZ
        LD C,L
        AND A
        JR INPUT_N+4
INPUT_N
        CALL CONV_BUF_B
        LD C,A
        LD L,#40
        JR INPUT_M+5
INPUT_M
        CALL CONV_BUF_W
        LD L,#C0
        RET C
        LD (ASM_NM),BC
        LD A,L
        RET 
INPUT_RST
        CALL CONV_BUF_B
        RET C
        LD C,A
        AND #C7
        SCF 
        RET NZ
;LD A,(ASM_COM)
;OR C
;LD (ASM_COM),A
       LD HL,ASM_COM
       LD A,(HL)
       OR C
       LD (HL),A
        XOR A
        RET 

SET_HL_TXT
        LD A,#C9
        LD (PRINT_HXLX),A
        XOR A
        LD (PRINT_HL_S+1),A
        LD (XY1_BIT_JR),A
        LD HL,WHL
        LD (HLIXIY_TXT),HL
        RET 
DIS_IGN_PR
        LD A,#C9
        LD (PR),A
DIS_LINE
       LD A,(HHH_IGN+1)     ;;
       LD (PRINT_WLAB+1),A  ;;
        PUSH HL
        LD A,H
        LD (NAME_PR_AT+2),A
        PUSH BC
        LD A,(PR)
        CP #C5
        JR NZ,DIS_NO_PR
        LD L,9
        PUSH HL
        CALL AT
;DIS_CLEAR
        LD HL,(POS)
 IFN windows
        LD BC,#700
 ELSE 
        LD BC,#800
        DEC H
 ENDIF 
DIS_CLYCKL
        LD E,L
DIS_CLXCKL
        LD (HL),C
        INC L
        LD A,L
        AND #1F
        JR NZ,DIS_CLXCKL
 IFN windows
        DEC L
        INC (HL)
 ENDIF 
        LD L,E
        INC H
        DJNZ DIS_CLYCKL
        POP HL,BC
        PUSH BC
        CALL PRINT_WLAB
DIS_NO_PR
        POP BC
        CALL DIS_INSIDE
;DE=OLD_ADR
        EX (SP),HL;(SP):NEW_ADR
;HL=PR_AT
        LD L,#F
        CALL AT
        EX (SP),HL
        PUSH HL;=NEWADR
        XOR A
        SBC HL,DE
        LD A,L
        LD BC,-5
        ADD HL,BC
        LD B,A
        JR NC,HHH_PRINT
        LD A,L
        INC A
        LD (OVER_PREF),A
        POP DE
        PUSH DE
        DEC DE,DE,DE,DE
        LD HL,JRT_POS
        LD (HL),0
        LD A,".
        CALL PR
        LD B,4
HHH_PRINT
        LD (COM_ADR),DE
        LD A,B
        LD (COM_LEN),A
HHH_CKL CALL RES_IO;A,(DE),EXX?
HHH_IGN JR $+2
        CALL PRINT_HB;DE-SOHR
        DJNZ HHH_CKL
        XOR A
        LD (PRINT+1),A
        POP BC ;NEW_ADR
        POP HL
        RET 
CL_DIS_INS
        LD HL,ASM_BUFFER
FILLBUF LD (HL),32
        INC L
        LD A,L
        CP 18+W
        JR NZ,FILLBUF
        LD HL,PUSH_BUF
        JR IDIS_INS
IPRDIS_INS
        LD HL,#21C9
IDIS_INS
        LD (PR),HL
        CALL DIS_INSIDE
        LD BC,#21C5
        LD (PR),BC
        XOR A
        LD (PRINT+1),A
        RET 
DIS_INSIDE
;BC=DIS_ADR
        PUSH BC
        CALL SET_HL_TXT
        INC A
        LD (DEST_N),A;=1
        LD A,#23
        LD (NO_INC_FCB),A
        LD A,#3A
RE_DISASM
        LD (INIT_HX_LX),A
        POP DE
        PUSH DE
        EXX 
        LD A,OPER_END-PR_XYCB_JR-1
        LD (PR_XYCB_JR),A
        LD HL,ASM_BUFFER
DIS_PR_ADR=$-2
        LD (PR_BUF_ADR),HL
        LD DE,REG_HL
CODE_FIND
        LD (JP_HLX_REG),DE
        CALL RES_DIS0
        CP #CB
        JR NZ,PREFIX_ED
PREFIX_CB
        LD HL,CB_TABL
        JR DIS_GO
PREFIX_ED
        CP #ED
        JR NZ,PREFIX_DD
        CALL SET_HL_TXT
        LD A,#34;INC(HL)
        LD (ED_DEB_COM),A
        LD HL,ED_TABL
DIS_GO  EXX 
        INC DE
        EXX 
        CALL RES_DIS0;C=A
        JR CODE_FIND2
PREFIX_DD
        LD DE,REG_IX
        LD HL,WIX
        CP #DD
        JR Z,SETXY
;PREFIX_FD
        CP #FD
        JR NZ,NO_PREFIX
        LD DE,REG_IY
        LD HL,WIY
SETXY   LD (HLIXIY_TXT),HL
        LD HL,PREF_CNT
        INC (HL)
        LD A,GX_PR-PRINT_HL_S-2
        LD (PRINT_HL_S+1),A
        LD A,2
        CALL RES_DIS
        LD (DELTA),A
        EXX 
        INC DE
        EXX 
        CALL RES_DIS0 ;C=A
        CP #CB
        LD A,#3A
INIT_HX_LX=$-1
        LD (PRINT_HXLX),A
        JR NZ,CODE_FIND ;DE SOHR
        LD A,#C9
        LD (PRINT_HXLX),A
        XOR A
        LD (NO_INC_FCB),A
        LD (PR_XYCB_JR),A;",(IX+3)
        EXX 
        INC DE
        EXX 
        INC A;=1
        CALL RES_DIS
        AND #C0
        CP #40
        LD A,PR_CB_XY-XY1_BIT_JR-1
        JR Z,$+3;BIT_ON
        XOR A
        LD (XY1_BIT_JR),A
        JR PREFIX_CB
NO_PREFIX
        LD C,A
        LD HL,BASE_TABL
CODE_FIND2
        LD B,0 ;Debug_Counter

;  00..63 -CODES(00..33)
;X=64..127-CHARS(65..90)
;  128+X - Debug Flag
        BIT 6,(HL)
        JR Z,NOT_NAME
        BIT 5,(HL)
        JR Z,NAMIGN_CKL
        INC B
NAMIGN_CKL
        BIT 7,(HL)
        INC HL
        JR Z,NAMIGN_CKL
NOT_NAME
       LD D,0
       LD E,(HL)
        PUSH HL
       LD HL,OPER_M_TAB
       ADD HL,DE
        LD A,C
        AND (HL)
        POP HL
        INC HL
        CP (HL)
        INC HL
        JR NZ,CODE_FIND2+2
        PUSH DE
        EX DE,HL
NAM_FIND
        LD A,(DE)
        AND #40
        JR NZ,NAME_PR_AT
        INC DE,DE
        JR NAM_FIND
NAME_PR_AT
        LD HL,#118;NAME_D
        CALL AT
        LD A,(DE)
        AND 32
        JR Z,NAM_CKL;SIMPLE COMMAND
        INC B
        LD A,B
        LD (DEBUG_CNT),A
NAM_CKL
        LD A,(DE);BIG CHAR
        AND #7F
IFN small
       OR 32
ELSE 
        CP "a
        JR C,$+4;NO_CHR_CORRECT
        AND #5F
ENDIF 
        CALL PR
        LD A,(DE)
;AND #80
       RLA 
        INC DE
       JR NC,NAM_CKL
        LD LX,1 ;+LEN_CODE
        LD A,3
        LD (PRINT+1),A

        LD A,PRN_CKL-PR_SP_JR-1
        LD (PR_SP_JR),A
        LD A,32
DD_R_SYM=$-1
        CALL PR
        POP BC;C=COUNTER FOR OPER_TABL
        LD HL,OPER_TABL
        LD B,C
        INC B
        BIT 7,(HL)
        INC HL
        JR Z,$-3
        DJNZ $-5
OP_PR_CKL
        LD A,(HL)
        AND #7F
        CP 3
        JR C,$+2
XY1_BIT_JR=$-1
        PUSH HL
        CALL OPER_PR
        POP HL
        BIT 7,(HL)
        INC HL
        JR Z,OP_PR_CKL
        JR OPER_END
PR_XYCB_JR=$-1;0/OPER_END-PR_XYCB_JR-1
        LD A,",
        CALL PR
PR_CB_XY
        LD A,"(
        CALL PR
        CALL PRINT_XY_P
        LD A,")
        CALL PR
OPER_END
       LD A,(HHH_IGN+1)
       LD (PRINT_WLAB+1),A
        XOR A
        LD (PR_SP_JR),A
        EXX 
        EX DE,HL
        LD E,LX
        LD D,A;=0
        ADD HL,DE;=NEW_ADR
        POP DE;=OLDADR
RESTORE_IX
       LD IX,(START_ZONE);!!!
        RET 
RES_DIS0
        EXX 
        PUSH DE
        JR RE_DIS
RES_DIS EXX ;DE'=ADR_DIS-1
        PUSH DE
        INC DE
        DEC A
        JR NZ,$-2
RE_DIS  CALL RES_IO
        POP DE
        EXX 
        LD C,A
        RET 
OPER_TOK_1
        DB 0,7,1
IFN small
        DB "b"+W,"c"+W,"d"+W,"e"+W
        DB "h",#15+W,"l",#15+W
        DB "(",#14,")"+W,"a"+W
        DB 0,#38,8
        DB "b"+W,"c"+W,"d"+W,"e"+W
        DB "h",#15+W,"l",#15+W
        DB "(",#14,")"+W,"a"+W

        DB 0,#30,#10,"b","c"+W
        DB "d","e"+W
        DB #13+W,"s","p"+W

        DB 0,#30,#10,"b","c"+W
        DB "d","e"+W
        DB #13+W,"a","f"+W

        DB 0,#38,8
        DB "(bc),","a"+W
        DB "a,(bc",")"+W
        DB "(de),","a"+W
        DB "a,(de",")"+W
        DB "(",#11,"),",#13+W
        DB #13,",(",#11,")"+W
        DB "(",#11,"),","a"+W
        DB "a,(",#11,")"+W

        DB 0,#18,8
        DB "n","z"+W,"z"+W
        DB "n","c"+W,"c"+W
        DB 0,#38,8
        DB "n","z"+W,"z"+W
        DB "n","c"+W,"c"+W
        DB "p","o"+W,"p","e"+W
        DB "p"+W,"m"+W

        DB 0,#38,8
        DB "0"+W,"1"+W,"2"+W,"3"+W
        DB "4"+W,"5"+W,"6"+W,"7"+W

        DB 0,#18,8
        DB "i,","a"+W,"r,","a"+W
        DB "a,","i"+W,"a,","r"+W
ELSE 
        DB "B"+W,"C"+W,"D"+W,"E"+W
        DB "H",#15+W,"L",#15+W
        DB "(",#14,")"+W,"A"+W
        DB 0,#38,8
        DB "B"+W,"C"+W,"D"+W,"E"+W
        DB "H",#15+W,"L",#15+W
        DB "(",#14,")"+W,"A"+W

        DB 0,#30,#10,"B","C"+W
        DB "D","E"+W
        DB #13+W,"S","P"+W

        DB 0,#30,#10,"B","C"+W
        DB "D","E"+W
        DB #13+W,"A","F"+W

        DB 0,#38,8
        DB "(BC),","A"+W
        DB "A,(BC",")"+W
        DB "(DE),","A"+W
        DB "A,(DE",")"+W
        DB "(",#11,"),",#13+W
        DB #13,",(",#11,")"+W
        DB "(",#11,"),","A"+W
        DB "A,(",#11,")"+W

        DB 0,#18,8
        DB "N","Z"+W,"Z"+W
        DB "N","C"+W,"C"+W
        DB 0,#38,8
        DB "N","Z"+W,"Z"+W
        DB "N","C"+W,"C"+W
        DB "P","O"+W,"P","E"+W
        DB "P"+W,"M"+W

        DB 0,#38,8
        DB "0"+W,"1"+W,"2"+W,"3"+W
        DB "4"+W,"5"+W,"6"+W,"7"+W

        DB 0,#18,8
        DB "I,","A"+W,"R,","A"+W
        DB "A,","I"+W,"A,","R"+W
ENDIF 
        DB 0,#18,8
        DB "0"+W,"0","*"+W
        DB "1"+W,"2"+W
OPER_TOK_2
;#10 DB "N"
        DW PRINT_N,INPUT_N
;#11 DB "M"
        DW PRINT_M,INPUT_M
;#12 DB "S"
        DW PRINT_RST,INPUT_RST
;#13 DB "W"
        DW PRINT_HL,INPUT_HL
;#14 DB "G"
        DW PRINT_HL_S,INPUT_HL_S
;#15 DB "x"
        DW PRINT_HXLX,INPUT_HXLX
;#16 DB "E"
        DW PRINT_E,INPUT_E
OPER_M_TAB
;COM_MASK
        DB #FF;0 N0...
        DB #F8;1 R1
        DB #C7;2 R2
        DB #FF;3 N
        DB #C0;4 R,R
        DB #F8;5 A,R
        DB #C7;6 R,N
        DB #FF;7 A,N
        DB #CF;8 BC/DE/HL/SP,NN
        DB #CF;9 HL,BC/DE/HL/SP
        DB #C7;10A/HL/(),A/HL/(BC)/(DE)/(NN)
        DB #CF;11BC/DE/HL/AF
        DB #CF;12BC/DE/HL/SP
        DB #FF;13A,(N)
        DB #FF;14(N),A
        DB #C7;15N[RST]
        DB #FF;16NN
        DB #FF;17NN(PC+e)
        DB #C7;18c
        DB #C7;19c,NN
        DB #E7;20j,NN(PC+e)
        DB #C0;21b,r1
        DB #C7;22r,(C)
        DB #C7;23(C),r/0
        DB #CF;24RR,(NN)
        DB #CF;25(NN),RR
        DB #E7;26A/I/R,A/I/R
        DB #C7;27IM 0/*0/1/2;E7
        DB #FF;28SP,HL/IX/IY[LD]
        DB #FF;29(SP),HL[EX]
        DB #FF;30(HL)/(IX)/(IY)[JP]
        DB #C7;31NEG
        DB #CF;32RETN/I
        DB #FF;33OUT (C),0
        DB #00;34NOP*
;DB #C7;35IM 0*/0**/1*/2*
OPER_TABL DB #80 ;!
        DB " "+W           ;0 N0...
        DB 1+W             ;1 r
        DB 2+W             ;2 R
        DB #10+W           ;3 N
        DB 2,",",1+W       ;4 R,r
        DB WA,",",1+W      ;5 A,R
        DB 2,",",#10+W     ;6 R,N
        DB WA,",",#10+W    ;7 A,N
        DB 3,",",#11+W     ;8 BC/DE/W/SP,NN
        DB #13,",",3+W     ;9 W,BC/DE/W/SP
        DB 5+W             ;10A/HL/(),A/HL/(BC)/(DE)/(NN)

        DB 4+W             ;11BC/DE/HL/AF
        DB 3+W             ;12BC/DE/HL/SP
        DB WA,",(",16,")"+W;13A,(N)
        DB "(",16,"),",WA+W;14(N),A
        DB #12+W           ;15 N RST
        DB #11+W           ;16 NN
        DB #16+W           ;17 NN(PC+e)
        DB 7+W             ;18 c
        DB 7,",",#11+W     ;19 c,NN
        DB 6,",",#16+W     ;20 j,NN(PC+e)
        DB 8,",",1+W       ;21 b,r
        DB 2,",(C",")"+W   ;22 r,(C)
        DB "(C),",2+W      ;23 (C),r/0
        DB 3,",(",#11,")"+W;24RR,(NN)
        DB "(",#11,"),",3+W;25(NN),RR
        DB 9+W             ;26 I/R/A/A,A/A/I/R ;!!!
        DB 10+W            ;27 IM 0/0*/1/2
IFN small
        DB "sp,",#13+W     ;28 SP,HL/IX/IY[LD]
        DB "(sp),",#13+W   ;29 (SP),HL[EX]
ELSE 
        DB "SP,",#13+W
        DB "(SP),",#13+W
ENDIF 
        DB "(",#13,")"+W   ;30(HL/IX/IY)JP]

        DB " "+W           ;31 [NEG]*
        DB " "+W           ;32 [RET]*
        DB "(C),","*"+W    ;33 [OUTF]
        DB "*"+W           ;34 [NOP]*

;OPERAND NUMBER,CHECK,NAME+DebugBit5
dd=#20 ;DEBUG BIT
BASE_TABL
        DB 0,0,"NO","P"+W
        DB 0,#76,"HAL","T"+W
        DB 4,#40
;LD r,r
        DB 6,6
;LD r,n
        DB 8,1
;LD BC/DE/HL/SP,NN
        DB 10,2
;LD A/HL/(),(BC)/(DE)/()
        DB 28,#F9,"L","D"+W
;LD SP,HL
        DB 5,#80
;ADD A,r
        DB 7,#C6
;ADD A,N
        DB 9,9,"AD","D"+W
;ADD HL,BC/DE/HL/SP
        DB 5,#88
;ADC A,r
        DB 7,#CE,"AD","C"+W
;ADC A,N
        DB 1,#90
;SUB r
        DB 3,#D6,"SU","B"+W
;SUB N
        DB 5,#98
;SBC A,r
        DB 7,#DE,"SB","C"+W
;SBC A,N
        DB 1,#A0
;AND r
        DB 3,#E6,"AN","D"+W
;AND N
        DB 1,#A8
;XOR r
        DB 3,#EE,"XO","R"+W
;XOR N
        DB 1,#B0
;OR r
        DB 3,#F6,"O","R"+W
;OR N
        DB 1,#B8
;CP r
        DB 3,#FE,"C","P"+W
;CP N
        DB 12,3
;INC rr
        DB 2,4,"IN","C"+W
;INC r
        DB 12,#B
;DEC rr
        DB 2,5,"DE","C"+W
;DEC r
;DD_R_SYM2=$+4
        DB 0,8,"EX","A"+W
;DD_R_SYM3=$+4
        DB 0,#EB,"EX","D"+W
        DB 29,#E3,"E","X"+W
;EX (SP),HL
        DB 0,#D9,"EX","X"+W
        DB 11,#C5,"PUS","H"+W
;PUSH AF/BC/DE/HL
        DB 11,#C1,"PO","P"+W
;POP AF/BC/DE/HL
        DB 0,#27,"DA","A"+W
        DB 0,#2F,"CP","L"+W
        DB 0,#37,"SC","F"+W
        DB 0,#3F,"CC","F"+W
        DB 0,#F3,"D","I"+W
        DB 0,#FB,"E","I"+W
        DB 0,7,"RLC","A"+W
        DB 0,#F,"RRC","A"+W
        DB 0,#17,"RL","A"+W
        DB 0,#1F,"RR","A"+W

        DB 0,#C9,dd+"R","E","T"+W
        DB 18,#C0,dd+"R","E","T"+W
;RET c
        DB 17,#10,dd+"D","JN","Z"+W
;DJNZ e
        DB 16,#CD
;CALL NN
        DB 19,#C4,dd+"C","AL","L"+W
;CALL c,NN
        DB 15,#C7,dd+"R","S","T"+W
;RST N
        DB 30,#E9,dd+"J","P"+W
;JP (HL)
        DB 17,#18
;JR e
        DB 20,#20,dd+"J","R"+W
;JR c,e
        DB 16,#C3
;JP NN
        DB 19,#C2,dd+"J","P"+W
;JP c,NN
        DB 13,#DB,"I","N"+W
;IN A,(N)
        DB 14,#D3,"OU","T"+W
;OUT (N),A
        DB -1
CB_TABL
        DB 1,0,"RL","C"+W
;RLC r
        DB 1,8,"RR","C"+W
;RRC r
        DB 1,#10,"R","L"+W
;RL r
        DB 1,#18,"R","R"+W
;RR r
        DB 1,#20,"SL","A"+W
;SLA r
        DB 1,#28,"SR","A"+W
;SRA r
        DB 1,#30,"SL","I"+W
;SLI r
        DB 1,#38,"SR","L"+W
;SRL r
        DB 21,#40,"BI","T"+W
;BIT b,r1
        DB 21,#80,"RE","S"+W
;RES b,r1
        DB 21,#C0,"SE","T"+W
;SET b,r1
        DB -1
ED_TABL
        DB 0,#70,"IN","F"+W
        DB 22,#40,"I","N"+W
;IN r,(C)
        DB 33,#71
;OUT (C),0
        DB 23,#41,"OU","T"+W
;OUT (C),r
        DB 9 ,#42,"SB","C"+W
;SBC HL,BC/DE/HL/SP
        DB 9 ,#4A,"AD","C"+W
;ADC HL,BC/DE/HL/SP
        DB 24,#4B
;LD RR,(NN)
        DB 25,#43
;LD (NN),RR
        DB 26,#47,"L","D"+W
;LD A/I/R,A/I/R
        DB 31,#44,"NE","G"+W

        DB 27,#46,"I","M"+W
;IM 0/0*/1/2
        DB 0,#67,"RR","D"+W
        DB 0,#6F,"RL","D"+W
        DB 0,#A0,"LD","I"+W
        DB 0,#A1,"CP","I"+W
        DB 0,#A2,"IN","I"+W
        DB 0,#A3,"OUT","I"+W
        DB 0,#A8,"LD","D"+W
        DB 0,#A9,"CP","D"+W
        DB 0,#AA,"IN","D"+W
        DB 0,#AB,"OUT","D"+W
        DB 0,#B0,"LDI","R"+W
        DB 0,#B1,"CPI","R"+W
        DB 0,#B2,"INI","R"+W
        DB 0,#B3,"OTI","R"+W
        DB 0,#B8,"LDD","R"+W
        DB 0,#B9,"CPD","R"+W
        DB 0,#BA,"IND","R"+W
        DB 0,#BB,"OTD","R"+W
        DB 32,#45,dd+"R","ET","N"+W
        DB 32,#4D,dd+"R","ET","I"+W

        DB 34,0    ,"NO","P"+W
;NOP *
        DB -1
OPER_PR
;A=COD_SYM,HL PORTIT
        CP #10
        JR NC,OPER_PR_2
        LD HL,OPER_TOK_1
        LD B,A
        LD C,#FE
        AND C
        SUB 6
        LD A,#C9
        JR NZ,$+4
        LD A,#78
        LD (DEL_FL_OP),A
        XOR A
        CPIR 
        DJNZ $-2
        CALL RES_DIS0
        AND (HL)
        INC HL
        JR Z,OPT_PR
        LD C,(HL)
OPT_CKL INC HL
        BIT 7,(HL)
        JR Z,OPT_CKL
        INC B
        SUB C
        JR NZ,OPT_CKL
OPT_PR
        INC HL
        LD A,(HL);PR_7_BIT
        AND #7F
        PUSH HL
        CALL OPER_PR_2
        POP HL
        BIT 7,(HL)
        JR Z,OPT_PR
DEL_FL_OP ;C9/78
        LD A,B
        LD (Debug_IF),A
        RET 
OPER_PR_2 CP 32
        JR NC,pR_J1
        ADD A,A,A,A
        LD HL,OPER_TOK_2-#40
       LD E,A,D,0
       ADD HL,DE
       LD E,(HL)
       INC HL
       LD D,(HL)
       EX DE,HL
       JP (HL)
PRINT_HXLX
        LD A,(HLIXIY_TXT+1)
        JR pR_J1
PRINT_HL_S
        JR $+2;GX_PR
PRINT_HL
        LD DE,WHL
HLIXIY_TXT=$-2
        LD A,E
        CALL PR
        LD A,D
pR_J1   JP PR
GX_PR
        LD HL,PRINT_HXLX
        LD A,#C9
        CP (HL)
;FOR COM.vida LD L,(IX+3)
        JR Z,PRINT_XY_P
        POP HL;OPER_PR_2
        POP HL;HL1
        POP HL;OPER_PR
        POP HL;HL2
        JP RE_DISASM ;JR #C9=>(INIT_HX_LX)
PRINT_XY_P
        LD A,OPER_END-PR_XYCB_JR-1
;NO ",(IX+2)"
        LD (PR_XYCB_JR),A
        CALL PRINT_HL
        LD A,2
        LD (DEST_N),A
        LD C,0
DELTA=$-1
        BIT 7,C
        LD A,"+"
        JR Z,$+7;PR_SIGN
        XOR A
        SUB C
        LD C,A
        LD A,"-"
;PR_SIGN
        CALL PR
        LD A,C
        CALL PRINT_B
        INC LX
NO_INC_FCB=$-1
        RET 
PRINT_N
        INC LX
        LD A,1
DEST_N=$-1
        CALL RES_DIS
PRINT_N2
PRINT_B
        CALL CONV_B_BUF
;LD (BUFFER+3),A;=0
        JR PRINT_BUF
PRINT_W;PRINT_BC
        CALL CONV_W_BUF
PRINT_BUF;HL=YX
        LD DE,BUFFER
        CALL PRINT
       LD L,C,H,B
       LD A,C
        RET 
INPUT_B
        LD B,A
INPUTB2 LD A,B
        PUSH HL,BC
        CALL CONV_B_BUF
        LD C,3
        CALL INPUTC
        CALL CONV_BUF_B
        POP BC,HL
        JR C,INPUTB2
        LD C,A
        JR PRINT_BUF
INPUT_W
;INPUT_BC,PRINT_BC;HL=YX
        PUSH BC
INPUTW2 POP BC
        PUSH BC,HL
        CALL CONV_W_BUF
        LD C,5
        CALL INPUTC
        CALL CONV_BUF_W
        POP HL
        JR C,INPUTW2
        POP AF
        JR PRINT_BUF
PRINT_RST
        CALL RES_DIS0
        AND #38
        LD H,0 ;@@@
        LD L,A
        LD (NEW_PC),HL
        JR PRINT_N2
PRINT_M
        INC LX
        LD A,2
        CALL RES_DIS
        LD B,A
        LD A,1
        CALL RES_DIS
;LD C,A
PRINT_NN2
        INC LX
        LD (NEW_PC),BC
        JR PR_W

 IFN disdisk
PR_W_JR=$-1
        CALL PRINT_LW
        RET NC
        JR PR_W;Cf=1
PRINT_LW
     LD HL,(ddbuf2)
 ENDIF 

LAB_CKL LD A,(HL)
        INC HL
       LD E,(HL)
       INC HL
       LD D,(HL)
       INC HL
       EX DE,HL
        AND A
       SCF 
       RET Z ;NO_LAB
       AND A
        SBC HL,BC
        EX DE,HL
        JR NZ,LAB_CKL
PRINT_LW_2
        LD A,"L"
        LD (HEXP+1),A
        CALL PR
PR_W    CALL PRINT_WLAB
        LD A,"#"
        LD (HEXP+1),A
        RET ;Cf=;Zf=1
PRINT_E;???!!!VIDA #FD#FD#18#02...
        EXX  ;KUDA ? ^ OR  ^
        PUSH DE
        EXX 
        POP HL
        INC HL,HL
        LD A,1
        CALL RES_DIS ;C=A
        RLCA 
        LD B,-1
        JR C,$+3 ;PRNNE_3
        INC B
        ADD HL,BC
        LD C,L,B,H
        JR PRINT_NN2
;RESIDENT
;LD A,(DE)
;RET
;RESIDENT_1
;LD (DE),A
;RET
;COMMAND_ADR DW 0
;COMMAND_LEN NOP
;NEW_PC DW 0
;ASM_BUFFER