
Сообщение от
Serebriakov
К сожалению, мне с ходу не удалось найти где в Корветном CP/M 2.2 биосе находится этот флаг.
Вот образ: VADSOFT_GAMES11_COLD+WARM_AUTOSTART.zip, где флаг для «теплого старта» точно установлен - после выхода из программ снова стартует автозапуск.
Я ошибся, в образе от VadSoft флага «теплого старта» для меню запуска игр (KTL5.COM) нет. Сработает автозапуск после выхода из программы или не сработает зависит только от самой программы - видимо есть разные способы завершить свою работу. Например, при выходе из Proffer Commander (PROF.COM) - снова запускается строка из автозапуска (даже если это не сам командер, а что-то другое), т.е. срабатывает «холодный старт» с автозапуском. Тоже самое и с меню для игр от VadSoft (KTL5.COM) - после выхода снова выполняется строка из автозапуска. А вот Клад (KLAD1.COM) всегда выбрасывает строго в командную строку A> , как при «теплом старте» без флага в BIOS CP/M (бита режима).
Так же попробовал заставить Клад делать «холодный старт» принудительно вместо «теплого старта» - заменил в BIOS CP/M образа дискеты второй jmp на первый:

Сообщение от
Serebriakov
Первые 6 байт - две точки входа (две jmp инструкции). Первая точка входа - это «холодный старт», которая будет выполнять любую команду в буфере команд. Вторая точка входа - «теплый старт» - она будет игнорировать любую команду, предварительно инициализированную в буфере.
но не помогло. Все-равно вываливается в A>, как при «теплом старте» без флага в BIOS CP/M (бита режима).
Ну и на последок поэкспериментировал со стандартными файлами автозапуска в CP/M-80 ($$$.SUB) и в МикроДОС (INITIAL.SUB). А так же с утилитой SUBMIT (SUBMIT.COM, SUBM.COM). Оказалось все эти способы запуска командных файлов ведут себя по разному и требуют немного разный формат файлов. С форматом запуска утилиты-компаньона XSUB (XSUB.СOM) для SUBMIT с ходу разобраться не удалось - в образах не нашлось примера вызова XSUB, но нашлась небольшая дока - размещу в конце поста. Остальные форматы расписал ниже.
Итак, вот что удалось выяснить методом проб и ошибок:
В CP/M-80 автоматически запускается командный файл $$$.SUB, при его наличие на дискете.
После выполнения этот файл $$$.SUB автоматически удаляется.
В файл можно поместить только одну команду.
Формат файла:
1 байт - любой символ кроме NULL - 00h. Например, пробел - 20h. Утилиты SUBMIT при создании файла $$$.SUB в автоматическом режиме, на место этого пробела обычно ставят символ с кодом - 05h, но это не критично, символ может быть любой кроме NULL.
Далее со 2-го байта пишем нашу команду для автозапуска, например KLAD1.
Символ конца строки или конца файла не требуется.
Т.е. формат командного файла $$$.SUB выходит следующий
[свернуть]
В МикроДОС автоматически запускается командный файл INITIAL.SUB, при его наличие на дискете.
После выполнения этот файл INITIAL.SUB НЕ удаляется.
В файл можно поместить несколько команд.
Для этого с самого первого байта пишем КОМАНДУ1.
Далее символ перехода на новую строку: либо только один возврат каретки (CR) с кодом 0Dh, либо возврат каретки+подача строки (CR+LF) с кодами 0Dh+0Ah.
Далее пишем КОМАНДУ2 и так же символ перехода на новую строку.
Символ конца файла не требуется.
Т.е. формат командного файла INITIAL.SUB выходит следующий
[свернуть]
Командный файл *.SUB запускается с помощью утилиты SUBMIT (SUBMIT.COM, SUBM.COM) командой: SUBMIT ИМЯ
Например: SUBMIT 123.SUB
После выполнения запускаемый SUB-файл НЕ удаляется.
В файл можно поместить несколько команд.
Для этого с самого первого байта пишем КОМАНДУ1.
Далее символ перехода на новую строку: либо только один возврат каретки (CR) с кодом 0Dh, либо возврат каретки+подача строки (CR+LF) с кодами 0Dh+0Ah.
Далее пишем КОМАНДУ2 и так же символ перехода на новую строку.
После крайнего символа перехода на новую строку ОБЯЗАТЕЛЬНО ставим символ конца текстовых файлов или конца вводимых с консоли данных в CP/M (SUBSTITUTE) с кодом 1Ah .
Без символа конца файла 1Ah командный файл *.SUB не выполнится, а SUBMIT.COM просто вернет управление в командную строку.
Т.е. формат командного файла *.SUB выходит следующий
Код:
KLAD1CRCF
KLAD2CRCF
SUB
[свернуть]
При запуске SUB-файла через SUBMIT.COM, его содержимое автоматически копируется в $$$.SUB, что позволяет выполнить до конца список команд, например после спонтанной перезагрузки.
А вот добавить SUBM.COM или SUBMIT.COM в автозапуск BIOSa CP/M через HEX, чтобы получить аналог AUTOEXEC.BAT из MS-DOS мне не удалось. Сама утилита SUBMIT запускается, но параметр с именем командного SUB-файла записанный дальше ни через пробел (20h) ни через NULL (00h) не опознает. Так же пробовал добавлять после имени SUB-файла в разных сочетаниях символы конца ввода SUBSTITUTE - 1Ah, символы каретки CR - 0Dh, подачи строки LF - 0Ah - все равно не стартует с разными сообщениями. Если у кого получится - пишите.
Образы с настроенными автозапусками для экспериментов: KORVET-KDI-AUTOSTART-TESTS.7z
Ну и немного информации по SUBMIT.COM и её компаньону XSUB.COM из официальной доки:
Код:
2.3 SUBMIT - запуск на выполнение командного файла
---------------------------------------------------
Параметры запуска:
SUBMIT filename a b c ...
Запуск на выполнение командного файла "filename" (с
расширением ".SUB") с предварительной заменой в тексте
параметров:
"$1" - значением "a"
"$2" - значением "b"
"$3" - значением "c" и т.д.
2.4 XSUB - расширение программы "SUBMIT"
-----------------------------------------
Эта команда размещается в командных файлах (с расшире
нием ".SUB") для передачи команд и данных другим программам,
которые запущены на выполнение программой "SUBMIT".
Самостоятельно эта команда не используется.