Обновление прошивки для клавиатуры PS/2
Делюсь финальной версией прошивки МК для адаптера клавиатуры PS/2 (by Caro) - http://denn.ru/8bit/orion/128/kbrd/orkb_021.hex
В ней все изменения от камрада Stampmaker, плюс доработанный алгоритм обработки управляющих клавиш (спасибо Caro):
Alt'ы переключают язык РУС/LAT, а CapsLock выполняет свою прямую функцию - переключает (с защёлкиванием) регистр букв.
П.С. В других ОС CapsLock, как и ранее, также переключает язык РУС/LAT.
Add:
А здесь аналогичная прошивка для более жирного, 328-го МК - http://zx-pk.ru/showthread.php?t=929...l=1#post858091
DSDOS v3.77r & ORI-server v2.03
В связи с накопившимися изменениями, выкладываю новую сборку DSDOS v3.77r - http://denn.ru/orion/dsdos/dsdos377r.rar
Тем, кто пользуется связью по RS-232 настоятельно рекомендую обновить файл программы обмена с IBM-PC, там сделаны важные исправления - http://denn.ru/8bit/oriserv/oriserv.exe
Итак, что нового в ОС:
1) Изменён загрузчик DSDOS и размещение кода/сис.переменных в непереключаемой области ОЗУ. Это сделано для решения конфликтов с прошивками "Мониторов" под процессор Z80 (версии выше 3.1);
2) В ОС и во всех утилитах убрано обращение к п/п "Монитора" GetTOP/SetTOP (0F830h/0F833h), данные функции перенесены в API BIOS. Это также сделано для решения конфликтов ПО с "Мониторами" версий выше 3.1;
3) Исправлена ошибка в диалоге командного процессора ОС, в результате которой при "горячем" рестарте не очищался экран и не выводилась заставка DSDOS;
4) Сделана полноценная поддержка стандартных клавиатур PS/2, подключаемых к Ориону с помощью адаптера на МК от Caro. В данной сборке по-умолчанию пока включена родная аппаратная клавиатура РК86, а для активации клавиатуры PS/2 необходимо нажать Ctrl+CapsLock (или Ctrl+Alt в новой прошивке МК) в любой момент, когда на экране присутствует мигающий курсор. Тип клавиатуры переключается по принципу триггера и сохраняется до "холодной" перезагрузки ОС. Поддержка заключается в том, что все символы вводимые с клавиатуры полностью соответствуют надписям на клавишах, в соотв. режимах;
5) Замедлена скорость мигания курсора до комфортной для глаз, а также раздражающее винтажное "пиканье" озвучки нажатий на клавиши заменено на ненапрягающий "клик". Увеличена скорость автоповтора для более быстрой работы с текстами;
6) В оболочке DC$ улучшен алгоритм перемещения указателей по списку файлов: при пошаговом перемещении нет ложных перескоков, а при длительном удержании клавиши включается автоповтор, который позволяет быстро перемещаться по файлам и прокручивать список;
7) Некоторые "косметические" изменения в оформлении оболочки DC$ и просмотрщика DCVIEW$. В последнем исправлена ошибка с перемещением в конец файла в режиме "DUMP", когда размер просматриваемого файла кратен 256.
DSDOS v3.81 для ПРК ОРИОН-128.2
Всем доброго. Делюсь результатами очередных доработок, исправлений, улучшений и т.п. - DSDOS v3.81.
Ссылка для скачивания образа ROM-диска (64 Кб) - http://denn.ru/orion/dsdos/dsdos381.rar
Документация по API ОС - http://denn.ru/8bit/orion/soft/dsdos...dos381docs.rar
На этот раз ОС претерпела довольно серьёзные изменения, без которых невозможно дальнейшее её развитие. Было "переиграно" распределение ОЗУ второй страницы, где размещены все модули ОС, в результате чего удалось увеличить максимальное кол-во файлов на ROM-диске и на виртуальном диске до 255, такое же max кол-во файлов будет в будущем доступно на RAM-диске 1 Мб (СОЗУ с резервным питанием) и на SDHC.
Максимальный поддерживаемый объём ROM-диска увеличен до 1024 Кб (1 Мб), как и ранее всё пространство доступно одновременно, одним диском (A:).
Сделана программная поддержка 512 Кб ОЗУ (для рев.512), дополнительная память определяется автоматически при загрузке ОС. При наличии 512 Кб ОЗУ, объём квазидиска устанавливается равный 360 Кб, при "родных" 256 Кб - 120 Кб. Соответствующая информация выводится при загрузке ОС:
http://denn.ru/8bit/orion/soft/dsdos/hw_detect_v381.gif
(скриншот сделан в эмуляторе, который эмулирует 256 Кб ОЗУ)
http://denn.ru/8bit/orion/soft/dsdos/info_v381.gif
Изменена организация FAT (таблицы распределения файлов) квазидиска, размер кластера увеличен 16->256 Кб. В результате в 16 раз сократился объём FAT и примерно на 80% возросла скорость доступа!
Виртуальный диск теперь не в виде отдельного подгружаемого драйвера, а интегрирован в BIOS. Работа виртуального диска возможна по любому из двух портов RS-232: старому (на КР580ВИ53+КР580ВВ51А) и новому (на чипе 16C550). Второй вариант порта имеет более простую схемотехнику и позволяет работать на скорости 115200 Бод, что как показала практика весьма положительно сказывается на комфортной работе с файлами через виртуальный диск. Схему отрисую и опубликую чуть позже. Определение доступных портов RS-232 производится автоматически, по-умолчанию текущим для виртуального диска выбирается наиболее быстрый.
Довольно масштабная работа была проведена по поддержке различных известных схем КНГМД на базе БИС КР1818ВГ93. В результате, данная версия ОС работает с любым КНГМД, у которого регистры БИС доступны по адресам F700..F703. Определение типа КНГМД производится автоматически.
Также сделано автоматическое определение и настройка типа используемой клавиатуры: хардварная РК86 или её эмуляция на МК с клавиатурой PS/2.
Претерпели изменения несколько подпрограмм BIOS и CONIO, а также добавились новые - см. "Документация по API ОС".
В текстовом редакторе исправлено несоответствие символьных управляющих клавиш в режиме "РУС", а также добавлена возможность вызова справки (Esc & "H") и конфигуратора ED$CFG (клавиша F5) прямо из редактора.
Плюс некоторые незначительные изменения интерфейса, исправления ошибок и автодетект наличия соответствующего оборудования в утилитах.
В модули ОС и в утилиты введена проверка соответствия платформы, на которой они запускаются. Это сделано в связи с выходом DSDOS также и для ПРК "Орион-ПРО", чтобы исключить возможность перекрёстного использования ПО, непредназначенного для другой платформы.
Список изменений (из файла DISKINFO):
http://denn.ru/8bit/orion/soft/dsdos/diskinfo_v381.gif
Быстрый порт COM2 на БИС 16C550
В продолжении тематики виртуального диска, раскрою тему быстрого порта COM2 на микросхеме 16C550.
Электрическая схема порта:
https://forum-img.guitarplayer.ru/2024/02/11/1jMBJ.png
альтернативаня ссылка на схему
Устройство представляет собой карту расширения, подключается в системный разъём ПРК "Орион-128.2" (нумерация контактов указана согласно схеме рев.512).
Возможны два варианта сборки: упрощённый и стандартный. Первый вариант - без дешифратора 1533ИД3, его использование возможно только если в системе больше нет никаких других устройста, занимающих адресное пространство F700..F7FFh. Второй вариант с помощью дешифратора позволяет корректно занимать только диапазон F7E0..F7EFh, в этом случае сигнал ПРК "SEL_F7xx" (В30) идёт на БИС 16C550 через дешифратор.
Для упрощения схемотехники в качестве тактового генератора используется специализированный чип с HCMOS/TTL-выходом, например такой - http://www.chipdip.ru/product/7.3728mhz-hcmos-ttl/. Частота генератора - 7.3728 МГц.
Для преобразования сигналов (TTL<->RS232) используется микросхема MAX232. Вариантов исполнения этого популярного преобразователя вагон и маленькая тележка, они требуют разные номиналы конденсаторов обвязки, поэтому на схеме указан номинал с вариацией. Более точно нужно смотреть даташит на ваш конкретный экземпляр "макса".
На плате ПРК требуется небольшая доработка (если она у вас не была сделана ранее): на линию "В20" системного разъёма заводится сигнал RESET с выхода "9" микросхемы DD18.2 (ТМ7).
Как было сказано ранее, программно порт поддержан в ОС DSDOS начиная с версии v3.81, его наличие в системе определяется автоматически при загрузке, скорость обмена программируется максимальная - 115200 Бод.
Схема не требует наладки, при исправных деталях и правильном монтаже работает сразу.
Мой "макетный" вариант выглядит так:
https://forum-img.guitarplayer.ru/2024/02/11/1jm7m.png
https://forum-img.guitarplayer.ru/2024/02/11/1j6Rc.png
Фото №1 Фото №2
В нём микросхем больше, т.к. я одновременно распаял два порта: COM1 и COM2. Причём первый с вариацией: 1) под КР580ВВ51А (скорость обмена 38400 Бод) и 2) под MSM82C51A-2 (скорость обмена 115200 Бод).
Информация по программированию порта COM2:
Код:
; BIOS (2/2) для DSDOS v3.81 (Орион-128.2)
; (C) 1998-2016 Соловьев Д.Н. /Санкт-Петербург/
; 18.06.2016
; Порт COM2 (16C550)
RG_RWD:EQU 0F7E0H; Read/Write Data
RG_IER:EQU 0F7E1H; Interrupt Enable Reg
RG_LCR:EQU 0F7E3H; Line Control Reg
RG_MCR:EQU 0F7E4H; Modem Control Reg
RG_LSR:EQU 0F7E5H; Line Status Reg
RG_SCR:EQU 0F7E7H; Scratch Reg
IniCOM:
; Инициализация UART 16C550
LXI H,RG_IER
MVI M,0; отключить все прерывания
INX H
INX H
MVI M,80H; маска установки DLAB
MVI L,RG_RWD
MVI M,4; LSB делителя (4 = 115200 Бод)
INX H
MVI M,0; MSB делителя
INX H
INX H
MVI M,03H; настройка протокола (8,N,1)
RET
SvbCOM:
; Запись байта в порт обмена
; I: [C]-записываемый байт
; O: <C>=0 - [A]=записанный байт,
; <C>=1 - порт не готов
MVI B,0; time-out const = 256
SVB2:
DCR B
JZ LDB2_4
LDA RG_LSR
ANI 20H
JZ SVB2
MOV A,C
STA RG_RWD
RET
LdbCOM:
; Чтение байта из порта обмена
; O: C=0 - [A]=байт, C=1 - порт не готов
LDB2_0:
; проверка на преждевременную готовность
LDA RG_LSR
RRC
JC LDB2_2
; ожидание поступления данных
PUSH B
LXI B,33000; time-out const
LDB2_1:
DCX B
MOV A,B
ORA C
JZ LDB2_3
LDA RG_LSR
RRC
JNC LDB2_1
POP B
LDB2_2:
LDA RG_RWD
CMC
RET
LDB2_3:
POP B
LDB2_4:
STC
RET
Порт COM1 на КР580ВВ51А / MSM82C51A-2
В добавок к предыдущему посту вариант реализации интерфейса RS-232 (порт COM1, v.2) на микросхеме КР580ВВ51А (или MSM82C51A-2):
https://forum-img.guitarplayer.ru/2024/02/11/1jvo2.png
альтернативная ссылка на схему
Подробно описывать не буду, ибо, что называется, действующие лица в общем-то те же. Для упрощения схемотехники из оригинальной схемы выкинут таймер КР580ВИ53, вместо него тактирование протокола выполняет синтезатор частот на интегральном генераторе и счётчике-делителе. Схема позволяет устанавливать либо отечественный УСАПП - КР580ВВ51А (скорость обмена 38400 Бод, перемычки J1 и J2 в нижнем положении), либо быструю КМОП-версию UART от OKI - MSM82C51A-2 (скорость обмена 115200 Бод, перемычки J1 и J2 в верхнем положении).
Программно данный порт полностью совместим с оригинальным (из ж. РАДИО), всё ранее написанное ПО (LINK$, VDISK) с ним совместимо (скорость обмена аппаратно зафиксирована, программная настройка игнорируется).
Информация по программированию порта COM1:
Код:
; BIOS (2/2) для DSDOS v3.81 (Орион-128.2)
; (C) 1998-2016 Соловьев Д.Н. /Санкт-Петербург/
; 18.06.2016
; Порт COM1 (ВВ51А)
PT_TM0:EQU 0F730H
PT_CTM:EQU 0F733H
PT_SP0:EQU 0F740H
PT_SP1:EQU 0F741H
IniCOM:
; Инициализация порта COM1
; Настройка таймера ВИ53
MVI A,36H
STA PT_CTM
LXI H,PT_TM0
MVI A,9; 14400 Бод
MOV M,A
XRA A
MOV M,A
; Настройка УСАПП ВВ51А
LXI H,PT_SP1
MVI A,1
MOV M,A
MOV M,A
MVI A,40H
MOV M,A
MVI A,4EH; настройка протокола (8,N,1)
MOV M,A
MVI A,27H
MOV M,A
DCX H; [HL]=PT_SP0
MOV A,M; очистка порта ввода
RET
SvbCOM:
; Запись байта в порт COM1
; I: [C]-записываемый байт
; O: <C>=0 - [A]=записанный байт,
; <C>=1 - порт не готов
MVI B,0; time-out const = 256
SVB1:
; ожидание готовности
DCR B
JZ LDB1_4
LDA PT_SP1
RRC
JNC SVB1
MOV A,C
STA PT_SP0
CMC
RET
LdbCOM:
; Чтение байта из порта COM1
; O: C=0 - [A]-считанный байт
; C=1 - ошибка (тайм-аут)
; проверка на преждевременную готовность
LDA PT_SP1
ANI 2
JNZ LDB1_2
; ожидание поступления данных
PUSH B
LXI B,33000; time-out const
LDB1_1:
DCX B
MOV A,B
ORA C
JZ LDB1_3
LDA PT_SP1
ANI 2
JZ LDB1_1
POP B
LDB1_2:
LDA PT_SP0
RET
LDB1_3:
POP B
LDB1_4:
STC
RET