Выкладываю чуть с опозданием: релиз DSDOS v3.71r от 05.11.2015
Образ ROM/RAM-диска тут - http://denn.ru/orion/dsdos/dsdos371.zip
Что нового:
+ Автоинициализация (форматирование) квазидиска при включении ПРК;
+ Запуск оболочки (DC$) при первом включении ПРК;
+ Скорость обмена с IBM-PC увеличена до 14400 Бод (утилита LINK$);
+ Доработка авторского программатора ПЗУ (PROG$);
+ Изменение алгоритма определения текущего диска при запуске утилит из ROM/RAM-диска;
+ Добавлена утилита программирования ПЗУ Winbond 27C512;
+ Добавлены утилиты тестирования портов ВВ51 и ВВ55.
Подробнее.
При первом включении и при "холодном" рестарте ПРК, производится автоматическая инициализация квазидиска, т.о. пользователь больше не увидит "мусор" на диске "B:".
Алгоритм инициализации интеллектуальный, т.е. он не отформатирует квазидиск при "холодной" перезагрузке, если там есть файлы и структура данных корректна.
При первом включении ПРК, после появления заставки ОС DSDOS, если нажать на клавишу [F4] или [АР2], вместо поиска на квазидиске файла "EXT$", производится поиск на диске "A:" программы оболочки ОС (DC$) и передача ей управления. Дальнейшие перезагрузки инициируют старт файла "EXT$", который создаёт оболочка или какая-либо другая программа пользователя.
Т.о. если нам требуется оболочка, то после первой загрузки ОС достаточно нажать [F4]. В противном случае, мы не нажимаем [F4], а запускаем другое ПО, и механизм автостарта DC$ больше не будет срабатывать.
Два вышеописанных нововведения позволили отказаться от файла "R%" и, соответственно, от лишних телодвижений при запуске.
Далее. Эксперимент с обменом на скорости 14400 Бод прошёл успешно, в связи с этим были доработаны соответствующие утилиты: LINK$ на Орионе (входит в сборку ROM/RAM-диска) и LINK.EXE на IBM-PC (ссылка для скачивания - http://denn.ru/8bit/orion/soft/dsdos/link/link14400.rar ).
На всякий случай, в LINK$ предусмотрена возможность работы на прежней скорости 9600 Бод, для этого необходимо при запуске утилиты удерживать клавишу [НР] (Shift), при этом для информации на экране будет отображена надпись "BR=9600".
В авторском программаторе ППЗУ РФ2/РФ4 (PROG$) не работал вызов утилит "M128$" и "EDMEM$". Проблема была в том, что в авторской ОС ORDOS имена "M128" и "M128$" считаются равнозначными, и в программе были прописаны сокращённые версии "M128" и "EDMEM", без "$".
в ОС DSDOS "M128" и "M128$" - это строго разные файлы. Имена в программе исправлены, утилиты вызываются. А также, попутно, сделаны следующие доработки:
+ добавлена возможность подгрузки файла прошивки;
+ добавлена команда подсчёта и отображения контрольной суммы данных в буфере программатора;
+ добавлена команда сохранения содержимого буфера в файл на диск;
+ некоторые косметические доработки интерфейса;
+ для отмены операции программирования продублирована клавиша [АР2] (Esc).
Некоторые пояснения по доработкам.
Для подгрузки файла необходимо при запуске в командной строке добавить его полное имя (диск:имя_файла). Диск можно опустить, тогда поиск файла будет осуществлён на текущем устройстве (кроме запуска программатора из ROM/RAM-диска, см. ниже). Размер файла должен чётко соответствовать прошиваемой ПЗУ (2 Кб для РФ2 и 8 Кб для РФ4). Если размер некорректен, то программа "вывалится" с ошибкой. Программа в соответствии с размером файла прошивки сама выберет тип ППЗУ, что будет отображено в верхней строке крупным текстом. После типа ППЗУ будет отображено имя файла прошивки. Файл загружается в буфер №0 программатора и дальнейшая работа - в обычном режиме, как и ранее. После каких-либо изменений информации в буфере (чтение из ПЗУ или ROM/RAM-диска), вместо имени файла появляется сообщение "БУФЕР #0", которое говорит о том, что информация в буфере уже может не соответствовать файлу! Это же сообщение будет при загрузке программатора в обычном режиме - без параметров.
Отображение контрольной суммы данных в буфере производится по команде "K", подсчёт кол-ва байт ведётся в зависимости от выбранного типа микросхемы ППЗУ. Также вывод к/суммы происходит после операций чтения данных из ППЗУ или из ROM/RAM-диска.
Сохранение содержимого буфера производится по команде "S", данные записываются на текущий (или принудительно указанный при запуске в командной строке) диск, в файл с именем "ROM_DATA". Запись производится "поверх", без запросов на удаление прежнего файла с аналогичным именем.
Про утилиту программирования ПЗУ Winbond 27C512 напишу позже, вместе с описанием хардварной части программатора.
Утилиты тестирования портов ВВ51 и ВВ55 представлены файлами "TESTCOM$" и "PORT#F6$", соответственно. Первая позволяет обмениваться символами и дампами с хостом (или самой с собой при наличии перемычек между Rx-Tx и RTS-CTS) в терминальном режиме (например, программа HyperTerminal на IBM-PC), а вторая позволяет программировать линии порта пользователя (#F600) на ввод/вывод, анализировать содержимое и в различных вариациях выставлять отдельные биты.
Претерпел небольшие изменения алгоритм определения текущего диска в утилитах. При запуске утилиты из ROM/RAM-диска, в качестве текущего выбирается по-умолчанию диск "B:", а не реальный текущий "A:". При запуске с любых других дисков (В, С... и т.д.), текущим считается реальный текущий диск. Это позволило упростить работу, т.к. рабочие файлы не могут находиться в ROM/RAM-диске, откуда обычно запускаются утилиты, а чаще всего находятся на квазидиске, т.о. можно опускать указание диска при задании параметров в командной строке.