Subversion Repositories pentevo

Rev

Rev 801 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?

  1.  
  2. ; LAST UPDATE: 08.09.2022 savelij
  3.  
  4. X4DUMP          EQU 0X0C
  5. Y4DUMP          EQU 0X05
  6.  
  7. EDIT_CMOS       DI
  8.                 LD A,%01001111
  9.                 CALL CLEAR_TXTSCR
  10.                 LD H,CMOS_BYTE_00
  11.                 CALL READCMOS
  12.                 AND M_TYPE_FONT
  13.                 LD (TYPEFONT),A
  14.                 LD DE,0
  15.                 LD BC,0X5019
  16.                 CALL RAMKA4TXTSCR
  17.                 LD DE,0X2201
  18.                 LD HL,TXT_EDITCMOS2
  19.                 CALL PRTT_MSG
  20.                 LD DE,0X1217
  21.                 LD HL,TXT_EDITCMOS1
  22.                 CALL PRTT_MSG
  23.                 LD IX,0
  24.                 CALL INVERS_CUR
  25. EC02            CALL LOAD_CMOS
  26.                 CALL PRINT_DUMP
  27.                 CALL HELP_REG
  28.                 CALL TXTMODE_ON
  29. EC01            EI
  30.                 HALT
  31.                 LD H,0X0C
  32.                 CALL READCMOS
  33.                 BIT 4,A
  34.                 CALL NZ,PRINT0STROKA
  35.                 BIT 5,(IY+1)
  36.                 JP Z,EC01
  37.                 RES 5,(IY+1)
  38.                 LD A,(0X5C08)
  39.                 CP "l"
  40.                 JR Z,EC02
  41.                 CP "x"
  42.                 JR Z,EC06
  43.                 CP "s"
  44.                 JR NZ,EC03
  45.                 CALL SAVE_CMOS
  46.                 JR EC01
  47.  
  48. EC03            CP 9
  49.                 CALL Z,CUR_RIGHT
  50.                 CP 8
  51.                 CALL Z,CUR_LEFT
  52.                 CP 0X0B
  53.                 CALL Z,CUR_UP
  54.                 CP 0X0A
  55.                 CALL Z,CUR_DOWN
  56.                 CP "0"
  57.                 JR C,EC01
  58.                 CP ":"
  59.                 JR C,EC05
  60.                 RES 5,A
  61. EC04            CP "A"
  62.                 JR C,EC01
  63.                 CP "G"
  64.                 JR NC,EC01
  65. EC05            CALL INPUT_HALFBYTE
  66.                 JR EC01
  67.  
  68. EC06            CALL TXTMODE_OFF
  69.                 LD A,0X10
  70.                 CALL SET_7FFD
  71.                 JP RESTART
  72.  
  73. ;РИСОВАНИЕ ДВОЙНОЙ РАМКИ ОКНА В ТЕКСТМОДЕ
  74. ;D-X E-Y B-H C-V
  75. RAMKA4TXTSCR    DEC B
  76.                 DEC B
  77.                 DEC C
  78.                 DEC C
  79.                 PUSH DE
  80.                 PUSH BC
  81.                 LD A,"╔"
  82.                 CALL PRTSYMTXTMODE
  83. R4TXTS1         LD A,"═"
  84.                 CALL PRTSYMTXTMODE
  85.                 DJNZ R4TXTS1
  86.                 LD A,"╗"
  87.                 CALL PRTSYMTXTMODE
  88.                 DEC D
  89.                 INC E
  90. R4TXTS2         LD A,"║"
  91.                 CALL PRTSYMTXTMODE
  92.                 DEC D
  93.                 INC E
  94.                 DEC C
  95.                 JR NZ,R4TXTS2
  96.                 POP BC
  97.                 POP DE
  98.                 INC E
  99. R4TXTS3         LD A,"║"
  100.                 CALL PRTSYMTXTMODE
  101.                 DEC D
  102.                 INC E
  103.                 DEC C
  104.                 JR NZ,R4TXTS3
  105.                 LD A,"╚"
  106.                 CALL PRTSYMTXTMODE
  107. R4TXTS4         LD A,"═"
  108.                 CALL PRTSYMTXTMODE
  109.                 DJNZ R4TXTS4
  110.                 LD A,"╝"
  111.                 JP PRTSYMTXTMODE
  112.  
  113. INPUT_HALFBYTE  SUB "0"
  114.                 CP 0X0A
  115.                 JR C,IHB1
  116.                 SUB 7
  117. IHB1            LD E,A
  118.                 LD A,IXH
  119.                 LD L,A
  120.                 LD H,0XC0
  121.                 LD A,IXL
  122.                 AND A
  123.                 JR NZ,LOW_HALF
  124.                 LD A,(HL)
  125.                 AND 0X0F
  126.                 LD D,A
  127.                 LD A,E
  128.                 RRCA
  129.                 RRCA
  130.                 RRCA
  131.                 RRCA
  132.                 OR D
  133.                 JR LOW_HALF1
  134.  
  135. LOW_HALF        LD A,(HL)
  136.                 AND 0XF0
  137.                 OR E
  138. LOW_HALF1       LD (HL),A
  139.                 LD A,L
  140.                 PUSH AF
  141.                 LD D,A
  142.                 LD E,(HL)
  143.                 EX DE,HL
  144.                 CALL WRITECMOS
  145.                 POP AF
  146.                 CALL PRINT_STROKA
  147.                 JP CUR_RIGHT
  148.  
  149. CUR_UP          PUSH AF
  150.                 CALL INVERS_CUR
  151.                 LD A,IXH
  152.                 SUB 0X10
  153.                 CP 0XF0
  154.                 JR C,CUR_UP1
  155.                 AND 0X0F
  156.                 OR 0XE0
  157. CUR_UP1         LD IXH,A
  158.                 JR ECUR_RIGHT
  159.  
  160. CUR_DOWN        PUSH AF
  161.                 CALL INVERS_CUR
  162.                 LD A,IXH
  163.                 ADD A,0X10
  164.                 CP 0XF0
  165.                 JR C,CUR_DOWN1
  166.                 AND 0X0F
  167. CUR_DOWN1       LD IXH,A
  168.                 JR ECUR_RIGHT
  169.  
  170. CUR_RIGHT       PUSH AF
  171.                 CALL INVERS_CUR
  172.                 INC IXL
  173.                 LD A,IXL
  174.                 CP 2
  175.                 JR C,ECUR_RIGHT
  176.                 INC IXH
  177.                 LD A,IXH
  178.                 CP 0XF0
  179.                 JR C,CUR_RIGHT1
  180.                 LD IXH,0
  181. CUR_RIGHT1      LD IXL,0
  182. ECUR_RIGHT      CALL HELP_REG
  183.                 CALL INVERS_CUR
  184.                 POP AF
  185.                 RET
  186.  
  187. CUR_LEFT        PUSH AF
  188.                 CALL INVERS_CUR
  189.                 DEC IXL
  190.                 JP P,ECUR_RIGHT
  191.                 LD IXL,1
  192.                 DEC IXH
  193.                 LD A,IXH
  194.                 CP 0XF0
  195.                 JR C,ECUR_RIGHT
  196.                 LD IX,CRCCMOSHIGH*0X100+1
  197.                 JR ECUR_RIGHT
  198.  
  199. HELP_REG        LD A,IXH
  200.                 LD HL,EMPTY_STROKA
  201.                 CP 0X12
  202.                 JR NC,HELP_REG1
  203.                 LD L,A
  204.                 LD H,0
  205.                 ADD HL,HL
  206.                 ADD HL,HL
  207.                 ADD HL,HL
  208.                 ADD HL,HL
  209.                 ADD HL,HL
  210.                 LD DE,TXT_HELPREG
  211.                 ADD HL,DE
  212. HELP_REG1       LD DE,0X1203
  213.                 JP PRTT_MSG
  214.  
  215. INVERS_CUR      LD A,0X1B
  216.                 CALL SET_7FFD
  217.                 LD A,IXH
  218.                 AND 0XF0
  219.                 RRCA
  220.                 RRCA
  221.                 RRCA
  222.                 RRCA
  223.                 ADD A,Y4DUMP
  224.                 LD L,A
  225.                 LD H,0
  226.                 LD D,H
  227.                 REPT 6
  228.                 ADD HL,HL
  229.                 ENDM
  230.                 LD A,IXH
  231.                 AND 0X0F
  232.                 LD E,A
  233.                 ADD A,A
  234.                 ADD A,E
  235.                 LD E,A
  236.                 LD A,IXL
  237.                 ADD A,X4DUMP+7
  238.                 ADD A,E
  239.                 LD E,A
  240.                 SRL E
  241.                 ADD HL,DE
  242.                 AND 1
  243.                 RRCA
  244.                 RRCA
  245.                 RRCA
  246.                 OR 0XC1
  247.                 LD D,A
  248.                 LD E,0XC0
  249.                 ADD HL,DE
  250.                 LD A,(HL)
  251.                 XOR %00000100
  252.                 LD (HL),A
  253.                 LD A,0X1F
  254.                 JP SET_7FFD
  255.  
  256. ;ОЧИСТКА ТЕКСТМОДНОГО ЭКРАНА
  257. CLEAR_TXTSCR    PUSH AF
  258.                 LD A,0X1F
  259.                 CALL SET_7FFD
  260.                 LD HL,0XC1C0
  261.                 LD A," "
  262.                 CALL CLS_TXTSCR
  263.                 LD HL,0XE1C0
  264.                 CALL CLS_TXTSCR
  265.                 LD A,0X1B
  266.                 CALL SET_7FFD
  267.                 LD HL,0XC1C0
  268.                 POP AF
  269.                 CALL CLS_TXTSCR
  270.                 LD HL,0XE1C0
  271.                 CALL CLS_TXTSCR
  272.                 LD A,0X1F
  273.                 JP SET_7FFD
  274.  
  275. ;ОЧИСТКА КУСОЧКА ТЕКСТМОДНОГО ЭКРАНА
  276. CLS_TXTSCR      LD D,H
  277.                 LD E,L
  278.                 LD BC,0X63F
  279.                 LD (HL),A
  280.                 INC DE
  281.                 LDIR
  282.                 RET
  283.  
  284. ;ПЕЧАТЬ ТЕКСТОВОЙ СТРОКИ НА ТЕСТМОДНОМ ЭКРАНЕ
  285. PRTT_MSG        LD A,(HL)
  286.                 INC HL
  287.                 AND A
  288.                 RET Z
  289.                 CALL PRTSYMTXTMODE
  290.                 JR PRTT_MSG
  291.  
  292. PRINT0STROKA    LD H,0
  293.                 CALL READCMOS
  294.                 LD (0XC000),A
  295.                 LD H,2
  296.                 CALL READCMOS
  297.                 LD (0XC002),A
  298.                 LD H,4
  299.                 CALL READCMOS
  300.                 LD (0XC004),A
  301.                 XOR A
  302.                 LD L,A
  303.                 PUSH IX
  304.                 LD IX,0
  305.                 CALL PRINT_STROKA1
  306.                 POP IX
  307.                 RET
  308.  
  309. PRINT_STROKA    LD A,IXH
  310.                 AND 0XF0
  311.                 LD L,A
  312. PRINT_STROKA1   LD B,1
  313.                 LD H,0
  314.                 RRCA
  315.                 RRCA
  316.                 RRCA
  317.                 RRCA
  318.                 ADD A,Y4DUMP
  319.                 LD E,A
  320.                 LD D,X4DUMP
  321.                 JR PRINT1STROKA
  322.  
  323. PRINT_DUMP     
  324. ;               LD DE,(X4DUMP+6)*0X100+Y4DUMP-2
  325. ;               XOR A
  326. ;               LD B,0X10
  327. ;PRT_ADRB       PUSH AF
  328. ;               CALL PRTT_A_
  329. ;               LD A," "
  330. ;               CALL PRTSYMTXTMODE
  331. ;               POP AF
  332. ;               DJNZ PRT_ADRB
  333.                 LD B,0X0F
  334.                 LD DE,X4DUMP*0X100+Y4DUMP
  335.                 LD HL,0
  336. PRINT1STROKA    CALL PRTT_SMESH
  337.                 LD A,0XC0
  338.                 OR H
  339.                 LD H,A
  340.                 CALL PRTT_STROKA
  341.                 LD A,H
  342.                 AND 0X3F
  343.                 LD H,A
  344.                 INC E
  345.                 LD D,X4DUMP
  346.                 DJNZ PRINT1STROKA
  347.                 RET
  348.  
  349. PRTT_STROKA     LD C,0X10
  350. PRTT_STROKA1    LD A,(HL)
  351.                 INC HL
  352.                 CALL PRTT_A_
  353.                 LD A," "
  354.                 CALL PRTSYMTXTMODE
  355.                 DEC C
  356.                 JR NZ,PRTT_STROKA1
  357.                 RET
  358.  
  359. PRTT_SMESH      CALL PRTT_HL_
  360.                 LD A,":"
  361.                 CALL PRTSYMTXTMODE
  362.                 LD A," "
  363.                 JR PRTSYMTXTMODE
  364.  
  365. PRTT_HL_        LD A,H
  366.                 CALL PRTT_A_
  367.                 LD A,L
  368. PRTT_A_         PUSH AF
  369.                 RRCA
  370.                 RRCA
  371.                 RRCA
  372.                 RRCA
  373.                 CALL PRTT_A_1
  374.                 POP AF
  375. PRTT_A_1        AND 0X0F
  376.                 CP 0X0A
  377.                 CCF
  378.                 ADC A,"0"
  379.                 DAA
  380.                 AND 0X7F
  381. ;ПЕЧАТЬ СИМВОЛА НА ТЕКСТМОДНОМ ЭКРАНЕ
  382. ;D-X E-Y
  383. PRTSYMTXTMODE   PUSH DE
  384.                 PUSH HL
  385.                 LD L,A
  386.                 LD A,0
  387. TYPEFONT        EQU $-1
  388.                 AND A
  389.                 LD A,L
  390.                 JR NZ,.LOOP
  391.                 CP 0X80
  392.                 JR C,.LOOP
  393.                 LD HL,CONV_CP866_ATM
  394.                 PUSH BC
  395.                 RES 7,A
  396.                 LD B,0
  397.                 LD C,A
  398.                 ADD HL,BC
  399.                 LD A,(HL)
  400.                 POP BC
  401. .LOOP           PUSH AF
  402.                 LD L,E
  403.                 LD A,D
  404.                 LD H,0
  405.                 LD D,H
  406.                 ADD HL,HL
  407.                 ADD HL,HL
  408.                 ADD HL,HL
  409.                 ADD HL,HL
  410.                 ADD HL,HL
  411.                 ADD HL,HL
  412.                 LD E,A
  413.                 SRL E
  414.                 ADD HL,DE
  415.                 AND 1
  416.                 RRCA
  417.                 RRCA
  418.                 RRCA
  419.                 OR 0XC1
  420.                 LD D,A
  421.                 LD E,0XC0
  422.                 ADD HL,DE
  423.                 POP AF
  424.                 LD (HL),A
  425.                 POP HL
  426.                 POP DE
  427.                 INC D
  428.                 RET
  429.  
  430. SET_C_A         OUT (C),A
  431.                 RET
  432.  
  433. LOAD_CMOS       LD HL,0XC000
  434.                 LD D,0
  435. EDITCMOS1       EX DE,HL
  436.                 CALL READCMOS
  437.                 EX DE,HL
  438.                 LD (HL),E
  439.                 INC HL
  440.                 INC D
  441.                 LD A,0XF0
  442.                 CP D
  443.                 JR NZ,EDITCMOS1
  444.                 RET
  445.  
  446. SAVE_CMOS       LD HL,0XC000
  447.                 LD D,0
  448. SAVECMOS1       LD E,(HL)
  449.                 EX DE,HL
  450.                 CALL WRITECMOS
  451.                 EX DE,HL
  452.                 INC HL
  453.                 INC D
  454.                 LD A,0XF0
  455.                 CP D
  456.                 JR NZ,SAVECMOS1
  457.                 RET
  458.  
  459. ;НА ВХОДЕ: H-АДРЕС ЯЧЕЙКИ
  460. ;          L-ПРОЧИТАННОЕ ЗНАЧЕНИЕ
  461. READCMOS        DI
  462.                 PUSH BC
  463.                 LD BC,PENT_CONF
  464.                 LD A,CMOS_ON                    ;РАЗРЕШЕНИЕ ДОСТУПА К КМОСУ
  465.                 OUT (C),A
  466.                 LD B,HIGH (CMOS_SET_ADR)
  467.                 OUT (C),H
  468.                 LD B,HIGH (CMOS_RD_WR)
  469.                 IN L,(C)
  470.                 LD A,CMOS_OFF                   ;ЗАПРЕТ ДОСТУПА К КМОСУ
  471.                 LD B,HIGH (PENT_CONF)
  472.                 OUT (C),A
  473.                 POP BC
  474.                 LD A,L
  475.                 AND A
  476.                 RET
  477.  
  478. ;НА ВХОДЕ: H-АДРЕС ЯЧЕЙКИ
  479. ;          L-ЧТО ТУДА ЗАПИСАТЬ
  480. WRITECMOS
  481.         RST8 _CMOS_RW,_WRITE_CMOS
  482.                 RET
  483.  
  484. ;ЧТЕНИЕ ВЕРСИИ FPGA ИЛИ BOOTLOADER, ЕСЛИ ЭТО ПЕНТЕВА
  485. GET_VERS_EVO    LD C,L
  486.                 LD H,0XF0
  487.                 CALL WRITECMOS                  ;ПИШЕМ В АДРЕС 0XF0 ДЛЯ ПОЛУЧЕНИЯ ВЕРСИИ
  488.                 CALL READCMOS                   ;ЧИТАЕМ ОТВЕТ
  489.                 CP C                            ;СОВПАЛО С ТЕМ ЧТО ЗАПИСАНО, НЕ ПОДДЕРЖИВАЕТСЯ
  490.                 RET Z                           ;И ЭТО НЕ ПЕНТЕВА (ИЛИ ВЕРСИЯ FPGA СТАРАЯ). ВЫХОДИМ
  491.                 INC A                           ;ПРИШЕЛ 0XFF, ЗНАЧИТ ЧАСОВ НЕТУ
  492.                 RET Z                           ;ВЫХОДИМ
  493.                 DI
  494.                 DEC A                           ;ВОЗВРАЩАЕМ СЧИТАННОЕ ЗНАЧЕНИЕ
  495.                 PUSH DE
  496.                 LD (DE),A                       ;ПОЛОЖИЛИ В БУФЕР УЖЕ ПРОЧИТАННЫЙ БАЙТ
  497.                 INC DE
  498.                 LD B,0X0F                       ;ОСТАЛОСЬ ПРОЧИТАТЬ ОСТАЛЬНЫЕ ЕЩЕ 15 БАЙТ
  499. GVE1            INC H
  500.                 CALL READCMOS                   ;ЧИТАЕМ БАЙТ
  501.                 LD (DE),A
  502.                 INC DE
  503.                 DJNZ GVE1                       ;ЧИТАЕМ ПОКА ВСЕ БАЙТЫ НЕ КОНЧАТСЯ
  504.                 POP DE                          ;ПРОВЕРЯМ В БУФЕРЕ 12 БАЙТ ТЕКСТА
  505.                 LD H,D
  506.                 LD L,E
  507.                 LD B,0X0C                       ;ЕСЛИ ТЕКСТ КОРОЧЕ ИЩЕМ БАЙТ 0 (ПРИЗНАК КОНЦА ТЕКСТА)
  508. GVE2            LD A,(DE)
  509.                 AND A
  510.                 JR Z,GVE3
  511.                 INC DE
  512.                 DJNZ GVE2
  513. GVE3            LD BC,0X0C                      ;ЗАБРАЛИ ИЗ БУФЕРА 2 БАЙТА ДАТЫ В СПЕЦФОРМАТЕ
  514.                 ADD HL,BC
  515.                 LD C,(HL)
  516.                 INC HL
  517.                 LD B,(HL)
  518.                 EX DE,HL
  519.                 LD (HL)," "                     ;ДОБАВЛЯЕМ К ТЕКСТУ ПРОБЕЛ-РАЗДЕЛИТЕЛЬ
  520.                 INC HL
  521.  
  522. ;РАСПАКОВЩИК ДАТЫ
  523. UNVERS          LD A,C
  524.                 AND 0X1F                        ;НУЖНЫ 5 БИТ-ЧИСЛО МЕСЯЦА
  525.                 CALL A2TXT                      ;КОНВЕРСИЯ И УКЛАДКА ДАТЫ
  526.                 SRL B
  527.                 RR C                            ;СДВИНУЛИ ДЛЯ ЦЕЛОСТНОСТИ НОМЕРА МЕСЯЦА
  528.                 LD A,C                          ;ВЗЯЛИ БИТЫ МЕСЯЦА
  529.                 RRCA
  530.                 RRCA
  531.                 RRCA
  532.                 RRCA                            ;СДВИНУЛИ В МЛАДШИЕ БИТЫ
  533.                 AND 0X0F                        ;НАМ НУЖНЫ ТОЛЬКО 4 БИТА МЕСЯЦА
  534.                 LD (HL),"."                     ;РАЗДЕЛИТЕЛЬНАЯ ТОЧКА
  535.                 INC HL
  536.                 CALL A2TXT                      ;КОНВЕРСИЯ И УКЛАДКА МЕСЯЦА
  537.                 LD (HL),"."                     ;РАЗДЕЛИТЕЛЬНАЯ ТОЧКА
  538.                 INC HL
  539.                 LD (HL),"2"
  540.                 INC HL
  541.                 LD (HL),"0"                     ;ДОБАВИЛИ К ГОДУ ДВЕ ЦИФЕРКИ
  542.                 INC HL
  543.                 LD A,B                          ;ВЗЯЛИ НОМЕР ГОДА
  544.                 AND 0X3F                        ;НУЖНЫ ТОЛЬКО 6 БИТ
  545.                 CALL A2TXT                      ;КОНВЕРСИЯ И УКЛАДКА ГОДА
  546.                 BIT 6,B                         ;ЕСЛИ БИТ 6 (СДВИНУТЫЙ БИТ 7) УСТАНОВЛЕН
  547.                 RET NZ  ;JR NZ,GVE4             ;ТО ЗАВЕРШАЕМ СТРОКУ
  548.                 EX DE,HL                        ;ИНАЧЕ ВЕРСИЯ БЕТА, О ЧЕМ ДОБАВЛЯЕМ ТЕКСТ В БУФЕР
  549.                 LD HL,TXT_BETA
  550.                 LD BC,5
  551.                 LDIR
  552.                 EX DE,HL
  553.                 RET
  554.  
  555. ;РАСПЕЧАТКА НА ЭКРАНЕ ВРЕМЕНИ, ДАТЫ И ДНЯ НЕДЕЛИ
  556. PRINTTIME       LD A,(ERS_FLAGS)
  557.                 AND M_CLOCK_ON
  558.                 RET Z                           ;ЧАСЫ НЕ ОБНАРУЖЕНЫ, ВЫХОДИМ НИЧЕГО НЕ ВЫВОДЯ
  559.                 LD H,0X0C
  560.                 CALL READCMOS
  561.                 AND 0X10
  562.                 RET Z                           ;ЕСЛИ ВРЕМЯ ЕЩЕ НЕ ОБНОВИЛОСЬ, ВЫХОДИМ НИЧЕГО НЕ ВЫВОДЯ
  563.                 LD H,CMOS_BYTE_01
  564.                 CALL READCMOS
  565.                 AND M_CLOCK_VIEW
  566.                 JR NZ,VIDEOMODE                 ;ОТОБРАЖЕНИЕ ВЫКЛЮЧЕНО, ВЫХОДИМ НИЧЕГО НЕ ВЫВОДЯ
  567.                 DI
  568.                 EXX
  569.                 LD BC,TXT_TIME                  ;ЧТЕНИЕ И ПРЕОБРАЗОВАНИЕ ВРЕМЕНИ
  570.                 LD H,4
  571.                 CALL READCMOS                   ;ПРОЧИТАЛИ ЧАСЫ
  572.                 LD (SCRSAV.CURR+2),A
  573.                 CALL BYTE2TXT                   ;СКОНВЕРТИЛИ ЧАСЫ С УКЛАДКОЙ В БУФЕР
  574.                 LD A,(BC)
  575.                 XOR ':'-' '                     ;КОНВЕРСИЯ МИГАЮЩЕГО ДВОЕТОЧИЯ
  576.                 LD (BC),A
  577.                 INC BC
  578.                 LD H,2
  579.                 CALL READCMOS                   ;ПРОЧИТАЛИ МИНУТЫ
  580.                 LD (SCRSAV.CURR+1),A
  581.                 CALL BYTE2TXT                   ;СКОНВЕРТИЛИ ЧАСЫ С УКЛАДКОЙ В БУФЕР
  582.                 LD A,(BC)
  583.                 XOR ':'-' '                     ;КОНВЕРСИЯ МИГАЮЩЕГО ДВОЕТОЧИЯ
  584.                 LD (BC),A
  585.                 INC BC
  586.                 LD H,0
  587.                 CALL READCMOS                   ;ПРОЧИТАЛИ СЕКУНДЫ
  588.                 LD (SCRSAV.CURR),A
  589.                 CALL BYTE2TXT
  590.                 LD BC,TXT_DATA                  ;ДАЛЕЕ ЧТЕНИЕ И ПРЕОБРАЗОВАНИЕ ДАТЫ
  591.                 LD H,7
  592.                 CALL READCMOS
  593.                 CALL BYTE2TXT
  594.                 INC BC
  595.                 LD H,8
  596.                 CALL READCMOS
  597.                 CALL BYTE2TXT
  598.                 INC BC
  599.                 LD H,9
  600.                 CALL READCMOS
  601.                 CALL BYTE2TXT
  602.                 LD HL,BUFF_TIME                 ;ПЕЧАТЕМ ВРЕМЯ ИЗ БУФЕРА
  603.         RST8 _PRINT_MESSAGE
  604.                 EXX
  605.  
  606. VIDEOMODE       DI
  607.                 LD HL,0XF003
  608.                 LD BC,PENT_CONF
  609.                 LD A,CMOS_ON                    ;РАЗРЕШЕНИЕ ДОСТУПА К КМОСУ
  610.                 OUT (C),A
  611.                 LD B,HIGH (CMOS_SET_ADR)
  612.                 OUT (C),H
  613.                 LD B,HIGH (CMOS_RD_WR)
  614.                 OUT (C),L
  615.                 LD A,CMOS_OFF                   ;ЗАПРЕТ ДОСТУПА К КМОСУ
  616.                 LD B,HIGH (PENT_CONF)
  617.                 OUT (C),A
  618.                 CALL READCMOS
  619.                 LD DE,TV_VGA
  620.                 PUSH AF
  621.                 AND %00110000
  622.                 RRCA
  623.                 RRCA
  624.                 LD C,A
  625.                 LD B,0
  626.                 LD HL,TXT_HZ
  627.                 ADD HL,BC
  628.                 LDI
  629.                 LDI
  630.                 LDI
  631.                 LDI
  632.                 INC DE
  633.                 POP AF
  634.                 BIT 0,A
  635.                 LD HL,TXT_TVVGA
  636.                 JR Z,VMODE1
  637.                 INC HL
  638.                 INC HL
  639.                 INC HL
  640. VMODE1          LDI
  641.                 LDI
  642.                 LDI
  643.                 LD HL,TXT_VMODE                 ;ПЕЧАТЕМ ТЕКУЩИЙ ВИДЕО РЕЖИМ
  644.         RST8 _PRINT_MESSAGE
  645.                 RET
  646.  
  647. ;ПЕРЕВОД "A" В ДЕСЯТИЧКУ И В ТЕКСТ
  648. A2TXT           PUSH HL
  649.                 LD L,A
  650.                 LD H,0
  651.                 LD DE,10
  652.                 XOR A
  653.                 DEC A
  654.                 INC A
  655.                 SBC HL,DE
  656.                 JR NC,$-3
  657.                 ADD HL,DE
  658.                 ADD A,"0"
  659.                 LD D,A
  660.                 LD A,L
  661.                 ADD A,"0"
  662.                 POP HL
  663.                 LD (HL),D
  664.                 INC HL
  665.                 LD (HL),A
  666.                 INC HL
  667.                 RET
  668.  
  669. BYTE2TXT        LD L,A
  670.                 LD H,"0"
  671.                 RRCA
  672.                 RRCA
  673.                 RRCA
  674.                 RRCA
  675.                 AND 0X0F
  676.                 ADD A,H
  677.                 LD (BC),A
  678.                 INC BC
  679.                 LD A,L
  680.                 AND 0X0F
  681.                 ADD A,H
  682.                 LD (BC),A
  683.                 INC BC
  684.                 RET
  685.  
  686. TXTMODE_ON
  687.         PEC_ON M_SHADOW_BF
  688.                 LD BC,0XFF77
  689.                 LD A,0XA6
  690.                 CALL SET_C_A
  691.         PEC_OFF M_SHADOW_BF
  692.                 RET
  693.  
  694. TXTMODE_OFF
  695.         PEC_ON M_SHADOW_BF
  696.                 LD BC,0XFF77
  697.                 LD A,0XA3
  698.                 CALL SET_C_A
  699.         PEC_OFF M_SHADOW_BF
  700.                 RET
  701.  
  702. CHECK_SCREENSAVER
  703.                 LD A,(SCRSAV.TIMEOUT)
  704.                 AND A
  705.                 RET Z
  706.                 PUSH AF
  707.                 LD HL,SCRSAV.CURR
  708.                 LD DE,(SCRSAV.START)
  709.                 LD BC,(SCRSAV.START+2)
  710.                 CALL BCDEHLM
  711.                 POP AF
  712.                 CP D
  713.                 RET NZ
  714.                 LD A,B
  715.                 OR E
  716.                 RET NZ
  717.                 CALL START_SONGLN
  718.  
  719. RESET_SCREENSAVER
  720.                 LD DE,SCRSAV.START
  721.                 LD H,0
  722.                 CALL READCMOS
  723.                 LD (DE),A
  724.                 INC DE
  725.                 LD H,2
  726.                 CALL READCMOS
  727.                 LD (DE),A
  728.                 INC DE
  729.                 LD H,4
  730.                 CALL READCMOS
  731.                 LD (DE),A
  732.                 INC DE
  733.                 XOR A
  734.                 LD (DE),A
  735.                 RET
  736.