Важная информация

User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 20

Тема: Автозапуск программ ОС СР/М на Корвете

  1. #1
    Veteran Аватар для gdv2002
    Регистрация
    17.07.2013
    Адрес
    г. Курган
    Сообщений
    1,976
    Записей в дневнике
    2
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    150
    Поблагодарили
    105 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Автозапуск программ ОС СР/М на Корвете

    Давно интересовал вопрос автозапуска программ на Корвете, чтобы при загрузке ОС сразу стартовала пользовательская программа, к примеру Нортон.
    В самой СР/М нет аналога MS-ДОСовского файла autoexe.bat, однако диски с автозапуском есть, к примеру многие школьные диски, психологические тесты...
    Нашел пока одно решение - через редактор командной строки DED.COM.
    Суть такова, что сначала программой DEDINST.COM "патчится" системная область и при загрузке с этого диска сразу стартует программа DED.COM.
    Следовательно можно свою программу, к примеру Нортон переименовать в DED.COM и при загрузке стартанет она.
    А есть еще какие-то способы сделать загрузочную дискету, такие образы есть в архивах, в них никакого ДЕДа нет, а автозапуск есть!
    Во вложении комплект ДЕДа с описанием самой программы, её установки и удаления.
    DED.rar
    С уважением, Дмитрий.
    Pentagon-128 вер.2023+Turbo Sound+ZXM-GeneralSound
    ZXM-Phoenix 2048+Turbo Sound+ZXM-GeneralSound+ZXM-SoundCard Lite
    ZXM-Phoenix в Телеграмм

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Guru
    Регистрация
    15.09.2009
    Адрес
    SPb
    Сообщений
    7,163
    Спасибо Благодарностей отдано 
    230
    Спасибо Благодарностей получено 
    262
    Поблагодарили
    190 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от gdv2002 Посмотреть сообщение
    В самой СР/М нет аналога MS-ДОСовского файла autoexe.bat
    Неужели в корветовской CP/M не работает стандартный start.com ?
    На R1715 работает.....

  4. #3
    Veteran Аватар для gdv2002
    Регистрация
    17.07.2013
    Адрес
    г. Курган
    Сообщений
    1,976
    Записей в дневнике
    2
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    150
    Поблагодарили
    105 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Еще более странно, но ни в одном Корветовском архиве не нашел файла start.com, в книге Уэйта и Ангермейера про него тоже не упоминается. Может на Роботроне операционку SCP немного "подправили"?
    Последний раз редактировалось gdv2002; 05.02.2021 в 11:49.
    С уважением, Дмитрий.
    Pentagon-128 вер.2023+Turbo Sound+ZXM-GeneralSound
    ZXM-Phoenix 2048+Turbo Sound+ZXM-GeneralSound+ZXM-SoundCard Lite
    ZXM-Phoenix в Телеграмм

  5. #4
    Guru
    Регистрация
    15.09.2009
    Адрес
    SPb
    Сообщений
    7,163
    Спасибо Благодарностей отдано 
    230
    Спасибо Благодарностей получено 
    262
    Поблагодарили
    190 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вроде если ничего не путаю в Векторе) еще initial.sub был....

  6. #5
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    во многих реализациях CP/M это AUTOEXEC.SUB
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  7. #6
    Moderator Аватар для Serebriakov
    Регистрация
    06.04.2013
    Адрес
    г. Могилев, Беларусь
    Сообщений
    253
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    109
    Спасибо Благодарностей получено 
    55
    Поблагодарили
    26 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от gdv2002 Посмотреть сообщение
    пользовательская программа, к примеру Нортон.
    Аналог Norton Commander на Корвете называется The Proffer Commander (как правило PR.COM или PROF.COM в образах):



    Цитата Сообщение от gdv2002 Посмотреть сообщение
    стартует программа DED.COM.
    Вот здесь есть хорошее описание редактора командной строки DED.

    Цитата Сообщение от Error404 Посмотреть сообщение
    во многих реализациях CP/M это AUTOEXEC.SUB
    CP/M 3 запускает команды из PROFILE.SUB при загрузке. Все что нужно сделать - вставить необходимые команды в PROFILE.SUB.

    А вот в CP/M 2.2 все сложнее. К сожалению, функция автостарта для CP/M 2.2 не очень хорошо документирована, постараюсь это исправить. Для включения автозапуска нужно пропатчить загрузочный сектор в образе любым hex-редактором. Ниже распишу формат образа диска и что патчить.

    Первые 128 байт в образе содержат размеры всех областей на диске, подробное описание этой области есть в файле ниже в разделе CP/M:
    https://github.com/alexanderk23/zxdn...g/ig7doses.txt

    Если интересно покопаться более детально, вот еще пара ссылок на формат CP/M 2.2:
    http://www.idealine.info/sharpmz/succpminfo06.htm
    http://www.idealine.info/sharpmz/dpb.htm
    http://www.seasip.info/Cpm/format22.html

    После первых 128 байт в образе следующие байты как раз и отвечают за командный процессор.

    Первые 6 байт - две точки входа (две jmp инструкции). Первая точка входа - это «холодный старт», которая будет выполнять любую команду в буфере команд. Вторая точка входа - «теплый старт» - она будет игнорировать любую команду, предварительно инициализированную в буфере. Такова логика работы автозапуска в CP/M, BIOS просто выбирает переход к первой или второй точке входа в зависимости от контекста.
    При включении компьютера или полной перезагрузке происходит «холодный старт», с автозапуском по первому jmp.
    По-поводу «теплого старта» - многие программы в типичном сеансе CP/M завершают работу с помощью «теплого старта» и автозапуск уже не срабатывает - вызывается второй jmp, который игнорирует командный буфер. Однако можно заставить CP/M выполнять автозапуск и при «теплом старте» (после выхода из программ) с помощью флагов BIOS (битов режима), об этом напишу ниже.

    Следующий 7-ой байт обычно равный 7Fh - сообщает нам сколько всего байтов доступно в буфере (7Fh = 127 байт):


    Следующий 8-ой байт - общая длина команды. По умолчанию этот байт равен 00h, что указывает на отсутствие команды в буфере. Чтобы включить автозапуск, нам нужно изменить этот 8-ой байт - указать длину команды. Можно указать длину команды с запасом, предположим 15 символов = 0Fh. Главное потом после ввода более короткой, чем 15 символов команды, записать пробел 00h.

    Со следующего байта фактически начинается входной буфер для командного процессора, куда мы и записываем команду. По-умолчанию там записан копирайт CP/M: COPYRIGHT (C) 1979, DIGITAL RESEARCH - просто поверх него пишем нашу команду и в конце ставим пробел 00h.
    В команде можно указать не только имя программы, например: KLAD1 , а еще и указать диск: A:KLAD1
    Теперь всякий раз, когда CP/M будет загружаться в память, командный процессор будет запускать нашу команду.

    Теперь по-поводу того, как заставить выполняться автозапуск еще и при «теплом старте» (после выхода из программ). Сделать это можно с помощью флагов BIOS (битов режима). Как я понял, в CP/M 8 флагов (8 бит), некоторые из них связаны с прерываниями, некоторые с дисководами, два последних относятся к «теплому старту». К сожалению, мне с ходу не удалось найти где в Корветном CP/M 2.2 биосе находится этот флаг.
    Вот образ: VADSOFT_GAMES11_COLD+WARM_AUTOSTART.zip, где флаг для «теплого старта» точно установлен - после выхода из программ снова стартует автозапуск.
    Будет у кого желание - помогите найти адрес этого байта в образе. Вот в этом видео где-то на 7 минуте, показывается как патчится флаг «теплого старта» для Altair 8800, но там, конечно же другие адреса. Так же в конце этого видео есть хорошая идея ставить в автозапуск утилиту SUBMIT (в образах SUBM.COM, SUBMIT.COM), которая позволяет запускать *.SUB сценарии с несколькими командами - таким образом можно получить аналог AUTOEXEC.BAT из DOS.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	PROFFER_COMMANDER.jpg 
Просмотров:	318 
Размер:	39.0 Кб 
ID:	74754   Нажмите на изображение для увеличения. 

Название:	CP-M_AUTOSTART_PATCH.jpg 
Просмотров:	324 
Размер:	102.1 Кб 
ID:	74753  
    Последний раз редактировалось Serebriakov; 19.02.2021 в 18:35.

  8. Эти 3 пользователя(ей) поблагодарили Serebriakov за это полезное сообщение:

    gdv2002 (19.02.2021), rw6hrm (19.02.2021), TomaTLAB (19.02.2021)

  9. #7
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Serebriakov Посмотреть сообщение
    Аналог Norton Commander на Корвете называется The Proffer Commander (как правило PR.COM или PROF.COM в образах):

    "MkDir" - создать каталоги? Как реализованы подкаталоги в CPM (2.2? 3.0?) Корвета?

    - - - Добавлено - - -

    Еще не прозвучало про файл $$$.sub - автостарт штатно реализованый в CP/M 2.х для SUBMIT.COM, XSUB.COM и им подобным программ пакетной обработки.
    Оно не очень удобно (т.к. СРМ при выполнении этот файл подрезает и в итоге уничтожает), но как вариант для защищенной от записи дискеты имеет место быть.
    Многие классические "нортоны" CPM этот механизм используют чтобы штатно вернуть себе управление после запуска из них какого-то .COM
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  10. #8
    Moderator Аватар для Serebriakov
    Регистрация
    06.04.2013
    Адрес
    г. Могилев, Беларусь
    Сообщений
    253
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    109
    Спасибо Благодарностей получено 
    55
    Поблагодарили
    26 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    "MkDir" - создать каталоги? Как реализованы подкаталоги в CPM (2.2? 3.0?) Корвета?
    На Корвете нет CP/M 3.0 - я её упомянул только для объяснения механизма автозапуска. Две основные дискетные операционные системы: CP/M 2.2. и её советский клон МикроДОС. Есть еще не дискетный Бейсик, прошитый в ПЗУ и разные сетевые системы, но это отдельная тема.

    Насчет каталогов - это физически не каталоги, а пользовательские области на дискете, чтобы понять как это работает проще будет показать картинку из SteinBlume:


    Т.е. на дискете есть 16 пользовательских областей (по сути виртуальных каталогов), а так же область удаленных файлов. Данную возможность, насколько я помню, использовал в основном сетевой софт, чтобы сетевые ученики 8010 могли отправлять свои файлы на учительский 8020. А тот записывал файлы учеников в области-каталоги согласно сетевому номеру конкретной 8010.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	SteinBlume_Screenshot.jpg 
Просмотров:	272 
Размер:	62.6 Кб 
ID:	74772  
    Последний раз редактировалось Serebriakov; 20.02.2021 в 19:09.

  11. #9
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Serebriakov Посмотреть сообщение
    Т.е. на дискете есть 16 пользовательских областей (по сути виртуальных каталогов), а так же область удаленных файлов.
    Понятно, всё по классике.
    Я почему спросил - с выходом MS-DOS с подкаталогами, энтузиастами предпринимались попытки сделать похожее в CP/M (обычно инфа по каталогам и датам файлов хранилась в служебном файле), но получалось или неудобно или в относительно удачных случаях получалось инородно вплоть до совершенно другой файловой системы (как в MSX DOS). Подумал что на Корвете могла быть одна из вариаций (первого типа например, она остается совместимой с CPM по формату файловой системы)
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  12. #10
    Master
    Регистрация
    27.11.2014
    Адрес
    г. Саратов
    Сообщений
    534
    Спасибо Благодарностей отдано 
    55
    Спасибо Благодарностей получено 
    38
    Поблагодарили
    30 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Proffer по F7 просто открывает ближайший свободный User и позволяет задать ему имя. Но это имя доступно только в Proffer'e. Оно записывается в файл на этом диске. В самой же СР/М никаких имён пользовательских областей не будет, они по-прежнему будут иметь только номера. Я бы сказал, не очень удобно реализовано. Если я хочу сразу попасть, например, в User 8, минуя 2 - 7, то никак. На ПК8000 в File Commander переключение между областями реализовано по Shift+F1 или +F2.
    Последний раз редактировалось Arix; 22.02.2021 в 18:51.

  13. Этот пользователь поблагодарил Arix за это полезное сообщение:

    Serebriakov (23.02.2021)

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 220
    Последнее: 23.05.2023, 08:09
  2. BASIC на Корвете
    от Arix в разделе Корвет
    Ответов: 46
    Последнее: 24.05.2020, 21:36
  3. Ответов: 33
    Последнее: 05.12.2018, 09:00
  4. автозапуск .SCL в Spin & Spectaculator
    от ultra в разделе Эмуляторы
    Ответов: 0
    Последнее: 10.02.2008, 06:07

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •