;LAST UPDATE: 03.09.2017 savelij
 
 
 
X4DUMP          EQU 0X0C
 
Y4DUMP          EQU 0X05
 
 
 
EDIT_CMOS       DI
 
                LD A,%01001111
 
                CALL CLEAR_TXTSCR
 
                LD H,CMOS_BYTE_00
 
                CALL READCMOS
 
                AND M_TYPE_FONT
 
                LD (TYPEFONT),A
 
                LD DE,0
 
                LD BC,0X5019
 
                CALL RAMKA4TXTSCR
 
                LD DE,0X2201
 
                LD HL,TXT_EDITCMOS2
 
                CALL PRTT_MSG
 
                LD DE,0X1217
 
                LD HL,TXT_EDITCMOS1
 
                CALL PRTT_MSG
 
                LD IX,0
 
                CALL INVERS_CUR
 
EC02            CALL LOAD_CMOS
 
                CALL PRINT_DUMP
 
                CALL HELP_REG
 
                CALL TXTMODE_ON
 
EC01            EI
 
                HALT
 
                LD H,0X0C
 
                CALL READCMOS
 
                BIT 4,A
 
                CALL NZ,PRINT0STROKA
 
                BIT 5,(IY+1)
 
                JP Z,EC01
 
                RES 5,(IY+1)
 
                LD A,(0X5C08)
 
                CP "l"
 
                JR Z,EC02
 
                CP "x"
 
                JR Z,EC06
 
                CP "s"
 
                JR NZ,EC03
 
                CALL SAVE_CMOS
 
                JR EC01
 
 
 
EC03            CP 9
 
                CALL Z,CUR_RIGHT
 
                CP 8
 
                CALL Z,CUR_LEFT
 
                CP 0X0B
 
                CALL Z,CUR_UP
 
                CP 0X0A
 
                CALL Z,CUR_DOWN
 
                CP "0"
 
                JR C,EC01
 
                CP ":"
 
                JR C,EC05
 
                RES 5,A
 
EC04            CP "A"
 
                JR C,EC01
 
                CP "G"
 
                JR NC,EC01
 
EC05            CALL INPUT_HALFBYTE
 
                JR EC01
 
 
 
EC06            CALL TXTMODE_OFF
 
                LD A,0X10
 
                CALL SET_7FFD
 
                JP RESTART
 
 
 
;РИСОВАНИЕ ДВОЙНОЙ РАМКИ ОКНА В ТЕКСТМОДЕ
 
;D-X E-Y B-H C-V
 
RAMKA4TXTSCR    DEC B
 
                DEC B
 
                DEC C
 
                DEC C
 
                PUSH DE
 
                PUSH BC
 
                LD A,"╔"
 
                CALL PRTSYMTXTMODE
 
R4TXTS1         LD A,"═"
 
                CALL PRTSYMTXTMODE
 
                DJNZ R4TXTS1
 
                LD A,"╗"
 
                CALL PRTSYMTXTMODE
 
                DEC D
 
                INC E
 
R4TXTS2         LD A,"║"
 
                CALL PRTSYMTXTMODE
 
                DEC D
 
                INC E
 
                DEC C
 
                JR NZ,R4TXTS2
 
                POP BC
 
                POP DE
 
                INC E
 
R4TXTS3         LD A,"║"
 
                CALL PRTSYMTXTMODE
 
                DEC D
 
                INC E
 
                DEC C
 
                JR NZ,R4TXTS3
 
                LD A,"╚"
 
                CALL PRTSYMTXTMODE
 
R4TXTS4         LD A,"═"
 
                CALL PRTSYMTXTMODE
 
                DJNZ R4TXTS4
 
                LD A,"╝"
 
                JP PRTSYMTXTMODE
 
 
 
INPUT_HALFBYTE  SUB "0"
 
                CP 0X0A
 
                JR C,IHB1
 
                SUB 7
 
IHB1            LD E,A
 
                LD A,IXH
 
                LD L,A
 
                LD H,0XC0
 
                LD A,IXL
 
                AND A
 
                JR NZ,LOW_HALF
 
                LD A,(HL)
 
                AND 0X0F
 
                LD D,A
 
                LD A,E
 
                RRCA
 
                RRCA
 
                RRCA
 
                RRCA
 
                OR D
 
                JR LOW_HALF1
 
 
 
LOW_HALF        LD A,(HL)
 
                AND 0XF0
 
                OR E
 
LOW_HALF1       LD (HL),A
 
                LD A,L
 
                PUSH AF
 
                LD D,A
 
                LD E,(HL)
 
                EX DE,HL
 
                CALL WRITECMOS
 
                POP AF
 
                CALL PRINT_STROKA
 
                JP CUR_RIGHT
 
 
 
CUR_UP          PUSH AF
 
                CALL INVERS_CUR
 
                LD A,IXH
 
                SUB 0X10
 
                CP 0XF0
 
                JR C,CUR_UP1
 
                AND 0X0F
 
                OR 0XE0
 
CUR_UP1         LD IXH,A
 
                JR ECUR_RIGHT
 
 
 
CUR_DOWN        PUSH AF
 
                CALL INVERS_CUR
 
                LD A,IXH
 
                ADD A,0X10
 
                CP 0XF0
 
                JR C,CUR_DOWN1
 
                AND 0X0F
 
CUR_DOWN1       LD IXH,A
 
                JR ECUR_RIGHT
 
 
 
CUR_RIGHT       PUSH AF
 
                CALL INVERS_CUR
 
                INC IXL
 
                LD A,IXL
 
                CP 2
 
                JR C,ECUR_RIGHT
 
                INC IXH
 
                LD A,IXH
 
                CP 0XF0
 
                JR C,CUR_RIGHT1
 
                LD IXH,0
 
CUR_RIGHT1      LD IXL,0
 
ECUR_RIGHT      CALL HELP_REG
 
                CALL INVERS_CUR
 
                POP AF
 
                RET
 
 
 
CUR_LEFT        PUSH AF
 
                CALL INVERS_CUR
 
                DEC IXL
 
                JP P,ECUR_RIGHT
 
                LD IXL,1
 
                DEC IXH
 
                LD A,IXH
 
                CP 0XF0
 
                JR C,ECUR_RIGHT
 
                LD IX,CRCCMOSHIGH*0X100+1
 
                JR ECUR_RIGHT
 
 
 
HELP_REG        LD A,IXH
 
                LD HL,EMPTY_STROKA
 
                CP 0X12
 
                JR NC,HELP_REG1
 
                LD L,A
 
                LD H,0
 
                ADD HL,HL
 
                ADD HL,HL
 
                ADD HL,HL
 
                ADD HL,HL
 
                ADD HL,HL
 
                LD DE,TXT_HELPREG
 
                ADD HL,DE
 
HELP_REG1       LD DE,0X1203
 
                JP PRTT_MSG
 
 
 
INVERS_CUR      LD A,0X1B
 
                CALL SET_7FFD
 
                LD A,IXH
 
                AND 0XF0
 
                RRCA
 
                RRCA
 
                RRCA
 
                RRCA
 
                ADD A,Y4DUMP
 
                LD L,A
 
                LD H,0
 
                LD D,H
 
                REPT 6
 
                ADD HL,HL
 
                ENDM
 
                LD A,IXH
 
                AND 0X0F
 
                LD E,A
 
                ADD A,A
 
                ADD A,E
 
                LD E,A
 
                LD A,IXL
 
                ADD A,X4DUMP+7
 
                ADD A,E
 
                LD E,A
 
                SRL E
 
                ADD HL,DE
 
                AND 1
 
                RRCA
 
                RRCA
 
                RRCA
 
                OR 0XC1
 
                LD D,A
 
                LD E,0XC0
 
                ADD HL,DE
 
                LD A,(HL)
 
                XOR %00000100
 
                LD (HL),A
 
                LD A,0X1F
 
                JP SET_7FFD
 
 
 
;ОЧИСТКА ТЕКСТМОДНОГО ЭКРАНА
 
CLEAR_TXTSCR    PUSH AF
 
                LD A,0X1F
 
                CALL SET_7FFD
 
                LD HL,0XC1C0
 
                LD A," "
 
                CALL CLS_TXTSCR
 
                LD HL,0XE1C0
 
                CALL CLS_TXTSCR
 
                LD A,0X1B
 
                CALL SET_7FFD
 
                LD HL,0XC1C0
 
                POP AF
 
                CALL CLS_TXTSCR
 
                LD HL,0XE1C0
 
                CALL CLS_TXTSCR
 
                LD A,0X1F
 
                JP SET_7FFD
 
 
 
;ОЧИСТКА КУСОЧКА ТЕКСТМОДНОГО ЭКРАНА
 
CLS_TXTSCR      LD D,H
 
                LD E,L
 
                LD BC,0X63F
 
                LD (HL),A
 
                INC DE
 
                LDIR
 
                RET
 
 
 
;ПЕЧАТЬ ТЕКСТОВОЙ СТРОКИ НА ТЕСТМОДНОМ ЭКРАНЕ
 
PRTT_MSG        LD A,(HL)
 
                INC HL
 
                AND A
 
                RET Z
 
                CALL PRTSYMTXTMODE
 
                JR PRTT_MSG
 
 
 
PRINT0STROKA    LD H,0
 
                CALL READCMOS
 
                LD (0XC000),A
 
                LD H,2
 
                CALL READCMOS
 
                LD (0XC002),A
 
                LD H,4
 
                CALL READCMOS
 
                LD (0XC004),A
 
                XOR A
 
                LD L,A
 
                PUSH IX
 
                LD IX,0
 
                CALL PRINT_STROKA1
 
                POP IX
 
                RET
 
 
 
PRINT_STROKA    LD A,IXH
 
                AND 0XF0
 
                LD L,A
 
PRINT_STROKA1   LD B,1
 
                LD H,0
 
                RRCA
 
                RRCA
 
                RRCA
 
                RRCA
 
                ADD A,Y4DUMP
 
                LD E,A
 
                LD D,X4DUMP
 
                JR PRINT1STROKA
 
 
 
PRINT_DUMP      
 
;               LD DE,(X4DUMP+6)*0X100+Y4DUMP-2
 
;               XOR A
 
;               LD B,0X10
 
;PRT_ADRB       PUSH AF
 
;               CALL PRTT_A_
 
;               LD A," "
 
;               CALL PRTSYMTXTMODE
 
;               POP AF
 
;               DJNZ PRT_ADRB
 
                LD B,0X0F
 
                LD DE,X4DUMP*0X100+Y4DUMP
 
                LD HL,0
 
PRINT1STROKA    CALL PRTT_SMESH
 
                LD A,0XC0
 
                OR H
 
                LD H,A
 
                CALL PRTT_STROKA
 
                LD A,H
 
                AND 0X3F
 
                LD H,A
 
                INC E
 
                LD D,X4DUMP
 
                DJNZ PRINT1STROKA
 
                RET
 
 
 
PRTT_STROKA     LD C,0X10
 
PRTT_STROKA1    LD A,(HL)
 
                INC HL
 
                CALL PRTT_A_
 
                LD A," "
 
                CALL PRTSYMTXTMODE
 
                DEC C
 
                JR NZ,PRTT_STROKA1
 
                RET
 
 
 
PRTT_SMESH      CALL PRTT_HL_
 
                LD A,":"
 
                CALL PRTSYMTXTMODE
 
                LD A," "
 
                JR PRTSYMTXTMODE
 
 
 
PRTT_HL_        LD A,H
 
                CALL PRTT_A_
 
                LD A,L
 
PRTT_A_         PUSH AF
 
                RRCA
 
                RRCA
 
                RRCA
 
                RRCA
 
                CALL PRTT_A_1
 
                POP AF
 
PRTT_A_1        AND 0X0F
 
                CP 0X0A
 
                CCF
 
                ADC A,"0"
 
                DAA
 
                AND 0X7F
 
;ПЕЧАТЬ СИМВОЛА НА ТЕКСТМОДНОМ ЭКРАНЕ
 
;D-X E-Y
 
PRTSYMTXTMODE   PUSH DE
 
                PUSH HL
 
                LD L,A
 
                LD A,0
 
TYPEFONT        EQU $-1
 
                AND A
 
                LD A,L
 
                JR NZ,.LOOP
 
                CP 0X80
 
                JR C,.LOOP
 
                LD HL,CONV_CP866_ATM
 
                PUSH BC
 
                RES 7,A
 
                LD B,0
 
                LD C,A
 
                ADD HL,BC
 
                LD A,(HL)
 
                POP BC
 
.LOOP           PUSH AF
 
                LD L,E
 
                LD A,D
 
                LD H,0
 
                LD D,H
 
                ADD HL,HL
 
                ADD HL,HL
 
                ADD HL,HL
 
                ADD HL,HL
 
                ADD HL,HL
 
                ADD HL,HL
 
                LD E,A
 
                SRL E
 
                ADD HL,DE
 
                AND 1
 
                RRCA
 
                RRCA
 
                RRCA
 
                OR 0XC1
 
                LD D,A
 
                LD E,0XC0
 
                ADD HL,DE
 
                POP AF
 
                LD (HL),A
 
                POP HL
 
                POP DE
 
                INC D
 
                RET
 
 
 
SET_C_A         OUT (C),A
 
                RET
 
 
 
LOAD_CMOS       LD HL,0XC000
 
                LD D,0
 
EDITCMOS1       EX DE,HL
 
                CALL READCMOS
 
                EX DE,HL
 
                LD (HL),E
 
                INC HL
 
                INC D
 
                LD A,0XF0
 
                CP D
 
                JR NZ,EDITCMOS1
 
                RET
 
 
 
SAVE_CMOS       LD HL,0XC000
 
                LD D,0
 
SAVECMOS1       LD E,(HL)
 
                EX DE,HL
 
                CALL WRITECMOS
 
                EX DE,HL
 
                INC HL
 
                INC D
 
                LD A,0XF0
 
                CP D
 
                JR NZ,SAVECMOS1
 
                RET
 
 
 
;НА ВХОДЕ: H-АДРЕС ЯЧЕЙКИ
 
;          L-ПРОЧИТАННОЕ ЗНАЧЕНИЕ
 
READCMOS        DI
 
                PUSH BC
 
                LD BC,PENT_CONF
 
                LD A,CMOS_ON                    ;РАЗРЕШЕНИЕ ДОСТУПА К КМОСУ
 
                OUT (C),A
 
                LD B,HIGH (CMOS_SET_ADR)
 
                OUT (C),H
 
                LD B,HIGH (CMOS_RD_WR)
 
                IN L,(C)
 
                LD A,CMOS_OFF                   ;ЗАПРЕТ ДОСТУПА К КМОСУ
 
                LD B,HIGH (PENT_CONF)
 
                OUT (C),A
 
                POP BC
 
                LD A,L
 
                AND A
 
                RET
 
 
 
;НА ВХОДЕ: H-АДРЕС ЯЧЕЙКИ
 
;          L-ЧТО ТУДА ЗАПИСАТЬ
 
WRITECMOS       RST8 _CMOS_RW,_WRITE_CMOS
 
                RET
 
 
 
;ЧТЕНИЕ ВЕРСИИ FPGA ИЛИ BOOTLOADER, ЕСЛИ ЭТО ПЕНТЕВА
 
GET_VERS_EVO    LD C,L
 
                LD H,0XF0
 
                CALL WRITECMOS                  ;ПИШЕМ В АДРЕС 0XF0 ДЛЯ ПОЛУЧЕНИЯ ВЕРСИИ
 
                CALL READCMOS                   ;ЧИТАЕМ ОТВЕТ
 
                CP C                            ;СОВПАЛО С ТЕМ ЧТО ЗАПИСАНО, НЕ ПОДДЕРЖИВАЕТСЯ
 
                RET Z                           ;И ЭТО НЕ ПЕНТЕВА (ИЛИ ВЕРСИЯ FPGA СТАРАЯ). ВЫХОДИМ
 
                INC A                           ;ПРИШЕЛ 0XFF, ЗНАЧИТ ЧАСОВ НЕТУ
 
                RET Z                           ;ВЫХОДИМ
 
                DI
 
                DEC A                           ;ВОЗВРАЩАЕМ СЧИТАННОЕ ЗНАЧЕНИЕ
 
                PUSH DE
 
                LD (DE),A                       ;ПОЛОЖИЛИ В БУФЕР УЖЕ ПРОЧИТАННЫЙ БАЙТ
 
                INC DE
 
                LD B,0X0F                       ;ОСТАЛОСЬ ПРОЧИТАТЬ ОСТАЛЬНЫЕ ЕЩЕ 15 БАЙТ
 
GVE1            INC H
 
                CALL READCMOS                   ;ЧИТАЕМ БАЙТ
 
                LD (DE),A
 
                INC DE
 
                DJNZ GVE1                       ;ЧИТАЕМ ПОКА ВСЕ БАЙТЫ НЕ КОНЧАТСЯ
 
                POP DE                          ;ПРОВЕРЯМ В БУФЕРЕ 12 БАЙТ ТЕКСТА
 
                LD H,D
 
                LD L,E
 
                LD B,0X0C                       ;ЕСЛИ ТЕКСТ КОРОЧЕ ИЩЕМ БАЙТ 0 (ПРИЗНАК КОНЦА ТЕКСТА)
 
GVE2            LD A,(DE)
 
                AND A
 
                JR Z,GVE3
 
                INC DE
 
                DJNZ GVE2
 
GVE3            LD BC,0X0C                      ;ЗАБРАЛИ ИЗ БУФЕРА 2 БАЙТА ДАТЫ В СПЕЦФОРМАТЕ
 
                ADD HL,BC
 
                LD C,(HL)
 
                INC HL
 
                LD B,(HL)
 
                EX DE,HL
 
                LD (HL)," "                     ;ДОБАВЛЯЕМ К ТЕКСТУ ПРОБЕЛ-РАЗДЕЛИТЕЛЬ
 
                INC HL
 
 
 
;РАСПАКОВЩИК ДАТЫ
 
UNVERS          LD A,C
 
                AND 0X1F                        ;НУЖНЫ 5 БИТ-ЧИСЛО МЕСЯЦА
 
                CALL A2TXT                      ;КОНВЕРСИЯ И УКЛАДКА ДАТЫ
 
                SRL B
 
                RR C                            ;СДВИНУЛИ ДЛЯ ЦЕЛОСТНОСТИ НОМЕРА МЕСЯЦА
 
                LD A,C                          ;ВЗЯЛИ БИТЫ МЕСЯЦА
 
                RRCA
 
                RRCA
 
                RRCA
 
                RRCA                            ;СДВИНУЛИ В МЛАДШИЕ БИТЫ
 
                AND 0X0F                        ;НАМ НУЖНЫ ТОЛЬКО 4 БИТА МЕСЯЦА
 
                LD (HL),"."                     ;РАЗДЕЛИТЕЛЬНАЯ ТОЧКА
 
                INC HL
 
                CALL A2TXT                      ;КОНВЕРСИЯ И УКЛАДКА МЕСЯЦА
 
                LD (HL),"."                     ;РАЗДЕЛИТЕЛЬНАЯ ТОЧКА
 
                INC HL
 
                LD (HL),"2"
 
                INC HL
 
                LD (HL),"0"                     ;ДОБАВИЛИ К ГОДУ ДВЕ ЦИФЕРКИ
 
                INC HL
 
                LD A,B                          ;ВЗЯЛИ НОМЕР ГОДА
 
                AND 0X3F                        ;НУЖНЫ ТОЛЬКО 6 БИТ
 
                CALL A2TXT                      ;КОНВЕРСИЯ И УКЛАДКА ГОДА
 
                BIT 6,B                         ;ЕСЛИ БИТ 6 (СДВИНУТЫЙ БИТ 7) УСТАНОВЛЕН
 
                RET NZ  ;JR NZ,GVE4             ;ТО ЗАВЕРШАЕМ СТРОКУ
 
                EX DE,HL                        ;ИНАЧЕ ВЕРСИЯ БЕТА, О ЧЕМ ДОБАВЛЯЕМ ТЕКСТ В БУФЕР
 
                LD HL,TXT_BETA
 
                LD BC,5
 
                LDIR
 
                EX DE,HL
 
                RET
 
 
 
;РАСПЕЧАТКА НА ЭКРАНЕ ВРЕМЕНИ, ДАТЫ И ДНЯ НЕДЕЛИ
 
PRINTTIME       LD A,(ERS_FLAGS)
 
                AND M_CLOCK_ON
 
                RET Z                           ;ЧАСЫ НЕ ОБНАРУЖЕНЫ, ВЫХОДИМ НИЧЕГО НЕ ВЫВОДЯ
 
                LD H,0X0C
 
                CALL READCMOS
 
                AND 0X10
 
                RET Z                           ;ЕСЛИ ВРЕМЯ ЕЩЕ НЕ ОБНОВИЛОСЬ, ВЫХОДИМ НИЧЕГО НЕ ВЫВОДЯ
 
                LD H,CMOS_BYTE_01
 
                CALL READCMOS
 
                AND M_CLOCK_VIEW
 
                JR NZ,VIDEOMODE                 ;ОТОБРАЖЕНИЕ ВЫКЛЮЧЕНО, ВЫХОДИМ НИЧЕГО НЕ ВЫВОДЯ
 
                DI
 
                EXX
 
                LD BC,TXT_TIME                  ;ЧТЕНИЕ И ПРЕОБРАЗОВАНИЕ ВРЕМЕНИ
 
                LD H,4
 
                CALL READCMOS                   ;ПРОЧИТАЛИ ЧАСЫ
 
                CALL BYTE2TXT                   ;СКОНВЕРТИЛИ ЧАСЫ С УКЛАДКОЙ В БУФЕР
 
                LD A,(BC)
 
                XOR ':'-' '                     ;КОНВЕРСИЯ МИГАЮЩЕГО ДВОЕТОЧИЯ
 
                LD (BC),A
 
                INC BC
 
                LD H,2
 
                CALL READCMOS                   ;ПРОЧИТАЛИ МИНУТЫ
 
                CALL BYTE2TXT                   ;СКОНВЕРТИЛИ ЧАСЫ С УКЛАДКОЙ В БУФЕР
 
                LD A,(BC)
 
                XOR ':'-' '                     ;КОНВЕРСИЯ МИГАЮЩЕГО ДВОЕТОЧИЯ
 
                LD (BC),A
 
                INC BC
 
                LD H,0
 
                CALL READCMOS                   ;ПРОЧИТАЛИ СЕКУНДЫ
 
                CALL BYTE2TXT
 
                LD BC,TXT_DATA                  ;ДАЛЕЕ ЧТЕНИЕ И ПРЕОБРАЗОВАНИЕ ДАТЫ
 
                LD H,7
 
                CALL READCMOS
 
                CALL BYTE2TXT
 
                INC BC
 
                LD H,8
 
                CALL READCMOS
 
                CALL BYTE2TXT
 
                INC BC
 
                LD H,9
 
                CALL READCMOS
 
                CALL BYTE2TXT
 
                LD HL,BUFF_TIME                 ;ПЕЧАТЕМ ВРЕМЯ ИЗ БУФЕРА
 
                RST8 _PRINT_MESSAGE
 
                EXX
 
 
 
VIDEOMODE       DI
 
                LD HL,0XF003
 
                LD BC,PENT_CONF
 
                LD A,CMOS_ON                    ;РАЗРЕШЕНИЕ ДОСТУПА К КМОСУ
 
                OUT (C),A
 
                LD B,HIGH (CMOS_SET_ADR)
 
                OUT (C),H
 
                LD B,HIGH (CMOS_RD_WR)
 
                OUT (C),L
 
                LD A,CMOS_OFF                   ;ЗАПРЕТ ДОСТУПА К КМОСУ
 
                LD B,HIGH (PENT_CONF)
 
                OUT (C),A
 
                CALL READCMOS
 
                LD DE,TV_VGA
 
                PUSH AF
 
                AND %00110000
 
                RRCA
 
                RRCA
 
                LD C,A
 
                LD B,0
 
                LD HL,TXT_HZ
 
                ADD HL,BC
 
                LDI
 
                LDI
 
                LDI
 
                LDI
 
                INC DE
 
                POP AF
 
                BIT 0,A
 
                LD HL,TXT_TVVGA
 
                JR Z,VMODE1
 
                INC HL
 
                INC HL
 
                INC HL
 
VMODE1          LDI
 
                LDI
 
                LDI
 
                LD HL,TXT_VMODE                 ;ПЕЧАТЕМ ТЕКУЩИЙ ВИДЕО РЕЖИМ
 
                RST8 _PRINT_MESSAGE
 
                RET
 
 
 
;ПЕРЕВОД "A" В ДЕСЯТИЧКУ И В ТЕКСТ
 
A2TXT           PUSH HL
 
                LD L,A
 
                LD H,0
 
                LD DE,10
 
                XOR A
 
                DEC A
 
                INC A
 
                SBC HL,DE
 
                JR NC,$-3
 
                ADD HL,DE
 
                ADD A,"0"
 
                LD D,A
 
                LD A,L
 
                ADD A,"0"
 
                POP HL
 
                LD (HL),D
 
                INC HL
 
                LD (HL),A
 
                INC HL
 
                RET
 
 
 
BYTE2TXT        LD L,A
 
                LD H,"0"
 
                RRCA
 
                RRCA
 
                RRCA
 
                RRCA
 
                AND 0X0F
 
                ADD A,H
 
                LD (BC),A
 
                INC BC
 
                LD A,L
 
                AND 0X0F
 
                ADD A,H
 
                LD (BC),A
 
                INC BC
 
                RET
 
 
 
TXTMODE_ON      PEC_ON M_SHADOW_BF
 
                LD BC,0XFF77
 
                LD A,0XA6
 
                CALL SET_C_A
 
                PEC_OFF M_SHADOW_BF
 
                RET
 
 
 
TXTMODE_OFF     PEC_ON M_SHADOW_BF
 
                LD BC,0XFF77
 
                LD A,0XA3
 
                CALL SET_C_A
 
                PEC_OFF M_SHADOW_BF
 
                RET