TODO:
-       пункт в сетапе "сохранять страницы спектрума при перезагрузке" 
-       перед инициализацией страниц спектрума и страницы 41 проверять, не заняты ли они рамдиском
-       чистить буфер клавы не втупую, а какими-нибудь командами для этих всяких SIO/PIO, если есть
-+ !    в Setup добавить пункт настройки времени и даты

Done:
+	немного доработана система перехвата ресета для устранения некоторых глюков и на будущее
+       в сетап работает сохранение настроек HDD "Setup" после первого удачного автодетекта
+       Сделан универсальный загрузчик битстрима для 1k30 и 1k50
+       Активирован второй канал IDE
+       Нумерация устройств IDE переделана с последовательной на физическую
+       Выбор загрузочного IDE изменён с последовательного на физический
+       Добавлена возможность установки IDE со второго канала в качестве основного и альтернативного загрузочного диска 
+       Убрано залипание клавиш при ресете по Ctrl+Alt+Del
+       При некорректных значениях даты и времени в CMOS данные заменяются на дефолтные значения, выводится сообщение об ошибке
+       В Setup добавлен выбор режима развёртки (--------/Scorpion/Pentagon/Spectrum)
+       В Setup добавлен выбор вертикальной синхронизации (--------/312 50Гц/320 49Гц)
+       Добавлена загрузка системы с RAM Disk
+       Исправлен баг со стеком в BLK_TO_RAMD и ещё несколько багов в процедурах чтения с РАМ-ДИСКА
+       Добавлена загрузка RECOVERY с ROM-Disk в ПЗУ
+       При холодном старте устанавливается инт пентагона (а не скорпиона), если в CMOS не задано иное
+       Функция БИОС FN_SINC (#F2) при удачном завершении не сбрасывала флаг CF на выходе - исправлено
+       Новая функция GET_RAMD_NUM
+       Добавленые дополнительные опции в функцию БИОС FN_SINC (#F2), bit7 регистра A теперь отвечает за переключение старого/нового
         варианта работы функции (для сохранения совместимости со старыми программами)
+       Новое лого при старте, разрешение изменено с 256х64 16 цветов на 128х72 256 цветов
+       Изменена процедура вывода логотипа, логотип перенесён в другую страницу ПЗУ
+       Смена языка, развёртки и инта происходит в Setup сразу
+       Изменены некоторые надписи и поправлена структура SETUP
+       Доделана функция FN_RESET
+       Доделана функция DCP_CONFIG - функция управления дешифратором портов
+       Убрано задвоение функций 4х
+       Функции 5х перенесены из 0 в 8 страницу ПЗУ
+       Изменена функция инициализации DCP, освободилось около 4,5 кб
+       Теперь зарезервированные под режим спектрума страницы можно легко освободить, номер блока - 1
+       Добавлены образы ПЗУ ZX-Sprinter для запуска режима спектрума без загрузки DSS
+       Страница BIOS совместима с адаптированными образами ПЗУ спектрума. Теперь отдельные страницы оригинальных SP_EXP и SP_EXP2
         не требуются.
+       Исправлен баг в режиме спектрума. При выборе Clear RAM в меню и последующим выходом в ДОС по CAD зависало,
         потому что вызывалась процедура FullInit для очистки памяти. Теперь вместе с очисткой памяти сбрасывается перехват ресета
+       Поправлены буферы, оптимизированы некоторые процедуры, освобождено ббольше 1,5 кб ОЗУ для работы BIOS во время старта
+       Найдено несколько древних мелких огрехов copy/paste, при работе было незаметно, но приятно, что нашлись
+       Поправлен маловероятный, но возможный глюк с переполнением стека при входе-выходе из SETUP
+       Постепенный рефакторинг кода)))
+       Всего и не вспомнить уже...
====================================================================================================================================================================================================================

Новое описание функции БИОС FN_SINC (#F2)
LD A,sync_mode  ; режим синхронизации
                ; Reg A bit7 = 0 - режим очистки экрана и установки INT
                ; A=0	режим по умолчанию - используется для очистки
                ;	страниц режима (отключения вывода всех окон)
                ;	установка INT из системной переменной
                ; A=1	режим Scorpion
                ;	положение INT-а, как в Scorpion-256
                ; A=2	режим Pentagon
                ;	положение INT-a как в Pentagon-128
                ; A=3	режим Spectrum
                ;	положение INT-a как в оригинальном ZX Spectrum
                ; A=4	установка INT из настроек пользователя в CMOS
                ;
                ; Reg A bit7 = 1 - режим установки вертикальной синхронизации и/или wait
                ; bit1,bit0:
                ;  %00	- синхра выставляется из системной переменной
                ;  %01	- синхра выставляется из CMOS
                ;  %10	- синхра 320 lines 49 Hz
                ;  %11	- синхра 312 lines 50 Hz
                ; bit2:
                ;  %0	- игнорировать bit1..bit0
                ;  %1	- не игнорировать bit1..bit0
                ;
                ; bit3:
                ;  %0	- no waits (port all_mode bit2 set)
                ;  %1	- original waits (port all_mode bit2 res)
                ; bit4:
                ;  %0	- игнорировать bit3
                ;  %1	- не игнорировать bit3
                ;
                ; bit5,bit6 - reserved
;

DRV_GET_PAR:    ; получить параметры носителя
 LD A,drv_type  ; бит 0..3 - номер устройства
                ; бит 4..7 - тип устройства
                ;     0 - дисковод
                ;     6 - ram-disk
                ;     8 - HDD
                ;     C - CD-ROM
 LD C,#58       ;
 RST ToBIOS     ; NC - нормальное завершение
                ;     L  - число секторов (на целиндр)
                ;     H  - число головок
                ;     DE - количество цилиндров
                ;     IX - размер сектора в байтах
                ;     B  - доп. параметры:
                ;           FDD:
                ;               бит7 - тип 1.44/720
                ;           HDD:
                ;               бит0 - канал IDE 0/1
                ;               бит6 - CHS/LBA
;++++++++       ;           RMD: ramdrive block id
                ; если в HL,DE все FF - устройства нет
                ; CF - нет устройства
;


Новое описание функции БИОС FN_RESET
FN_RESET:       ; Сброс или перезагрузка
 LD B,res_type  ; 1 - рестарт, 2 - soft reset, 3 - hard reset, 4 - Reinit spectrum pages
 LD C,#FD       ; номер функции
 RST ToBIOS     ; CF -> функция не исполнена, возможные причины:
                ;       некорректное значение res_type
                ;       одна из ZX страниц занята (при res_type=4), тогда под zx отдастся только часть страниц
                ;       старая версия BIOS
;


Новое описание функции GET_RAMD_NUM (#9B)
GET_RAMD_NUM:   ; получить номер RAM-Disk-а (0..15) по его block id
 LD A,id_blk    ; идентификатор блока
 LD C,#9B       ; номер функции
 RST ToBIOS     ; NC -> A - номер RAM-Disk-а (0..15).
                ; CF -> ошибка в идентификаторе блока или биос ниже 2.55
;


Новое описание функции БИОС BLK_RD_WR (#C8)
BLK_RD_WR:      ; чтение/запись из/в блок(а) памяти секторами
                ; по 256 байт
LD HL,bufer     ; адрес буфера данных
LD DE,sector    ; абсолютный номер сектора (256b)
LD B,sec_num    ; число секторов
LD A,id_blk     ; идентификатор блока ИЛИ размер сектора (1 - 256b, 2 - 512b) при command = #46
LD A',command   ; команда 0 - чтение, #FF - запись, #46 чтение из ROM-Disk
LD C,#C8        ; номер функции
;

s_line_def	equ 4
s_line_cmos	equ 5
s_lines320	equ 6
s_lines312	equ 7

s_wait_orig	equ #18
s_wait_def	equ #10


DCP_CONFIG:     ; [x] функция управления дешифратором портов.
                ;A  - если ноль, то вызов функции переинициализации портов PORTS_INIT
                ;HL - адрес
                ;DE - маска - 0 изменяемые биты, 1 неизменяемые
                ;B  - порт
                ;C  - #F4      номер функции
; !FIXIT Функция позволяет открывать/закрывать дополнительные порты компьютера.
;