;LAST UPDATE: 20.08.2019 savelij
 
 
 
;ОПИСАТЕЛЬ ОКНА (АДРЕС В IX)
 
;+00 X КООРДИНАТА
 
;+01 Y КООРДИНАТА
 
;+02 V ВЫСОТА
 
;+03 H ШИРИНА
 
;+04 C ЦВЕТ
 
;+05 C ЦВЕТ КУРСОРА
 
;+06 F ФЛАГОВЫЙ
 
;+07 N НОМЕР ПУНКТА В ОКНЕ
 
;  БИТ 7-0 => 8-9 ТЕКУЩИЙ ПУНКТ,
 
;        1 => 8-9 АДРЕС ХРАНЕНИЯ
 
;      6-0 => A-B КОЛИЧЕСТВО ПУНКТОВ
 
;        1 => A-B АДРЕС ХРАНЕНИЯ
 
;+08 | ТЕКУЩИЙ
 
;+09 | ПУНКТ МЕНЮ
 
;+0A : КОЛИЧЕСТВО
 
;+0B : ПУНКТОВ
 
;+0C | АДРЕС
 
;+0D | ТЕКСТА
 
;+0E : СПИСОК АДРЕСОВ
 
;+0F : ПОДПРОГРАММ
 
;+10 | АДРЕС СПИСКА АКТИВНЫХ
 
;+11 | ЗОН ДЛЯ МЫШИ
 
;+12 : АДРЕС СПИСКА
 
;+13 : ГОРЯЧИХ КЛАВИШ
 
 
 
;ФОРМАТ ФЛАГОВОГО БАЙТА ОКНА
 
;IX+6
 
;7-0-НЕТ, 1-ЕСТЬ НИЖНИЙ ЗАГОЛОВОК
 
;6-0-С РАМКОЙ,1-БЕЗ РАМКИ
 
;5-0-НЕТ, 1-ЕСТЬ ВЕРХНИЙ ЗАГОЛОВОК
 
;4-0-ЕСТЬ ТЕКСТ, 1-НЕТ
 
;3
 
;2-
 
;1-
 
;0-
 
 
 
;РАСКЛАДКА БАЙТ ВЫДЕЛЕНИЙ. НА ДАННЫЙ МОМЕНТ НЕ ВСЕ ПЕРЕНЕСЕНО ИЗ СТАРОЙ РЕАЛИЗАЦИИ
 
;+0 ФЛАГОВЫЙ
 
;    7 ПРИ АКТИВНОСТИ УСТАНОВЛЕН
 
;    6 УСТАНОВЛЕН, НЕ ВЫДЕЛЯЕТСЯ
 
;    5 УСТАНОВЛЕН, ВЫЗОВ ВЕКТОРА
 
;    4
 
;    3 \
 
;    2  } ФОРМА КУРСОРА
 
;    1  } ПРИ ПОПАДАНИИ
 
;    0 /
 
;+1 X КООРДИНАТА
 
;+2 Y КООРДИНАТА
 
;+3 V ВЫСОТА
 
;+4 H ШИРИНА
 
;+5 K КОД КЛАВИШИ
 
 
 
;ВНУТРЕННИЙ ВЫЗОВ РИСОВАНИЯ ОКНА НА ZX ЭКРАНЕ
 
IWINW           LD A,NUM_ZXSCR
 
                JR IWINW0
 
 
 
;ВНУТРЕННИЙ ВЫЗОВ ДЛЯ РИСОВАНИЯ ОКНА НА ТЕКСТОВОМ ЭКРАНЕ
 
ITWINW          LD A,NUM_TXTSCR
 
;ВНЕШНИЙ ВЫЗОВ ДЛЯ РИСОВАНИЯ ОКНА НА ТЕКСТОВОМ ЭКРАНЕ
 
IWINW0          EX AF,AF'
 
                XOR A
 
                LD (PAGE4READ),A
 
                EX AF,AF'
 
                LD HL,FLAGS
 
                SET B_WIN_INT_EXT,(HL)
 
                JR WINW0
 
 
 
;ВНЕШНИЙ ВЫЗОВ ДЛЯ РИСОВАНИЯ ОКНА НА ZX ЭКРАНЕ
 
WINW            LD HL,FLAGS
 
                RES B_WIN_INT_EXT,(HL)
 
                LD IX,(RREG_IXL)
 
                LD A,(R_77)
 
                AND 7
 
WINW0           CP NUM_ZXSCR
 
                JP Z,WINW_ZX
 
                CP NUM_TXTSCR
 
                RET NZ
 
                EXX
 
                LD BC,WIN_P6
 
                LD A,(PAGE4READ)
 
                OUT (C),A
 
                EXX
 
                LD D,(IX+0)                     ;X
 
                LD E,(IX+1)                     ;Y
 
                LD C,(IX+4)                     ;ЦВЕТ ОКНА
 
                EXX
 
                LD H,(IX+2)                     ;V
 
                LD L,(IX+3)                     ;H
 
                LD D,(IX+6)                     ;FLAGS
 
                XOR A
 
                OUT (C),A
 
                LD B,HIGH (WIN_P3)
 
                LD A,0XF7
 
                OUT (C),A
 
                EXX
 
                PUSH DE
 
                LD B," "
 
                EXX
 
                PUSH HL
 
WINT2           LD A,L
 
                EXX
 
                PUSH DE
 
WINT1           EX AF,AF'
 
                CALL PRTSYMTXTMODE
 
                INC D
 
                EX AF,AF'
 
                DEC A
 
                JR NZ,WINT1
 
                POP DE
 
                INC E
 
                EXX
 
                DEC H
 
                JR NZ,WINT2
 
                POP HL
 
                BIT 7,D
 
                EXX
 
                POP DE
 
                JR Z,TNIZ_RAMKA         ;ОКНО БЕЗ НИЖНЕГО ЗАГОЛОВКА
 
;РИСУЕМ НИЖНЮЮ ЦВЕТНУЮ ПОЛОСКУ
 
                PUSH DE
 
                EXX
 
                LD A,H
 
                EXX
 
                DEC A
 
                ADD A,E
 
                LD E,A
 
                CALL COLOR_LINE
 
                POP DE
 
                JR TCENTR_RAMK
 
 
 
;РИСУЕМ НИЖНЮЮ РАМКУ
 
TNIZ_RAMKA      EXX
 
                BIT 6,D
 
                EXX
 
                JR NZ,TCENTR_RAMK
 
                EXX
 
                LD A,H
 
                EXX
 
                PUSH DE
 
                DEC A
 
                ADD A,E
 
                LD E,A
 
;               LD B,"└"
 
                LD B,5+0XF2                     ;ЛЕВЫЙ НИЖНИЙ УГОЛ
 
                CALL PRTSYMTXTMODE
 
;               LD B,"─"
 
                LD B,6+0XF2                     ;НИЖНИЙ КРАЙ
 
                INC D
 
                EXX
 
                LD A,L
 
                EXX
 
                DEC A
 
                DEC A
 
WINT04          EX AF,AF'
 
                CALL PRTSYMTXTMODE
 
                INC D
 
                EX AF,AF'
 
                DEC A
 
                JR NZ,WINT04
 
;               LD B,"┘"
 
                LD B,7+0XF2                     ;ПРАВЫЙ НИЖНИЙ УГОЛ
 
                CALL PRTSYMTXTMODE
 
                POP DE
 
TCENTR_RAMK     EXX
 
                BIT 6,D
 
                EXX
 
                JR NZ,TWERH_COLOR               ;ОКНО БЕЗ РАМКИ
 
;РИСУЕМ БОКОВЫЕ РАМКИ
 
                EXX
 
                LD A,H
 
                EXX
 
                DEC A
 
                DEC A
 
;               LD B,"│"
 
                LD B,3+0XF2                     ;ЛЕВАЯ СТОРОНА
 
                INC E
 
                PUSH DE
 
WINT01          EX AF,AF'
 
                CALL PRTSYMTXTMODE
 
                INC E
 
                EX AF,AF'
 
                DEC A
 
                JR NZ,WINT01
 
                POP DE
 
                PUSH DE
 
                EXX
 
                LD A,L
 
                EXX
 
                ADD A,D
 
                DEC A
 
                LD D,A
 
                EXX
 
                LD A,H
 
                EXX
 
                DEC A
 
                DEC A
 
                LD B,4+0XF2                     ;ПРАВАЯ СТОРОНА ОКНА
 
WINT02          EX AF,AF'
 
                CALL PRTSYMTXTMODE
 
                INC E
 
                EX AF,AF'
 
                DEC A
 
                JR NZ,WINT02
 
                POP DE
 
                DEC E
 
TWERH_COLOR     EXX
 
                BIT 5,D
 
                EXX
 
                JR Z,TWERH_RAMK
 
;РИСУЕМ ВЕРХНЮЮ ЦВЕТНУЮ ПОЛОСУ
 
                PUSH DE
 
                CALL COLOR_LINE
 
                POP DE
 
                JR TRASCH
 
 
 
TWERH_RAMK      EXX
 
                BIT 6,D
 
                EXX
 
                JR NZ,TRASCH
 
;               LD B,"┌"
 
                LD B,0+0XF2                     ;ЛЕВЫЙ ВЕРХНИЙ УГОЛ
 
                CALL PRTSYMTXTMODE
 
;               LD B,"─"
 
                LD B,1+0XF2                     ;ВЕРХНИЙ КРАЙ
 
                EXX
 
                LD A,L
 
                EXX
 
                DEC A
 
                DEC A
 
                PUSH DE
 
                INC D
 
WINT3           EX AF,AF'
 
                CALL PRTSYMTXTMODE
 
                INC D
 
                EX AF,AF'
 
                DEC A
 
                JR NZ,WINT3
 
;               LD B,"┐"
 
                LD B,2+0XF2                     ;ПРАВЫЙ ВЕРХНИЙ УГОЛ
 
                CALL PRTSYMTXTMODE
 
                POP DE
 
TRASCH          INC D
 
                LD (TADRSTR_Y),DE
 
                LD A,D
 
                LD (TXNEW),A
 
                LD A,(FLAGS)
 
                AND M_RUN_FAT_DSK
 
                JR NZ,TNOSET_MAIN
 
                ROMCALL MAIN_MEM13,ROM_RST83
 
TNOSET_MAIN     LD BC,WIN_P6
 
                LD A,(PAGE4READ)
 
                OUT (C),A
 
                LD L,(IX+0X0C)
 
                LD H,(IX+0X0D)
 
                XOR A
 
                OUT (C),A
 
                EXX
 
                BIT 4,D
 
                EXX
 
                RET NZ
 
ITPRINT_MESSAGE EXX
 
                LD HL,0
 
                LD (TEK_TEXT),HL
 
                LD BC,WIN_P6
 
                XOR A
 
                OUT (C),A
 
                LD A,(PAGE4READ)
 
                LD H,A
 
                OUT (C),H
 
                LD L,0
 
                EXX
 
TNEXT           EXX
 
                OUT (C),H
 
                EXX
 
                LD A,(HL)
 
                INC HL
 
                AND A
 
                JP Z,STOP_TPRINTMSG
 
TPRINT          CP 0X20
 
                JP NC,TPRINTA
 
                CP 3
 
                JR Z,TNEXT
 
                CP 9
 
                JR NZ,TCOD0D
 
                LD B,(HL)
 
                INC HL
 
                EXX
 
                OUT (C),L
 
                EXX
 
                LD A,(TADRSTR_X)
 
                ADD A,B
 
                LD (TADRSTR_X),A
 
                JP TNEXT
 
 
 
TCOD0D          CP 0X0D
 
                JR NZ,TCOD16
 
                EXX
 
                OUT (C),L
 
                EXX
 
                LD A,(TXNEW)
 
                LD (TADRSTR_X),A
 
                LD D,A
 
                LD A,(TADRSTR_Y)
 
                INC A
 
                LD (TADRSTR_Y),A
 
                LD E,A
 
                JP TNEXT
 
 
 
TCOD16          CP 0X16
 
                JR NZ,TCOD17
 
                LD E,(HL)
 
                INC HL
 
                LD D,(HL)
 
                INC HL
 
                EXX
 
                OUT (C),L
 
                EXX
 
                LD (TADRSTR_Y),DE
 
                JP TNEXT
 
 
 
TCOD17          CP 0X17
 
                JR NZ,TCOD1
 
                LD C,(HL)
 
                INC HL
 
                LD A,C
 
                EXX
 
                OUT (C),L
 
                EXX
 
                LD (COLOR4SYM),A
 
                JP TNEXT
 
 
 
TCOD1           CP 1
 
                JR NZ,TCOD2
 
                LD D,(IX+0)
 
                LD E,(IX+1)
 
                INC D
 
                EXX
 
                OUT (C),L
 
                EXX
 
                LD (TADRSTR_Y),DE
 
                JP TNEXT
 
 
 
TCOD2           CP 2
 
                JP NZ,TNEXT
 
                LD DE,(TEK_TEXT)
 
                LD A,D
 
                OR E
 
                JR NZ,TCOD2_1
 
                LD E,(HL)
 
                INC HL
 
                LD D,(HL)
 
                INC HL
 
                LD (TEK_TEXT),HL
 
                EX DE,HL
 
                JP TNEXT
 
 
 
TCOD2_1         LD HL,(TEK_TEXT)
 
                LD DE,0
 
                LD (TEK_TEXT),DE
 
                JP TNEXT
 
 
 
TPRINT_A        LD A,(RREG_A)
 
ITPRINT_A       EX AF,AF'
 
ITPRINT_A1      EXX
 
                LD BC,WIN_P6
 
                LD A,(PAGE4READ)
 
                LD H,A
 
                LD L,0
 
                EX AF,AF'
 
                EXX
 
                LD HL,STOP_PRINTA
 
TPRINTA         EX AF,AF'
 
                EXX
 
                OUT (C),L
 
                EXX
 
                PUSH HL
 
                LD HL,TADRSTR_Y
 
                LD E,(HL)
 
                INC HL
 
                LD D,(HL)
 
                INC (HL)
 
                LD A,(COLOR4SYM)
 
                LD C,A
 
                EXX
 
                LD A,0XF7
 
                OUT (C),A
 
                EXX
 
                LD H,E
 
                LD L,0
 
                LD E,D
 
                LD A,D
 
                LD D,L
 
                SRL H
 
                RR L
 
                SRL H
 
                RR L
 
                SRL E
 
                ADD HL,DE
 
                AND 1
 
                REPT 4
 
                RRCA
 
                ENDM
 
                ADD A,HIGH (CPU6+LSYM)
 
                LD D,A
 
                LD E,LOW (CPU6+LSYM)
 
                ADD HL,DE
 
                EX AF,AF'
 
                LD (HL),A
 
                LD A,C
 
                INC A
 
                JP Z,TRINTA0
 
                LD A,H
 
                XOR 0X30
 
                LD H,A
 
                LD A,D
 
                AND 0X10
 
                REPT 4
 
                RRCA
 
                ENDM
 
                ADD A,L
 
                LD L,A
 
                LD (HL),C
 
TRINTA0         EXX
 
                OUT (C),L
 
                EXX
 
                POP HL
 
                JP TNEXT
 
 
 
STOP_TPRINTMSG  EXX
 
                OUT (C),L
 
                EXX
 
                RET
 
 
 
;D-X E-Y B-SYMBOL C-COLOR
 
COLOR_LINE      LD A,C
 
                PUSH AF
 
                AND 7
 
                RLCA
 
                RLCA
 
                RLCA
 
                LD H,A
 
                LD A,C
 
                RRCA
 
                RRCA
 
                RRCA
 
                AND 7
 
                OR H
 
                LD H,A
 
                LD A,C
 
                AND 0XC0
 
                OR H
 
                LD C,A
 
                LD B," "
 
                EXX
 
                LD A,L
 
                EXX
 
WINT03          EX AF,AF'
 
                CALL PRTSYMTXTMODE
 
                INC D
 
                EX AF,AF'
 
                DEC A
 
                JR NZ,WINT03
 
                POP AF
 
                LD C,A
 
                RET
 
 
 
;D-X E-Y -> DE=ATTR ADR HL=DISP ADR
 
TDISP_ATTR      LD H,E
 
                LD L,0
 
                LD E,D
 
                LD A,D
 
                LD D,L
 
                SRL H
 
                RR L
 
                SRL H
 
                RR L
 
                SRL E
 
                ADD HL,DE
 
                AND 1
 
                REPT 4
 
                RRCA
 
                ENDM
 
                ADD A,HIGH (CPU3+LSYM)
 
                LD D,A
 
                LD E,LOW (CPU3+LSYM)
 
                ADD HL,DE                       ;HL=АДРЕС СИМВОЛА НА ТЕКСТМОДНОМ ЭКРАНЕ
 
                LD E,H
 
                LD A,H
 
                XOR 0X30
 
                LD D,A
 
                LD A,E
 
                AND 0X10
 
                REPT 4
 
                RRCA
 
                ENDM
 
                ADD A,L
 
                LD E,A
 
                RET
 
 
 
;ПЕЧАТЬ СИМВОЛА НА ТЕКСТМОДНОМ ЭКРАНЕ
 
;D-X E-Y B-SYMBOL C-COLOR
 
PRTSYMTXTMODE   PUSH DE
 
                PUSH HL
 
                CALL TDISP_ATTR
 
                LD (HL),B
 
                LD A,C
 
                INC A
 
                JR Z,PRTSYMTXTMODE0
 
                EX DE,HL
 
                LD (HL),C
 
PRTSYMTXTMODE0  POP HL
 
                POP DE
 
                RET
 
 
 
WINW_ZX         EXX
 
;               LD BC,RD_7FFD
 
;               IN A,(C)
 
                READ_7FFD
 
                AND 8
 
                RRCA
 
                RRCA
 
                RRCA
 
                RRCA
 
                LD D,A
 
                LD BC,WIN_P6
 
                LD A,(PAGE4READ)
 
                OUT (C),A
 
                LD A,(IX+2)
 
                ADD A,A
 
                ADD A,A
 
                ADD A,A
 
                LD E,A
 
                EXX
 
                LD C,(IX+3)
 
                LD L,(IX+1)
 
                LD H,0
 
                ADD HL,HL
 
                ADD HL,HL
 
                ADD HL,HL
 
                ADD HL,HL
 
                EX DE,HL
 
                LD IY,BUFTSC
 
                ADD IY,DE
 
WINW3           LD A,(IX+0)
 
                ADD A,(IY+0)
 
                LD E,A
 
 
 
                LD A,(IY+1)
 
                EXX
 
                ADD A,D
 
                EXX
 
                LD D,A
 
 
 
                AND 7
 
                JR NZ,WINW4
 
                LD B,C
 
                LD A,D
 
                RRCA
 
                RRCA
 
                RRCA
 
                AND 3
 
                ADD A,0X58
 
 
 
                EXX
 
                ADD A,D
 
                EXX
 
                
 
                LD H,A
 
                LD L,E
 
                LD A,(IX+4)
 
WINW5           LD (HL),A
 
                INC L
 
                DJNZ WINW5
 
WINW4           LD B,C
 
                XOR A
 
WINW6           LD (DE),A
 
                INC E
 
                DJNZ WINW6
 
                INC IY
 
                INC IY
 
                EXX
 
                DEC E
 
                EXX
 
                JR NZ,WINW3
 
                BIT 7,(IX+6)
 
                JR Z,NIZ_RAMKA          ;ОКНО БЕЗ НИЖНЕГО ЗАГОЛОВКА
 
;РИСУЕМ НИЖНЮЮ ЦВЕТНУЮ ПОЛОСКУ
 
                LD DE,0XFFF0
 
                ADD IY,DE
 
                LD A,(IX+0)
 
                ADD A,(IY+0)
 
                LD E,A
 
                LD A,(IY+1)
 
                RRCA
 
                RRCA
 
                RRCA
 
                AND 3
 
                ADD A,0X58
 
 
 
                EXX
 
                ADD A,D
 
                EXX
 
 
 
                LD D,A
 
                LD B,C
 
                LD L,(IX+4)
 
                LD A,L
 
                AND 7
 
                RLCA
 
                RLCA
 
                RLCA
 
                LD H,A
 
                LD A,L
 
                RRCA
 
                RRCA
 
                RRCA
 
                AND 7
 
                OR H
 
WINWN1          LD (DE),A
 
                INC E
 
                DJNZ WINWN1
 
                LD DE,0X0E
 
                ADD IY,DE
 
                JR CENTR_RAMK
 
 
 
NIZ_RAMKA       BIT 6,(IX+6)
 
                JR NZ,CENTR_RAMK                ;ОКНО БЕЗ РАМКИ
 
;РИСУЕМ НИЖНЮЮ РАМКУ
 
                DEC IY
 
                DEC IY
 
                LD L,(IX+0)
 
                LD A,(IY+0)
 
                ADD A,L
 
                LD E,A
 
                LD H,A
 
 
 
                LD A,(IY+1)
 
                EXX
 
                ADD A,D
 
                EXX
 
                LD D,A
 
 
 
                LD B,C
 
                LD A,0XFF
 
NR1             LD (DE),A
 
                INC E
 
                DJNZ NR1
 
                DEC E
 
                DEC D
 
                LD L,H
 
                LD H,D
 
                LD A,0X80
 
                LD B,7
 
NR2             LD (HL),A
 
                RLCA
 
                LD (DE),A
 
                RRCA
 
                DEC H
 
                DEC D
 
                DJNZ NR2
 
CENTR_RAMK      BIT 6,(IX+6)
 
                JR NZ,WERH_COLOR                ;ОКНО БЕЗ РАМКИ
 
;РИСУЕМ БОКОВЫЕ РАМКИ
 
                EXX
 
                LD A,(IX+2)
 
                SUB 2
 
                LD E,A
 
                EXX
 
NR4             LD DE,0XFFF0
 
                ADD IY,DE
 
                LD L,(IX+0)
 
                LD A,(IY+0)
 
                ADD A,L
 
                LD E,A
 
 
 
                LD A,(IY+1)
 
                EXX
 
                ADD A,D
 
                EXX
 
                LD D,A
 
                LD A,E
 
 
 
                LD H,D
 
                ADD A,(IX+3)
 
                DEC A
 
                LD L,A
 
                LD A,0X80
 
                LD B,8
 
NR3             LD (DE),A
 
                RLCA
 
                LD (HL),A
 
                RRCA
 
                DEC H
 
                DEC D
 
                DJNZ NR3
 
                EXX
 
                DEC E
 
                EXX
 
                JR NZ,NR4
 
WERH_COLOR      BIT 5,(IX+6)
 
                JR Z,WERH_RAMK          ;БЕЗ ВЕРХНЕГО ЗАГОЛОВКА
 
;РИСУЕМ ВЕРХНЮЮ ЦВЕТНУЮ ПОЛОСУ
 
                LD L,(IX+1)
 
                LD H,0
 
                ADD HL,HL
 
                ADD HL,HL
 
                ADD HL,HL
 
                ADD HL,HL
 
                EX DE,HL
 
                LD IY,BUFTSC
 
                ADD IY,DE
 
                LD A,(IX+0)
 
                ADD A,(IY+0)
 
                LD E,A
 
                LD A,(IY+1)
 
                RRCA
 
                RRCA
 
                RRCA
 
                AND 3
 
                ADD A,0X58
 
 
 
                EXX
 
                ADD A,D
 
                EXX
 
 
 
                LD D,A
 
                LD B,C
 
                LD L,(IX+4)
 
                LD A,L
 
                AND 7
 
                RLCA
 
                RLCA
 
                RLCA
 
                LD H,A
 
                LD A,L
 
                RRCA
 
                RRCA
 
                RRCA
 
                AND 7
 
                OR H
 
WINWW1          LD (DE),A
 
                INC E
 
                DJNZ WINWW1
 
                JP RADUGA
 
 
 
WERH_RAMK       BIT 6,(IX+6)
 
                JR NZ,RADUGA            ;ОКНО БЕЗ РАМКИ
 
;РИСУЕМ ВЕРХНЮЮ РАМКУ
 
WR4             LD DE,0XFFF0
 
                ADD IY,DE
 
                LD L,(IX+0)
 
                LD A,(IY+0)
 
                ADD A,L
 
                LD E,A
 
 
 
                LD A,(IY+1)
 
                EXX
 
                ADD A,D
 
                EXX
 
                LD D,A
 
                LD A,E
 
 
 
                LD H,D
 
                ADD A,(IX+3)
 
                DEC A
 
                LD L,A
 
                LD A,0X80
 
                LD B,7
 
WR3             LD (DE),A
 
                RLCA
 
                LD (HL),A
 
                RRCA
 
                DEC H
 
                DEC D
 
                DJNZ WR3
 
                LD A,L
 
                SUB E
 
                LD B,A
 
                INC B
 
                LD A,0XFF
 
WR5             LD (DE),A
 
                INC E
 
                DJNZ WR5
 
RADUGA          BIT 5,(IX+6)
 
                JR Z,RASCH
 
                LD IY,BUFTSC
 
                LD L,(IX+1)
 
                LD H,0
 
                ADD HL,HL
 
                ADD HL,HL
 
                ADD HL,HL
 
                ADD HL,HL
 
                EX DE,HL
 
                ADD IY,DE
 
                LD L,(IY+0)
 
                LD A,(IY+1)
 
                LD D,A
 
                RRCA
 
                RRCA
 
                RRCA
 
                AND 3
 
                ADD A,0X58
 
 
 
                EXX
 
                ADD A,D
 
                EXX
 
 
 
                LD H,A
 
                LD A,(IX+0)
 
                ADD A,(IX+3)
 
                ADD A,L
 
                LD L,A
 
                LD E,A
 
                LD A,(IX+4)
 
                AND 0X47
 
                LD C,A
 
                AND 0X40
 
                LD B,A
 
                DEC L
 
                LD A,C
 
                ADD A,5*8
 
                LD (HL),A       ;5*8+7
 
                DEC L
 
                LD A,4*8+5
 
                OR B
 
                LD (HL),A       ;4*8+5
 
                DEC L
 
                LD A,6*8+4
 
                OR B
 
                LD (HL),A       ;6*8+4
 
                DEC L
 
                LD A,2*8+6
 
                OR B
 
                LD (HL),A       ;2*8+6
 
                DEC L
 
                LD A,C
 
                AND 7
 
                RLCA
 
                RLCA
 
                RLCA
 
                OR B
 
                ADD A,2
 
                LD (HL),A       ;7*8+2
 
                EX DE,HL
 
                DEC L
 
                LD B,8
 
                XOR A
 
                LD C,L
 
RADUGA1         SCF
 
                RLA
 
                LD (HL),A
 
                DEC L
 
                LD (HL),A
 
                DEC L
 
                LD (HL),A
 
                DEC L
 
                LD (HL),A
 
                DEC L
 
                LD (HL),A
 
                LD L,C
 
                INC H
 
                DJNZ RADUGA1
 
RASCH           LD A,(IX+0)
 
                LD L,(IX+1)
 
                ADD A,A
 
                ADD A,A
 
                ADD A,A
 
                LD H,A
 
                INC H
 
                EXX
 
                XOR A
 
                OUT (C),A
 
                EXX
 
                LD A,H
 
                LD (XNEW),A
 
                LD (ADRSTR_Y),HL
 
                EXX
 
                LD A,(PAGE4READ)
 
                OUT (C),A
 
                EXX
 
                LD L,(IX+0X0C)
 
                LD H,(IX+0X0D)
 
                EXX
 
                XOR A
 
                OUT (C),A
 
                EXX
 
                BIT 4,(IX+6)
 
                JP Z,IPRINT_MESSAGE
 
                RET
 
 
 
CLS             LD HL,0
 
                LD D,H
 
                LD E,L
 
                ADD HL,SP
 
                LD B,0X60
 
                LD SP,0X5800
 
CLS1            REPT 0X20
 
                PUSH DE
 
                ENDM
 
                DJNZ CLS1
 
                LD SP,HL
 
CLSSCR          LD HL,0
 
                LD D,A
 
                LD E,A
 
                ADD HL,SP
 
                LD SP,0X5B00
 
                LD B,12
 
CLS2            REPT 0X20
 
                PUSH DE
 
                ENDM
 
                DJNZ CLS2
 
                LD SP,HL
 
                RRCA
 
                RRCA
 
                RRCA
 
                AND 7
 
                OUT (0XFE),A
 
                RET
 
 
 
STOP_PRINTMSG   LD BC,WIN_P6
 
                XOR A
 
                OUT (C),A
 
                RET
 
 
 
;ПЕЧАТЬ ТЕКСТОВОЙ СТРОКИ С УПРАВЛЮЯЩИМИ КОДАМИ (ВНЕШНИЙ ВЫЗОВ)
 
PRINT_MESSAGE   LD HL,(RREG_L)
 
;ПЕЧАТЬ ТЕКСТОВОЙ СТРОКИ С УПРАВЛЮЯЩИМИ КОДАМИ (ВНУТРЕННИЙ ВЫЗОВ)
 
IPRINT_MESSAGE  LD A,(R_77)
 
                AND 7
 
                CP 7
 
                JP Z,ITPRINT_MESSAGE
 
                CP 3
 
                RET NZ
 
;               LD BC,RD_7FFD
 
;               IN A,(C)
 
                READ_7FFD
 
                AND 8
 
                LD BC,BUFTSC
 
                JR Z,IPM1
 
                LD BC,BUFTSC1
 
IPM1            LD (TEKBUFTSC),BC
 
                LD BC,WIN_P6
 
;ПЕЧАТЬ ТЕКСТОВОЙ СТОРОКИ С УПРАВЛЯЮЩИМИ КОДАМИ (ВНУТРЕННИЙ ВЫЗОВ)
 
NEXT            LD A,(PAGE4READ)
 
                OUT (C),A
 
                LD A,(HL)
 
                INC HL
 
                AND A
 
                JR Z,STOP_PRINTMSG
 
PRINT           CP 0X20
 
                JP NC,PRINTA
 
COD03           CP 3
 
                JR NZ,COD9
 
                LD D,0                          ;ЦЕНТРОВКА СТРОКИ В ОКНЕ
 
                LD A,H
 
                EX AF,AF'
 
                LD E,L
 
CEN2            LD A,(HL)
 
                CP 0X20
 
                JR C,CEN3
 
                LD A,6
 
                ADD A,D
 
                LD D,A
 
                INC HL
 
                JR CEN2
 
 
 
CEN3            XOR A
 
                OUT (C),A
 
                LD A,(IX+3)
 
                ADD A,A
 
                ADD A,A
 
                ADD A,A
 
                SUB D
 
                SRL A
 
                DEC A
 
                LD H,A
 
                LD A,(XNEW)
 
                ADD A,H
 
                LD (ADRSTR_X),A
 
                EX AF,AF'
 
                LD H,A
 
                LD L,E
 
                JP NEXT
 
 
 
COD9            CP 9
 
                JR NZ,COD0D
 
                LD D,(HL)                       ;ТАБУЛЯЦИЯ НА N ПОЗИЦИЙ
 
                INC HL
 
                LD A,D
 
                ADD A,A
 
                ADD A,D
 
                ADD A,A
 
                LD D,A
 
                XOR A
 
                OUT (C),A
 
                LD A,(ADRSTR_X)
 
                ADD A,D
 
                LD (ADRSTR_X),A
 
                JR NEXT
 
 
 
COD0D           CP 0X0D
 
                JR NZ,COD16
 
                XOR A
 
                OUT (C),A
 
                LD A,(XNEW)                     ;ПЕРЕВОД СТРОКИ
 
                LD (ADRSTR_X),A
 
                LD A,(ADRSTR_Y)
 
                INC A
 
                LD (ADRSTR_Y),A
 
                JP NEXT
 
 
 
COD16           CP 0X16
 
                JR NZ,COD17
 
                LD E,(HL)                       ;ПЕЧАТЬ В УКАЗАННОЙ ПОЗИЦИИ
 
                INC HL
 
                LD D,(HL)
 
                INC HL
 
                XOR A
 
                OUT (C),A
 
                LD (ADRSTR_Y),DE
 
                JP NEXT
 
 
 
COD17           CP 0X17
 
                JR NZ,COD1
 
                LD D,(HL)
 
                INC HL
 
                XOR A
 
                OUT (C),A
 
                LD A,D
 
                LD (COLOR4SYM),A
 
                JP NEXT
 
 
 
;КООРДИНАТА ПЕЧАТИ В ИСХОДНУЮ ПОЗИЦИЮ ОКНА
 
COD1            CP 1
 
                JP NZ,NEXT
 
                XOR A
 
                OUT (C),A
 
                LD A,(IX+0)
 
                LD E,(IX+1)
 
                ADD A,A
 
                ADD A,A
 
                ADD A,A
 
                INC A
 
                LD D,A
 
                LD (ADRSTR_Y),DE
 
                JP NEXT
 
 
 
PRINT_A         LD A,(RREG_A)
 
IPRINT_A        EX AF,AF'
 
                LD A,(R_77)
 
                AND 7
 
                CP 7
 
                JP Z,ITPRINT_A1
 
                CP 3
 
                RET NZ
 
                EX AF,AF'
 
                LD BC,WIN_P6
 
                LD HL,STOP_PRINTA
 
;ПЕЧАТЬ СИМВОЛА В "A"
 
PRINTA          EX AF,AF'
 
                XOR A
 
                OUT (C),A
 
                PUSH HL
 
                LD H,A
 
                EX AF,AF'
 
                LD L,A
 
                ADD HL,HL
 
                ADD HL,HL
 
                ADD HL,HL
 
                LD DE,CHARS
 
                ADD HL,DE
 
                LD A,(COLOR4SYM)
 
                LD D,A
 
                EXX
 
                LD HL,(ADRSTR_Y)                ;H=X L=Y
 
                LD B,0
 
                LD D,B
 
                LD A,H
 
                AND 7
 
                LD C,A
 
                LD IY,SDVIG
 
                ADD IY,BC
 
                LD A,H
 
                AND 0XF8
 
                RRCA
 
                RRCA
 
                RRCA
 
                EX AF,AF'
 
                LD A,6
 
                ADD A,H
 
                LD H,A
 
                LD (ADRSTR_Y),HL
 
                LD A,L
 
                RLCA
 
                RLCA
 
                RLCA
 
                LD E,A
 
                LD HL,(TEKBUFTSC)
 
                ADD HL,DE
 
                ADD HL,DE
 
                EX AF,AF'
 
                ADD A,(HL)
 
                INC HL
 
                LD E,A
 
                LD D,(HL)
 
                LD HL,BUFMSK
 
                ADD HL,BC
 
                ADD HL,BC
 
                LD B,(HL)
 
                INC HL
 
                LD C,(HL)
 
                EXX
 
                LD A,(PAGE4READ)
 
                OUT (C),A
 
                EXX
 
                LD A,8
 
SLEDU           EX AF,AF'
 
                EXX
 
                LD A,(HL)
 
                INC HL
 
                EXX
 
                LD L,A
 
                LD H,0
 
                JP (IY)
 
 
 
SDVIG           REPT 8
 
                ADD HL,HL
 
                ENDM
 
                LD A,(DE)
 
                AND B
 
                OR H
 
                LD (DE),A
 
                INC E
 
                LD A,(DE)
 
                AND C
 
                OR L
 
                LD (DE),A
 
                DEC E
 
                INC D
 
                EX AF,AF'
 
                DEC A
 
                JP NZ,SLEDU
 
                EX DE,HL
 
                EXX
 
                LD A,D
 
                EXX
 
                LD E,A
 
                INC A
 
                JR Z,PRINTA1
 
                DEC H
 
                LD A,H
 
                RRCA
 
                RRCA
 
                RRCA
 
                AND 3
 
                OR 0X58
 
                LD H,A
 
                LD (HL),E
 
PRINTA1         EXX
 
                XOR A
 
                OUT (C),A
 
                POP HL
 
                JP NEXT
 
 
 
STOP_PRINTA     DB 0
 
 
 
BUFMSK          DB %00000011,%11111111
 
                DB %10000001,%11111111
 
                DB %11000000,%11111111
 
                DB %11100000,%01111111
 
                DB %11110000,%00111111
 
                DB %11111000,%00011111
 
                DB %11111100,%00001111
 
                DB %11111110,%00000111
 
 
 
;РИСОВАЛКА ЦВЕТНОЙ ПОЛОСКИ В МЕНЮ
 
COLOR_CURSOR    LD HL,FLAGS
 
                BIT B_VIDEO_MODE,(HL)
 
                JP Z,COLORCURS4
 
                EVOPORT WIN_P3,0XF7
 
                LD B,(IX+3)
 
                LD DE,(COL_CURSOR)
 
                CALL TRESTORE_CLINE
 
COLORCURS6      LD A,(IX+7)
 
                BIT 7,A
 
                JR Z,COLORCURS5
 
                LD L,(IX+8)
 
                LD H,(IX+9)
 
                LD A,(HL)
 
COLORCURS5      LD D,(IX+0)
 
                ADD A,(IX+1)
 
                LD E,A
 
                INC E
 
                LD (COL_CURSOR),DE
 
                EVOPORT WIN_P3,0XF7
 
                LD B,(IX+3)
 
                CALL TSTORE_CLINE
 
                LD A,(IX+5)
 
                AND 0XF8
 
                LD C,A
 
                PUSH HL
 
                PUSH DE
 
                PUSH BC
 
                LD (COL_CURSOR),DE
 
                CALL TDISP_ATTR
 
                LD A,D
 
                XOR 0X10
 
                LD H,A
 
                LD A,D
 
                AND 0X10
 
                REPT 4
 
                RRCA
 
                ENDM
 
                ADD A,E
 
                LD L,A
 
TCOLORLINE2     EX DE,HL
 
                LD A,(HL)
 
                AND 0XC7
 
                OR C
 
                LD (HL),A
 
                INC HL
 
                DJNZ TCOLORLINE2
 
                POP BC
 
                POP DE
 
                POP HL
 
                RET
 
 
 
;РИСОВАНИЕ ЦВЕТНОЙ ПОЛОСЫ
 
;D-X E-Y B-ДЛИНА C-ЦВЕТ
 
TCOLOR_LINE     PUSH HL
 
                PUSH DE
 
                PUSH BC
 
                LD (COL_CURSOR),DE
 
                CALL TDISP_ATTR
 
                LD A,D
 
                XOR 0X10
 
                LD H,A
 
                LD A,D
 
                AND 0X10
 
                REPT 4
 
                RRCA
 
                ENDM
 
                ADD A,E
 
                LD L,A
 
TCOLORLINE1     EX DE,HL
 
                LD (HL),C
 
                INC HL
 
                DJNZ TCOLORLINE1
 
                POP BC
 
                POP DE
 
                POP HL
 
                RET
 
; 00   01   02   03   04   05   06
 
;F1C0 E1C1 F1C1 E1C2 F1C2 E1C3 F1C3
 
 
 
;СОХРАНЕНИЕ ЧАСТИ ЭКРАНА ДЛЯ ВЫВОДА ЦВЕТНОЙ ЛИНИИ
 
;D-X E-Y B-ДЛИНА
 
TSTORE_CLINE    PUSH HL
 
                PUSH DE
 
                PUSH BC
 
                CALL TDISP_ATTR
 
                LD A,D
 
                XOR 0X10
 
                LD H,A
 
                LD A,D
 
                AND 0X10
 
                REPT 4
 
                RRCA
 
                ENDM
 
                ADD A,E
 
                LD L,A
 
TSTORECLINE1    EXX
 
                LD HL,COLBUF
 
                EXX
 
TSTORECLINE2    EX DE,HL
 
                LD A,(HL)
 
                INC HL
 
                EXX
 
                LD (HL),A
 
                INC HL
 
                EXX
 
                DJNZ TSTORECLINE2
 
                POP BC
 
                POP DE
 
                POP HL
 
                RET
 
 
 
;ВОССТАНОВЛЕНИЕ ЧАСТИ ЭКРАНА ПОД ЦВЕТНОЙ ЛИНИЕЙ
 
;D-X E-Y B-ДЛИНА
 
TRESTORE_CLINE  PUSH HL
 
                PUSH DE
 
                PUSH BC
 
                LD B,(IX+3)
 
                LD DE,(COL_CURSOR)
 
                CALL TDISP_ATTR
 
                LD A,D
 
                XOR 0X10
 
                LD H,A
 
                LD A,D
 
                AND 0X10
 
                REPT 4
 
                RRCA
 
                ENDM
 
                ADD A,E
 
                LD L,A
 
TRESTCLINE1     EXX
 
                LD HL,COLBUF
 
                EXX
 
TRESTCLINE2     EX DE,HL
 
                EXX
 
                LD A,(HL)
 
                INC HL
 
                EXX
 
                LD (HL),A
 
                INC HL
 
                DJNZ TRESTCLINE2
 
                POP BC
 
                POP DE
 
                POP HL
 
                RET
 
 
 
RESTORE_CLINE   LD HL,FLAGS
 
                BIT B_VIDEO_MODE,(HL)
 
                JR NZ,TREST_CLINE
 
                LD DE,(COL_CURSOR)
 
                LD HL,COLBUF
 
                LD C,(IX+3)
 
                LD B,0
 
                LDIR
 
                RET
 
 
 
TREST_CLINE     EVOPORT WIN_P3,0XF7
 
                LD B,(IX+3)
 
                LD DE,(COL_CURSOR)
 
                JP TRESTORE_CLINE
 
 
 
COLORCURS4      LD DE,(COL_CURSOR)
 
                LD HL,COLBUF
 
                LD C,(IX+3)
 
;               BIT 2,(IY+55)           ;ФАЙЛОВ БОЛЬШЕ ВЫСОТЫ ОКНА?
 
;               JR Z,COLCURS1
 
;               DEC C                   ;ЦВЕТНАЯ ПОЛОСКА НА 1 КОРОЧЕ
 
COLCURS1        LD B,0
 
                LDIR
 
SET_ADR_ATR     LD HL,FLAGS
 
                BIT B_VIDEO_MODE,(HL)
 
                JP NZ,COLORCURS6
 
                LD A,(IX+7)
 
                BIT 7,A
 
                JR Z,COLCURS3
 
                LD L,(IX+8)
 
                LD H,(IX+9)
 
                LD A,(HL)
 
COLCURS3        ;LD B,A
 
                LD H,(IX+0)
 
                LD L,(IX+1)
 
                ADD A,L
 
                LD L,A
 
                INC L
 
                CALL ADRDIS
 
                EX DE,HL
 
                LD (COL_CURSOR),HL      ;ПОЛОЖИЛИ АДРЕС ДЛЯ ВОССТАНОВЛЕНИЯ ЦВЕТА
 
                LD DE,COLBUF
 
                LD B,(IX+3)
 
;               BIT 2,(IY+55)           ;ФАЙЛОВ БОЛЬШЕ ВЫСОТЫ ОКНА?
 
;               JR Z,COLCURS2
 
;               DEC B                   ;ЦВЕТНАЯ ПОЛОСКА НА 1 КОРОЧЕ
 
COLCURS2        LD C,(IX+5)
 
                LD A,(HL)
 
                LD (DE),A
 
                LD (HL),C
 
                INC L
 
                INC E
 
                DJNZ $-5
 
                RET
 
 
 
;H-X, L-Y
 
ADRDIS          LD C,A
 
                LD A,L
 
                AND 0X18
 
                OR 0X40
 
                EX AF,AF'
 
                LD A,L
 
                AND 7
 
                RRCA
 
                RRCA
 
                RRCA
 
                ADD A,H
 
                LD L,A
 
                EX AF,AF'
 
                LD H,A
 
                LD E,L
 
ADRATR          LD A,H
 
                RRCA
 
                RRCA
 
                RRCA
 
                AND 3
 
                OR 0X58
 
                LD D,A
 
                LD A,C
 
                RET
 
 
 
INC_H           INC H
 
                LD A,H
 
                AND 7
 
                RET NZ
 
                LD A,L
 
                ADD A,0X20
 
                LD L,A
 
                RET C
 
UMEHL1          LD A,H
 
                SUB 8
 
                LD H,A
 
                RET     
 
 
 
;СДВИГ ОКНА ВВЕРХ
 
SCRUP           LD HL,FLAGS
 
                BIT B_VIDEO_MODE,(HL)
 
                JP NZ,TSCRUP
 
;СДВИГ ОКНА ВВЕРХ (ZX)
 
                PUSH IY
 
                PUSH IX
 
                EXX
 
                LD A,(SCROLL_MODE)
 
                LD E,A
 
                EXX
 
                LD L,(IX+1)
 
                INC L
 
                CALL USTAN
 
;СДВИГ ПИКСЕЛЕЙ ВВЕРХ
 
SCRUP1          LD A,(IX+0X10)
 
                ADD A,C
 
                LD L,A
 
                LD H,(IX+0X11)
 
                LD A,(IX+0)
 
                ADD A,C
 
                LD E,A
 
                LD D,(IX+1)
 
                PUSH BC
 
                CALL LDIST
 
                POP BC
 
                EXX
 
                LD A,E
 
                EXX
 
                AND 1;A
 
                JR Z,SCRUP2
 
                LD A,(IX+0X11)
 
                LD H,A
 
                AND 7
 
                CP 7
 
                JR NZ,SCRUP2
 
;СДВИГ ВВЕРХ ЦВЕТОВОЙ СТРОКИ ПОСЛЕ ПЕРЕНОСА 7 ЛИНИЙ ЗНАКОРЯДА
 
                LD A,H
 
                RRCA
 
                RRCA
 
                RRCA
 
                AND 3
 
                OR 0X58
 
                LD H,A
 
                LD L,(IX+0X10)
 
                LD A,(IX+1)
 
                RRCA
 
                RRCA
 
                RRCA
 
                AND 3
 
                OR 0X58
 
                LD D,A
 
                LD E,(IX+0)
 
                PUSH BC
 
                CALL LDIST
 
                POP BC
 
SCRUP2          INC IX
 
                INC IX
 
                DJNZ SCRUP1
 
SCRUP3          POP IX
 
                POP IY
 
                RET
 
 
 
;СДВИГ ОКНА ВВЕРХ (TXT)
 
TSCRUP          PUSH IY
 
                PUSH IX
 
                EVOPORT WIN_P3,0XF7
 
                LD A,(IX+2)
 
                SUB 3
 
                LD B,A                          ;СКОЛЬКО СТРОК В ОКНЕ СКРОЛЛИРОВАТЬ
 
                LD C,(IX+3)                     ;ШИРИНА ОКНА
 
                LD D,(IX+0)                     ;X КООРДИНАТА ЛЕВОГО ВЕРХНЕГО УГЛА ДЛЯ СКРОЛЛЕРА
 
                LD E,(IX+1)
 
                INC E                           ;Y КООРДИНАТА ЛЕВОГО ВЕРХНЕГО УГЛА ДЛЯ СКРОЛЛЕРА
 
                LD A,E
 
                ADD A,A
 
                ADD A,A
 
                EXX
 
                LD C,A
 
                LD B,0
 
                LD IX,TBUFTSC
 
                ADD IX,BC                       ;IX=СПИСОК АДРЕСОВ НАЧАЛ СТРОК ДЛЯ СКРОЛЛЕРА
 
                EXX
 
                LD A,C
 
                AND 0XFE
 
                NEG
 
                LD H,A                          ;ШИРИНА ДЛЯ ЛЕВЫЙ СИМВОЛОВ
 
                LD L,A                          ;ШИРИНА ДЛЯ ПРАВЫХ СИМВОЛОВ
 
                BIT 0,C
 
                JR Z,TSCRUP1                    ;ЕСЛИ ШИРИНА ЧЕТНАЯ, НИЧЕГО НЕ ДЕЛАЕМ
 
                DEC L
 
                DEC L
 
                BIT 0,D
 
                JR NZ,TSCRUP1
 
                LD A,H
 
                LD H,L
 
                LD L,A
 
TSCRUP1         LD A,D
 
                SRL A
 
                LD D,A
 
                ADC A,0
 
                LD E,A
 
TSCRUP2         LD A,H
 
                EXX
 
                LD IY,LDI_END
 
                LD E,A
 
                LD D,0XFF
 
                ADD IY,DE
 
                EXX
 
                LD A,E
 
                EXX
 
                LD E,A
 
                ADD A,(IX+4)
 
                LD L,A
 
                LD H,(IX+5)
 
                LD A,E
 
                ADD A,(IX+0)
 
                LD E,A
 
                LD D,(IX+1)
 
                CALL LDIST                      ;ПЕРЕНОС МОНОХРОМНОЙЙ СТРОКИ 
 
                EXX
 
                LD A,E
 
                EXX
 
                LD E,A
 
                ADD A,(IX+4+100)
 
                LD L,A
 
                LD H,(IX+5+100)
 
                LD A,E
 
                ADD A,(IX+0+100)
 
                LD E,A
 
                LD D,(IX+1+100)
 
                CALL LDIST                      ;ПЕРЕНОС ЦВЕТНОЙ СТРОКИ
 
                EXX
 
                LD A,L
 
                EXX
 
                LD IY,LDI_END
 
                LD E,A
 
                LD D,0XFF
 
                ADD IY,DE
 
                EXX
 
                LD A,D
 
                EXX
 
                LD E,A
 
                ADD A,(IX+6)
 
                LD L,A
 
                LD H,(IX+7)
 
                LD A,E
 
                ADD A,(IX+2)
 
                LD E,A
 
                LD D,(IX+3)
 
                CALL LDIST                      ;ПЕРЕНОС МОНОХРОМНОЙ СТРОКИ
 
                EXX
 
                LD A,D
 
                EXX
 
                LD E,A
 
                ADD A,(IX+6+100)
 
                LD L,A
 
                LD H,(IX+7+100)
 
                LD A,E
 
                ADD A,(IX+2+100)
 
                LD E,A
 
                LD D,(IX+3+100)
 
                CALL LDIST                      ;ПЕРЕНОС СТРОКИ ЦВЕТА
 
                REPT 4
 
                INC IX
 
                ENDM
 
                EXX
 
                DJNZ TSCRUP2
 
                POP IX
 
                POP IY
 
                RET
 
 
 
;0 2 4 6 8
 
; 1 3 5 7 9
 
; =====         3 НЕЧЕТ + 2 ЧЕТ
 
;=====          2 НЕЧЕТ + 3 ЧЕТ
 
; ====          2 НЕЧЕТ + 2 ЧЕТ
 
;====           2 НЕЧЕТ + 2 ЧЕТ
 
;0 2 4 6 8
 
; 1 3 5 7 9
 
 
 
;C200    C201    C202    C203    C204
 
;    D200    D201    D202    D203    D204
 
;----------------------------------------
 
;C240    C241    C242    C243    C244
 
;    D240    D241    D242    D243    D244
 
 
 
;СДВИГ ОКНА ВНИЗ
 
TSCRDN          DI
 
                PUSH IX
 
                PUSH IY
 
                EVOPORT WIN_P3,0XF7
 
                LD A,(IX+2)
 
                SUB 3
 
                LD B,A                          ;СКОЛЬКО СТРОК В ОКНЕ СКРОЛЛИРОВАТЬ
 
                LD C,(IX+3)                     ;ШИРИНА ОКНА
 
                LD D,(IX+0)                     ;X КООРДИНАТА ЛЕВОГО ВЕРХНЕГО УГЛА ДЛЯ СКРОЛЛЕРА
 
                LD A,(IX+1)
 
                ADD A,(IX+2)
 
                SUB 2
 
                LD E,A                          ;Y КООРДИНАТА ЛЕВОГО ВЕРХНЕГО УГЛА ДЛЯ СКРОЛЛЕРА
 
                ADD A,A
 
                ADD A,A
 
                EXX
 
                LD C,A
 
                LD B,0
 
                LD IX,TBUFTSC
 
                ADD IX,BC                       ;IX=СПИСОК АДРЕСОВ НАЧАЛ СТРОК ДЛЯ СКРОЛЛЕРА
 
                EXX
 
                LD A,C
 
                AND 0XFE
 
                NEG
 
                LD H,A                          ;ШИРИНА ДЛЯ ЛЕВЫЙ СИМВОЛОВ
 
                LD L,A                          ;ШИРИНА ДЛЯ ПРАВЫХ СИМВОЛОВ
 
                BIT 0,C
 
                JR Z,TSCRDN1
 
                DEC L
 
                DEC L
 
                BIT 0,D
 
                JR NZ,TSCRDN1
 
                LD A,H
 
                LD H,L
 
                LD L,A
 
TSCRDN1         LD A,D
 
                SRL A
 
                LD D,A
 
                ADC A,0
 
                LD E,A
 
TSCRDN2         REPT 4
 
                DEC IX
 
                ENDM
 
                LD A,H
 
                EXX
 
                LD IY,LDI_END
 
                LD E,A
 
                LD D,0XFF
 
                ADD IY,DE
 
                EXX
 
                LD A,E
 
                EXX
 
                LD E,A
 
                ADD A,(IX+0)
 
                LD L,A
 
                LD H,(IX+1)
 
                LD A,E
 
                ADD A,(IX+4)
 
                LD E,A
 
                LD D,(IX+5)
 
                CALL LDIST                      ;ПЕРЕНОС МОХОРОМНОЙ СТРОКИ
 
                EXX
 
                LD A,E
 
                EXX
 
                LD E,A
 
                ADD A,(IX+0+100)
 
                LD L,A
 
                LD H,(IX+1+100)
 
                LD A,E
 
                ADD A,(IX+4+100)
 
                LD E,A
 
                LD D,(IX+5+100)
 
                CALL LDIST                      ;ПЕРЕНОС ЦВЕТНОЙ СТРОКИ
 
                EXX
 
                LD A,L
 
                EXX
 
                LD IY,LDI_END
 
                LD E,A
 
                LD D,0XFF
 
                ADD IY,DE
 
                EXX
 
                LD A,D
 
                EXX
 
                LD E,A
 
                ADD A,(IX+2)
 
                LD L,A
 
                LD H,(IX+3)
 
                LD A,E
 
                ADD A,(IX+6)
 
                LD E,A
 
                LD D,(IX+7)
 
                CALL LDIST                      ;ПЕРЕНОС МОНОХРОМНОЙ СТРОКИ
 
                EXX
 
                LD A,D
 
                EXX
 
                LD E,A
 
                ADD A,(IX+2+100)
 
                LD L,A
 
                LD H,(IX+3+100)
 
                LD A,E
 
                ADD A,(IX+6+100)
 
                LD E,A
 
                LD D,(IX+7+100)
 
                CALL LDIST                      ;ПЕРЕНОС ЦВЕТНОЙ СТРОКИ
 
                EXX
 
                DJNZ TSCRDN2
 
                POP IY
 
                POP IX
 
                RET
 
 
 
SCRDN           LD HL,FLAGS
 
                BIT B_VIDEO_MODE,(HL)
 
                JP NZ,TSCRDN
 
;СКРОЛЛ ОКНА ВВЕРХ (ZX)
 
                PUSH IX
 
                PUSH IY
 
                EXX
 
                LD A,(SCROLL_MODE)
 
                LD E,A
 
                EXX
 
                LD A,(IX+2)
 
                ADD A,(IX+1)
 
                SUB 2
 
                LD L,A
 
                CALL USTAN
 
                DEC IX
 
                DEC IX
 
SCRDN1          LD A,(IX+0)
 
                ADD A,C
 
                LD L,A
 
                LD H,(IX+1)
 
                LD A,(IX+0X10)
 
                ADD A,C
 
                LD E,A
 
                LD D,(IX+0X11)
 
                PUSH BC
 
                CALL LDIST
 
                POP BC
 
                EXX
 
                LD A,E
 
                EXX
 
                AND 1;A
 
                JR Z,SCRDN2
 
                LD A,(IX+1)
 
                LD H,A
 
                AND 7
 
                CP 7
 
                JR NZ,SCRDN2
 
                LD A,H
 
                RRCA
 
                RRCA
 
                RRCA
 
                AND 3
 
                OR 0X58
 
                LD H,A
 
                LD L,(IX+0)
 
                LD A,(IX+0X11)
 
                RRCA
 
                RRCA
 
                RRCA
 
                AND 3
 
                OR 0X58
 
                LD D,A
 
                LD E,(IX+0X10)
 
                PUSH BC
 
                CALL LDIST
 
                POP BC
 
SCRDN2          DEC IX
 
                DEC IX
 
                DJNZ SCRDN1
 
                POP IY
 
                POP IX
 
                RET
 
 
 
;УСТАНОВКИ ДЛЯ СКРОЛЛЕРА ОКНА
 
USTAN           LD A,(IX+3)
 
                ADD A,A
 
                LD E,A
 
                LD A,L
 
                LD D,0
 
                LD HL,LDI_END
 
                AND A
 
                SBC HL,DE
 
                PUSH HL
 
                POP IY
 
                LD C,(IX+0)
 
                LD L,A
 
                LD A,(IX+2)
 
                SUB 3
 
                ADD A,A
 
                ADD A,A
 
                ADD A,A
 
                LD B,A
 
                LD H,0
 
                ADD HL,HL
 
                ADD HL,HL
 
                ADD HL,HL
 
                LD IX,BUFTSC
 
                EX DE,HL
 
                ADD IX,DE
 
                ADD IX,DE
 
                RET
 
 
 
LDIST           DB 0XFD
 
                JP (HL)
 
                REPT 80
 
                LDI
 
                ENDM
 
LDI_END         RET
 
 
 
SYM00           DB %11111111
 
                DB %10000000
 
                DB %10000000
 
                DB %10000000
 
                DB %10000000
 
                DB %10000000
 
                DB %10000000
 
                DB %10000000
 
 
 
SYM01           DB %11111111
 
                DB %00000000
 
                DB %00000000
 
                DB %00000000
 
                DB %00000000
 
                DB %00000000
 
                DB %00000000
 
                DB %00000000
 
 
 
SYM02           DB %11111111
 
                DB %00000001
 
                DB %00000001
 
                DB %00000001
 
                DB %00000001
 
                DB %00000001
 
                DB %00000001
 
                DB %00000001
 
 
 
SYM03           DB %10000000
 
                DB %10000000
 
                DB %10000000
 
                DB %10000000
 
                DB %10000000
 
                DB %10000000
 
                DB %10000000
 
                DB %10000000
 
 
 
SYM04           DB %00000001
 
                DB %00000001
 
                DB %00000001
 
                DB %00000001
 
                DB %00000001
 
                DB %00000001
 
                DB %00000001
 
                DB %00000001
 
 
 
SYM05           DB %10000000
 
                DB %10000000
 
                DB %10000000
 
                DB %10000000
 
                DB %10000000
 
                DB %10000000
 
                DB %10000000
 
                DB %11111111
 
 
 
SYM06           DB %00000000
 
                DB %00000000
 
                DB %00000000
 
                DB %00000000
 
                DB %00000000
 
                DB %00000000
 
                DB %00000000
 
                DB %11111111
 
 
 
SYM07           DB %00000001
 
                DB %00000001
 
                DB %00000001
 
                DB %00000001
 
                DB %00000001
 
                DB %00000001
 
                DB %00000001
 
                DB %11111111
 
END_MAGICSYM
 
 
 
;ICO_MOUSE0     DB %00111111,%00000000;3F,00
 
;               DB %00011111,%01000000;1F,40
 
;               DB %00001111,%01100000;0F,60
 
;               DB %00000111,%01010000;07,50
 
;               DB %00000011,%01001000;03,48
 
;               DB %00000001,%01001100;01,4C
 
;               DB %00000001,%01110000;01,70
 
;               DB %00000111,%00000000;07,00
 
 
 
;ICO_MOUSE1     DB %00111111,%00000000;3F,00
 
;               DB %00011111,%01000000;1F,40
 
;               DB %00001111,%01100000;0F,60
 
;               DB %00000111,%01110000;07,70
 
;               DB %00000011,%01111000;03,78
 
;               DB %00000001,%01111100;01,7C
 
;               DB %00000001,%01110000;01,70
 
;               DB %00000111,%00000000;07,00