Обновление сборки DSDOS v3.71r
Выкладываю чуть с опозданием: релиз 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-диске, откуда обычно запускаются утилиты, а чаще всего находятся на квазидиске, т.о. можно опускать указание диска при задании параметров в командной строке.
Релиз DSDOS v3.72r [16 бит]
После некоторых небольших "косметических" доработок, под окончание года, выкладываю сборку-релиз DSDOS v3.72r от 09.12.2015
Образ стандартного орионовского 64-килобайтного ROM-диска с ОС и набором утилит доступен по ссылке - http://denn.ru/orion/dsdos/dsdos372.rar
Для всех утилит, использующих подгрузку рабочих файлов через параметр командной строки, доработан механизм определения текущего диска при запуске утилиты с диска "A:" - диском по-умолчанию считается квазидиск, а точнее диск, определённый в системной переменной 3F51h (Диск файла EXT$).
Также доработана утилита LINK$. Изменения коснулись настройки скорости обмена. Выбранный ранее алгоритм пресетного изменения скорости обмена на 9600 Бод с помощью удержания клавиши НР (Shift) при старте, на практике оказался неудобным и маловариативным. Теперь, как и ранее, по-умолчанию скорость обмена 14400 Бод, но её можно изменить практически на любую, которую позволяет сгенерировать таймер (КР580ВИ53) задающего генератора тактовой частоты. Изменение производится с помощью следующего вызова утилиты:
L LINK$ /ss
где ss - значение [2..99] константы делителя частоты (КР580ВИ53) в десятичной системе.
Для скорости 2400 Бод ss=52, для 4800 Бод ss=26, для 9600 Бод ss=13, для 14400 Бод ss=9.
Скорость 14400 Бод является предельной устойчиво работоспособной для схемы на КР580ВИ53+КР580ВВ51А.
При изменении частоты задающего генератора с 2 МГц на 1,8432 МГц появляется возможность работать на скорости 19200 Бод (ss=6), а более высокие скорости уже не "тянет" КР580ВВ51А :(
При правильно указанных параметрах, новое значение константы делителя записывается в файл LINK.INI (на диске "B:"), и при последующих запусках утилиты LINK$ в режимах приёма/передачи используется это значение. Если утилита запускается не из ROM-диска, а, например, с дискеты, то файл конфигурации сохраняется на текущем устройстве, т.о. скорость достаточно задать один раз.
Теперь несколько слов о планах дальнейшего развития.
Концепция DSDOS развивает идеологию ORDOS: хранение всех необходимых утилит и программ на ROM-диске, и к сожалению, на данном этапе стало чётко понятно, что 64 Килобайт стандартного ROM-диска ПРК Орион не достаточно. В связи с этим, данный релиз ОС как раз является завершающим для стандартного железа, а именно 64 Кб ROM-диска, поэтому я назвал её 16-битной версией.
На данный момент уже есть рабочая версия (3.73r) с т.н. 20-битной адресацией ROM-диска, которая поддерживает ПЗУ объёмом до 512 Кб (скриншот). Программно адресация линейная, т.е. в системе ROM-диск по-прежнему видится, как диск "A:", но его объём в 8 раз больше стандартного авторского диска ПРК Орион. Аппаратно в схемотехнике стандартного ROM-диска добавлена "надстройка" в виде регистра-защёлки старшей части адреса на микросхеме 1533ТМ8 (или ТМ9), запись в этот регистр стробируется через неиспользуемую линию C2 порта клавиатуры (на плате кинут провод от линии C2 порта #F4 на контакт B10 разъёма порта #F5). Четыре бита старшей части адреса берутся с линий C1..C4 порта #F5. Функционально аналогичная схемотехника уже реализована в Гибридном Электронном Диске, т.о. ROM-часть уже имеет программную поддержку в ОС DSDOS v3.73r. Схему ROM-диска, как отдельного самостоятельного устройства я отрисую и выложу чуть позже.
Дальнейшие версии ОС DSDOS будут рассчитаны на расширенный, 20-битный вариант ROM-диска, а образ соответственно будет занимать объём более 64 Кб. Но поддержка ROM-диска с классической 16-битной схемотехникой всегда будет автоматической!
Идеологически, по концепции ORDOS расположение файлов в ROM-диске линейное, а признаком конца является байт FFh в имени следующего файла. И если при сканировании каталога ОС встречает признак конца в пределах 64 Кб, то аппаратная реализация ROM-диска не имеет значения. Т.о. в варианте расширенного ROM-диска возможна установка микросхем ПЗУ любого требуемого размера в пределах 512 Кб. На самом деле программно поддерживается адресация до 1024 Кб ПЗУ, но объём более 512 Кб не имеет смысла, поэтому введено условное ограничение в 512 Кб. Т.е. если каким-то образом удастся "впихнуть" файлы общим объёмом более 512 Кб, то ОС их увидит и успешно прочитает. Тут скорее ограничивающим фактором будет лимит по количеству: не более 255 файлов на диске.
В настоящий момент ведётся работа по программной реализации виртуального диска (зарезервировано имя - "G:"), который обеспечит "прозрачную" работу с удалённым накопителем по интерфейсу RS-232. В качестве удалённого накопителя предполагается использование IBM-PC совместимого ПК, а в последствии возможно специализированного сетевого устройства расширения. На IBM-PC делается интерфейс к облачному хранилищу, например к Google-Drive, и т.о. в ОС DSDOS на ПРК Орион становится доступным глобальный сетевой диск, доступ к которому полностью аналогичен, как и к любым другим дискам в ОС.
По началу, реализация виртуального диска будет в виде надстройки - устанавливаемого драйвера. А затем, по мере развития, будет интегрирован в ОС. Также на начальном этапе будет использован родной RS-232 на связке КР580ВИ53+КР580ВВ51А со скоростью обмена 14400 Бод. Впоследствии будет сделана аппаратная доработка: порт COM2 на микросхеме 16C550, с возможностью работы на скорости 115200 Бод.
Планируется поддержка RAM-диска на статическом ОЗУ объёмом 1..4 Мб (зарезервировано имя - "E:"), как альтернатива дисководу в качестве TEMP-диска. А для бэкапа (непосредственная альтернатива дискетам) планируется поддержка карт SDHC (зарезервировано имя - "F:"). Если хватит "запала", то возможно будет организована поддержка винчестеров (зарезервировано имя - "H:"), хотя большого смысла для Ориона в них честно говоря не вижу.
Примерно как-то так :)