PDA

Просмотр полной версии : Вектор-06Ц - программка мультизапускалка



KTSerg
21.04.2020, 18:20
Сделал я извращалку - мультизапускалку mboot.rom.
В данный момент, позволяет стартовать не с HDD, т.к. в родном загрузчике нет поддержки HDD.
Но при этом имея на первой дискете HDD несколько разных вариантов OS, нет необходимости иметь их все на внешних носителях. А можно запускать только эту программку, а она уже прочитает нужный файл с первой дискеты HDD и запустит его, и это может быть любая версия OS по желанию.

Приложен архив.
Протестирован пока только частично.

Под спойлером содержимое файла mboot.txt с описанием и не большими подробностями.


Смотрелка HDD для Вектор 06Ц.

Программа mboot.rom не зависима от OS.
Программа может читать первые 4095 дискет HDD (исскуственное ограничение до 0FFFh дискет).
Программа читает каталог дискеты HDD.
Если mboot.ini отсутствует на выбранной дискете, то меню составляется из имён файлов каталога этой дискеты HDD. При этом в меню войдут 28 файлов с расширением COM, для просмотра остальных файлов дискеты "Стр" и "Hom".
Если файл mboot.ini найден, то создаётся меню из имён файлов, перечисленных в нём.
В файле mboot.ini можно указывать миена файлов с расширениями "com" и "c00".
В меню они попадут в том порядке, в котором перечислены в файле mboot.ini.
Формат mboot.ini:
В первой строке указано значение таймера в "секундах". Значение "0"-таймер отключен. Максимальное значение "9".
Во второй строке номер файла в меню, который будет выделен и запустится по умолчанию, при достижении Таймером значения "0" (если первоначально значение Таймера было от "1" до "9").
В остальных строках перечислены имена файлов. По одному имени в строке. Количество имен файлов не должно превышать 28.
Пример содержимого файла mboot.ini:
4
2
MDOS30HA.COM
MDOSHDD.COM
DOKER.COM
IEXPRESS.COM
abrams.сom

В данном примере, меню будет состоять из 5ти имён файлов, через 4 секунды будет прочитан и запущен файл MDOSHDD.COM.
Если до достижения Таймером значения "0" нажать одну из клавиш курсора или цифровую, то Таймер отключится. И запуск программы произойдёт только после нажатия клавиши "ВК".
Клавишами курсора перемещаемся по пунктам меню, цифровые клавиши для выбора дискеты с номером от 1 до 9 соответственно, и "0" это дискета 10.

Не большие хаки.
Если в файле mboot.ini в имени файла "точку" заменить любым другим символом, то этот файл не будет включен в меню.
Если всё совсем пошло не так, например совсем нет файлов на дискетах, то можно нажать клавишу "F1". ;)

Пока это тестовый вариант, ещё не удалось протестировать программу на все возможные "не штатные" ситуации.
Понятно, что программа скорее для "баловства".
Но идея такова.
mboot.rom записывается в загрузочную область HDD.
На первой дискете HDD должны быть записаны только OS, все возможные (используемые).
Имена файлов этих OS указываются в файле mboot.ini, в котором так-же выбирается предпочтительная OS "по умолчанию".
При старте с HDD (или загрузке mboot.rom с другого носителя), запускается данная программа и предоставляет выбор, какую OS (программу) загрузить.

Расширение функционала:
"+" - переход к следующей дискете.
"-" - переход к предыдущей дискете.
"стр" - следующие 28 файлов на текущей дискете.
"Hom" - предыдущие 28 файлов на текущей дискете.
"F5" - выключает/включает обработку mboot.ini на дискете.
"F3" - программа тестирует дискеты (начиная с первой) на наличие файлов с расширением "COM".
Формируется каталог из номеров дискет, на которых есть такие файлы.
Формирование каталога можно прервать нажатием одной из клавиш: "Рус/Lat", "УС", "СС".
На экран может поместиться 84 дискеты. В заголовке остается номер последней протестированной дискеты.
По этому каталогу можно перемещаться с помощью клавиш курсора.
Нажатие "ВК" - переход к просмотру дискеты с выбранным номером.
"F3" - формировать каталог с первой дискеты.
"Стр" - формировать каталог с дискеты, следующей за последней в текущем каталоге.

:)


Добавил версию mboot_16.
Исправлено.
В исключительных случаях раньше не запускались файлы размером кратным 16Кб.

Добавил версию mboot_t.
Добавил время ожидания готовности HDD, актуально для медленных CF-карт.

KTSerg
22.04.2020, 07:53
По среди ночи проснулся и подумал... а чего так "жидко"... только первая дискета... я же знаю с точностью до байта, где на HDD начинаются каталоги каждой дискеты...
Цифровых клавиш на клаве 10, пусть и выбор дискеты будет по "горячим клавишам" с "1" по "9" соответственно номеру дискеты, а "0"- это дискета 10.

В первом сообщении заменю архив.
:)

Была проблема при рестарте по F12, причину нашел, устранил. При ините сбрасывал только один младший байт у номера читаемого сектора.

KTSerg
23.04.2020, 19:01
Прикольно.
Планировал программку именно для выбора OS с которой нужно стартовать, а на практике получилась программка, которая просто позволяет без OS прыгать по дискетам HDD и запускать программы не набирая их названия в командной строке :)
Когда-то у меня для этих целей была утилитка "dis", которая была записана на каждой дискете. Но она работала под определённым МикроДосом, который сама и "взламывала", для запуска программ. :)
Шеф у меня не очень любил набирать на клавиатуре названия игрушек для их запуска, был очень рад той утилитке.
А тут не ожиданно получилась автономная (не привязанная к OS) запускалка.
:)

KTSerg
26.04.2020, 14:09
Подумал, что можно было-бы снять ограничение на использование только первых 10ти дискет.
Начал смотреть, какие для этого требуется внести изменения... и тут до меня доходит, что упираюсь в то-же самое ограничение что было у МикроДоса - 41 дискета, т.к. для работы с номерами секторов использую 2-ух "байтные переменные"...

Improver
28.04.2020, 10:47
KTSerg, прога полезная и перспективная, небольшой багрепорт... Запустил пока в эмуляторе (без файла mboot.ini), долго не мог понять, откуда это всё у меня на диске... Похоже, в список попадают удалённые файлы, и их даже можно запускать. :)

Второй момент, как предложение: хотелось бы видеть где-нибудь надпись с номером текущей дискеты. А может даже будет лучше, если на первом экране показывать список непустых дискет, как директории, а по входу в них уже показывать содержимое?

KTSerg
28.04.2020, 12:20
... долго не мог понять, откуда это всё у меня на диске... Похоже, в список попадают удалённые файлы, и их даже можно запускать. :)
:)
Точно, на данный момент проверка на признак "файл удален" отсутствует.
Так-же как прога пока не знает, о том, что файлы могут принадлежать разным "юзерам" и это могут быть совсем разные файлы с одинаковым именем.


Второй момент, как предложение: хотелось бы видеть где-нибудь надпись с номером текущей дискеты.
Этот момент уже реализуется.
Только когда вспомнил про "заворот" дискового пространства из-за 2-ух байтных номеров секторов, начал думать, делать номер дискеты 3-ёх значным, или 2-у значным.

А может даже будет лучше, если на первом экране показывать список непустых дискет, как директории, а по входу в них уже показывать содержимое?
Если только как отдельную фичу, дополнительную возможность, по запросу пользователя.
Т.к. прочитать каталоги всех дискет, и проанализировать есть ли на них подходящие файлы... Будет занимать какое-то время

Improver
28.04.2020, 13:10
Только когда вспомнил про "заворот" дискового пространства из-за 2-ух байтных номеров секторов, начал думать, делать номер дискеты 3-ёх значным, или 2-у значным.Просто хочу обратить внимание: максимальный номер дискеты может быть 29BEh = 10686, дальше будет пересечение границы в 8Гб... А драйвер для IDE без заворотов можно взять в последней Т-72 (https://zx-pk.ru/threads/9488-vektor-06ts-operatsionnye-sistemy.html?p=1060074&viewfull=1#post1060074), если что.


Т.к. прочитать каталоги всех дискет, и проанализировать есть ли на них подходящие файлы... Будет занимать какое-то времяДа, будет. Ну тогда для ускорения можно расширить содержимое INI-файла на первой дискете, перечислить там все дискеты, в виде соответствующей структуры.

ivagor
28.04.2020, 13:32
делать номер дискеты 3-ёх значным
Если трехзначный десятичный, то это примерно (грубо прикинул) 780 Мб, не то чтобы очень много по сегодняшним меркам

b2m
28.04.2020, 13:57
99 дискет хватит всем :)

Improver
28.04.2020, 14:06
А кому не хватит, тому FF. :)

KTSerg
28.04.2020, 14:22
99 дискет хватит всем :)
Напоминает заявление (не дословно): "... 640 КБ памяти (компьютера) достаточно для решения любых задач ..."
А потом его-же: "... текстовые файлы не могут содержать вирусы ..."
:)

b2m
28.04.2020, 15:09
Напоминает
Было бы странно, если бы не напомнило :) Копирайт БГ ставить уж не стал, всё-таки не дословно.

KTSerg
29.04.2020, 21:22
Промежуточная версия, для тестирования визуализации номера дискеты и юзера.

Увеличение пунктов меню с 26 до 28.
Вывод номера дискеты на экран в виде 001h - это максимум 4095 дискет (выбор дискеты пока не менял).
Фильтрация удаленных файлов.
Отображение номера юзера файла (если он не 00) перед именем файла.

KTSerg
01.05.2020, 16:35
Расширил возможности.
"+", "-" - соответственно переход к просмотру следующей и предыдущей дискет.
"F5" - откл./вкл. использование mboot.ini , т.к. может понадобиться увидеть не только файлы перечисленные в нём.
Каталог НЕ пустых дискет (содержащих СОМ-файлы), формируется по "F3".
Формирование каталога можно прервать любой из "РУС", "УС", "СС".
"Стр" - продолжить с последней в текущем каталоге.

Исправил глюк, который закрался в одной из версий. Если файлов меньше 14, то переход вправо/влево приводил к сбою отображения меню.

KTSerg
02.05.2020, 09:57
Удалил из сообщений все промежуточные версии.
Крайнюю залил в первое сообщение темы.

Сделал смещение по файлам, если на дискете их больше 28-ми.
Смещение дальше и назад по файлам, соответственно клавишами "Стр" и "стрелка влево-вверх".

KTSerg
10.05.2020, 04:54
В первое сообщение добавил версию mboot_16.
В своей программе исправил обсуждаемый в ветке ОС момент, связанный с файлами размером кратным 16КБ.
Сейчас программа запускает такие файлы, даже если не найдёт в директории последнюю (пустую) запись.

KTSerg
24.08.2020, 17:06
Выяснилось, что при использовании CF-карты в качестве HDD, не хватало времени ожидания готовности HDD, и программа показывала, что на дискетах пусто.
Добавил ожидания.
Архив в первом сообщении темы.