в разработке!

User Tag List

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 22

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

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    06.04.2013
    Адрес
    г. Могилев, Беларусь
    Сообщений
    255
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    110
    Спасибо Благодарностей получено 
    65
    Поблагодарили
    29 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от 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 выходит следующий


    Код:
    ПРОБЕЛKLAD1


    [свернуть]


    В МикроДОС автоматически запускается командный файл INITIAL.SUB, при его наличие на дискете.
    После выполнения этот файл INITIAL.SUB НЕ удаляется.
    В файл можно поместить несколько команд.
    Для этого с самого первого байта пишем КОМАНДУ1.
    Далее символ перехода на новую строку: либо только один возврат каретки (CR) с кодом 0Dh, либо возврат каретки+подача строки (CR+LF) с кодами 0Dh+0Ah.
    Далее пишем КОМАНДУ2 и так же символ перехода на новую строку.
    Символ конца файла не требуется.

    Т.е. формат командного файла INITIAL.SUB выходит следующий

    Код:
    KLAD1CR
    KLAD2CR


    [свернуть]


    Командный файл *.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".
    Самостоятельно эта команда не используется.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	001-SSS.SUB.png 
Просмотров:	737 
Размер:	10.7 Кб 
ID:	75490   Нажмите на изображение для увеличения. 

Название:	002-INITIAL.SUB.png 
Просмотров:	775 
Размер:	13.3 Кб 
ID:	75491   Нажмите на изображение для увеличения. 

Название:	003-123.SUB.png 
Просмотров:	813 
Размер:	14.3 Кб 
ID:	75492   Нажмите на изображение для увеличения. 

Название:	004-SSS.SUB.jpg 
Просмотров:	733 
Размер:	23.5 Кб 
ID:	75493   Нажмите на изображение для увеличения. 

Название:	005-INITIAL.SUB.jpg 
Просмотров:	766 
Размер:	22.9 Кб 
ID:	75494  

    Нажмите на изображение для увеличения. 

Название:	006-INITIAL.SUB.jpg 
Просмотров:	747 
Размер:	21.3 Кб 
ID:	75495  
    Последний раз редактировалось Serebriakov; 28.05.2021 в 07:58.

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

  3. #2

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,942
    Спасибо Благодарностей отдано 
    110
    Спасибо Благодарностей получено 
    296
    Поблагодарили
    222 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Serebriakov Посмотреть сообщение
    Формат файла:
    1 байт - любой символ кроме NULL - 00h. Например, пробел - 20h. Утилиты SUBMIT при создании файла $$$.SUB в автоматическом режиме, на место этого пробела обычно ставят символ с кодом - 05h, но это не критично, символ может быть любой кроме NULL.
    Далее со 2-го байта пишем нашу команду для автозапуска, например KLAD1.
    Символ конца строки или конца файла не требуется.
    Вообще-то, первый байт это длина команды, именно поэтому символ конца строки и не требуется. Для KLAD1 как раз будет 05h.
    Как я писал выше, можно и несколько команд, но они идут в обратном порядке и размещаются в блоках по 128 байт. Программа SUBMIT подставляет параметры $1,$2,... и генерирует такой файл.

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

    Serebriakov(28.05.2021)

  4. #3

    Регистрация
    12.05.2018
    Адрес
    с. Телешовка, Киевская обл., Украина
    Сообщений
    38
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    14 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Serebriakov Посмотреть сообщение
    Сработает автозапуск после выхода из программы или не сработает зависит только от самой программы - видимо есть разные способы завершить свою работу.
    Совершенно верно. Автозапуск сработает только в том случае, когда программа завершилась вызовом функции "теплый старт". При этом сбрасываются/реинициализируются некоторые устройства и переменные, перезагружается CCP (вот поэтому и происходит автозапуск) и BDOS. А вот если ничего такого не требуется и не предполагается запускать программу из пакетного файла, то можно завершить работу программы командой RET (вполне "законный" способ: CCP после загрузки .COM файла передает управление командой CALL 0100H). А вот теперь нажать ^C... И автозапуск сработает (ну если прописан)!!!
    Цитата Сообщение от Serebriakov Посмотреть сообщение
    Например, при выходе из Proffer Commander (PROF.COM) - снова запускается строка из автозапуска (даже если это не сам командер, а что-то другое), т.е. срабатывает «холодный старт» с автозапуском.
    На самом деле это "теплый старт", при "холодном" тем более сработает.
    Цитата Сообщение от Serebriakov Посмотреть сообщение
    А вот Клад (KLAD1.COM) всегда выбрасывает строго в командную строку A> , как при «теплом старте» без флага в BIOS CP/M (бита режима).
    Скорее всего завершается командой RET, а не "теплым стартом". И вряд ли существует такой флаг. Автозапуск происходит потому что команда прописывается в буфер ввода CCP прям в его образе на диске.
    Код:
    CBASE	JMP	COMMAND	;execute command processor (ccp).
    	JMP	CLEARBUF	;entry to empty input buffer before starting ccp.
    ;
    ;   Standard cp/m ccp input buffer. Format is (max length),
    ; (actual length), (char #1), (char #2), (char #3), etc.
    ;
    INBUFF	DB	127	;length of input buffer.
    	DB	0	;current length of contents.
    	DB	'Copyright'
    	DB	' 1979 (c) by Digital Research      '
    	DB	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
    	DB	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
    	DB	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
    	DB	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
    INPOINT	DW	INBUFF+2 ;input line pointer
    Все же флаг есть но это внутренняя переменная CCP и используется им только при обработке файла $$$.SUB. Т.е. для успешного выполнения $$$.SUB необходимо его наличие и каждая команда (программа) в нем должна завершаться вызовом "теплого старта".
    Код:
    ;   Batch (or SUBMIT) processing information storage.
    ;
    BATCH	DB	0	;batch mode flag (00 if no submit file, ff if submitting).
    BATCHFCB:DB	0,'$$$     SUB',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
    Вывод: CP/M-80 не умеет обрабатывать файлы .SUB (кроме специально подготовленного утилитой SUBMIT файла $$$.SUB)
    Идея: написать на АСМе утилитку (INIT.COM, напрмер), которая должна быть прописана в автозапуск. Где-то в области констант и переменных BIOS (в странице F700, например) найти свободную ячейку под флаг; при запусе проверить: если установлен - передать управление CCP, если не установлен - установить и запустить SUBMIT INITIAL (проверять их наличие или нет - дело вкуса, если нет - ну ругнется при перезагрузке). В любом случае INIT.COM не должна завершаться "теплым стартом", иначе "зациклимся".
    Проблема: никак не пойму как из своей программы запустить другую программу (как это делает Проффер, например).
    Еще вариант
    Код:
    ;	********************************************************
    ;	*	Base of CCP contains the following code/data   *
    ;	*	ccp:	jmp ccpstart	(start with command)   *
    ;	*		jmp ccpclear    (start, clear command) *
    ;	*	ccp+6	127		(max command length)   *
    ;	*	ccp+7	comlen		(command length = 00)  *
    ;	*	ccp+8	' ... '		(16 blanks)	       *
    ;	********************************************************
    ;	* Normal entry is at ccp, where the command line given *
    ;	* at ccp+8 is executed automatically (normally a null  *
    ;	* command with comlen = 00).  An initializing program  *
    ;	* can be automatically loaded by storing the command   *
    ;	* at ccp+8, with the command length at ccp+7.  In this *
    ;	* case, the ccp executes the command before prompting  *
    ;	* the console for input.  Note that the command is exe-*
    ;	* cuted on both warm and cold starts.  When the command*
    ;	* line is initialized, a jump to "jmp ccpclear" dis-   *
    ;	* ables the automatic command execution.               *
    ;	********************************************************
    ;
    	jmp	ccpstart	;start ccp with possible initial command
    	jmp	ccpclear	;clear the command buffer
    maxlen:	db	127	;max buffer length
    comlen:	db	0	;command length (filled in by dos)
    ;	(command executed initially if comlen non zero)
    combuf:
    	db	'        '	;8 character fill
    	db	'        '	;8 character fill
    	db	'COPYRIGHT (C) 1979, DIGITAL RESEARCH  '; 38
    	ds	128-($-combuf)
    ;	total buffer length is 128 characters
    comaddr:dw	combuf	;address of next to char to scan
    Последний раз редактировалось AlexS58; 22.02.2026 в 14:48.

  5. #4

    Регистрация
    27.11.2014
    Адрес
    г. Саратов
    Сообщений
    588
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    42
    Поблагодарили
    32 сообщений
    Mentioned
    1 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.

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

    Serebriakov(23.02.2021)

  6. #5

    Регистрация
    12.05.2018
    Адрес
    с. Телешовка, Киевская обл., Украина
    Сообщений
    38
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    14 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Serebriakov Посмотреть сообщение
    Теперь по-поводу того, как заставить выполняться автозапуск еще и при «теплом старте» (после выхода из программ). Сделать это можно с помощью флагов BIOS (битов режима). Как я понял, в CP/M 8 флагов (8 бит), некоторые из них связаны с прерываниями, некоторые с дисководами, два последних относятся к «теплому старту». К сожалению, мне с ходу не удалось найти где в Корветном CP/M 2.2 биосе находится этот флаг.
    Вот образ: VADSOFT_GAMES11_COLD+WARM_AUTOSTART.zip, где флаг для «теплого старта» точно установлен - после выхода из программ снова стартует автозапуск.
    Так в этом образе механизм автозапуска менюшки идентичен автозапуску DED.COM (только прописан KTL5). Может утилита DEDINST как-то устанавливает этот флаг.. Хотя сомневаюсь. При восстановлении ею же исходного состояния диска, после сохранения изменений на диск и выхода из программы, естессно, происходит "теплый старт" и автозапуска уже нету. Сразу же в редакторе дисков (DE.COM) ручками прописываю "AED" (или A:PR, ну и длину в 8-ом байте), сохраняю изменения на диск, закрываю редактор и тут же срабатывает автозапуск. О.. заметил странность в упомянутом образе: прописано "A:KTL5", а в 8-ом байте указано 4
    Нажмите на изображение для увеличения. 

Название:	pic_26.jpg 
Просмотров:	731 
Размер:	81.6 Кб 
ID:	74928
    есть хорошая идея ставить в автозапуск утилиту SUBMIT (в образах SUBM.COM, SUBMIT.COM), которая позволяет запускать *.SUB сценарии с несколькими командами - таким образом можно получить аналог AUTOEXEC.BAT из DOS.
    В МикроДОС автозапуск осуществляется если на диске присутствует файл INITIAL.SUB.
    Последний раз редактировалось AlexS58; 13.03.2021 в 03:02.

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

    Serebriakov(13.03.2021)

  7. #6

    Регистрация
    12.05.2018
    Адрес
    с. Телешовка, Киевская обл., Украина
    Сообщений
    38
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    14 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

    Serebriakov(28.05.2021)

  8. #7

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,942
    Спасибо Благодарностей отдано 
    110
    Спасибо Благодарностей получено 
    296
    Поблагодарили
    222 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AlexS58 Посмотреть сообщение
    после выполнения каждой строки-команды модифицируется
    Немного не так. SUBMIT.COM записывает команды в обратном порядке (1 команда на один 128-байтный блок) и файл не модифицируется. Изменяется только его длина, т.е. всего один доступ на запись к каталогу. Выполняется команда из последнего блока и длина уменьшается на 1 блок.

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

    AlexS58(14.03.2021), Serebriakov(28.05.2021)

  9. #8

    Регистрация
    12.05.2018
    Адрес
    с. Телешовка, Киевская обл., Украина
    Сообщений
    38
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    14 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    SUBMIT.COM записывает команды в обратном порядке (1 команда на один 128-байтный блок) и файл не модифицируется. Изменяется только его длина, т.е. всего один доступ на запись к каталогу. Выполняется команда из последнего блока и длина уменьшается на 1 блок.
    О как все просто... Сбил с толку "мусор" в файле (в каждом блоке).
    Цитата Сообщение от Serebriakov Посмотреть сообщение
    Так же в конце этого видео есть хорошая идея ставить в автозапуск утилиту SUBMIT
    Пробовал (прописывал SUBMIT INITIAL), - не работает. Причина проста: при загрузке ОС грузится SUBMIT, обрабатывает INITIAL.SUB (в моем случае), создает $$$.SUB и завершет работу. Естессно, "теплый старт" и... повторный запуск SUBMIT... . НО.. ведь с прописанным в автозапуск DED скрипты работают. И с "голым" ССР тоже все пучком. А если прописать в автозапуск шо-то другое, Проффер, например, и даже если восстановим $$$.SUB (с DED или встроенным ССР, по хотстарту он и будет выполняться), скрипт выполнятся не будет. Т.е. при хотстарте ВСЕГДА загружается то, что прописано в буфере (или стандартный ССР) и только они умеют работать с $$$.SUB. Выходит, что для автозапуска SUB-файла (пусть INITIAL.SUB, как в МикроДОС) нужно писать свой "command.com".

  10. #9

    Регистрация
    12.05.2018
    Адрес
    с. Телешовка, Киевская обл., Украина
    Сообщений
    38
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    14 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Драси.. Подняли такую интересную тему и слились.. Совсем скисли.. Я в пред. посте не совсем верно описал процедуру хотстарта, там практически половина системы ребутится, включая ССР. ССР обрабатывает команду прописанную в буфере ПДП (DMA), выполняет ее. Если буфер пуст, то пытается выполнить $$$.SUB. Если $$$.SUB нету, то отдается в распоряжение юзера с выводом промта (A>). Возник вопросик: что же собой представляет DED.COM? Как он работает? Это аналог встроенного ССР или это всего-лишь продвинутый редактор командной строки, который просто передает сформированную командную строку встроенному ССР + умеет детектить наличие $$$.SUB (и "скармливает" его встроенному ССР)?

  11. #10

    Регистрация
    12.05.2018
    Адрес
    с. Телешовка, Киевская обл., Украина
    Сообщений
    38
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    14 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В СР/М есть три функции "старта": ФУНКЦИИ BIOS: ФУНКЦИЯ 0: BOOT, ФУНКЦИЯ 1: WBOOT; ФУНКЦИИ BDOS: ФУНКЦИЯ 0: WBOOT - процедура "горячий старт"

    ФУНКЦИИ BIOS:

    Скрытый текст

    Код:
    			ФУНКЦИЯ 0: BOOT
    
    Входные параметры:  НЕТ.
    Выходные параметры: НЕТ.
    Действие: - осущестляет инициализацию всех устройств;
              - осущестляет инициализацию системной области;
    	  - осущестляет инициализацию внутренних переменных;
    	  - выводит на консоль начальное сообщение;
    	  - устанавливает <user 0> и диск по умочанию "A:".
    	Эта  функция  вызывается  обычно  только  один раз, при
    холодном   старте  системы.   Управление  после  этой   функции
    передается  функции 1 (WBOOT).
    
    		       ФУНКЦИЯ 1:  WBOOT
    
    Входные параметры:  НЕТ.
    Выходные параметры: НЕТ.
    Действие: - реинициализация :
    	  - контроллера прерываний;
    	  - последовательного интерфейса;
    	  - таймера;
    	  - графического контроллера;
    	  - алфавитно-цифрового контроллера;
    	  - просмотровой таблицы;
    	  - части системной области, связанной с прерываниями;
    	  - сброс дисковой системы;
    	  - очистка графического экрана;
    	  - разрешение подтверждения нажатия клавиши звуком;
    	  - перезагрузка CCP и BDOS;
    	  - инициализация команд перехода функций
    	  - теплого старта и BDOS;
    	  - установка адреса буфера обмена по умолчанию;
    	  - передает управление CCP.
    	Эта  функция  вызывается  обычно  при завершении работы
    текущей  программы,  либо  при  вызове  с  клавиатуры  "теплого
    старта" (^C).
    [свернуть]

    ФУНКЦИИ BDOS:

    Скрытый текст

    Код:
    ФУНКЦИЯ 0: WBOOT - процедура "горячий старт"
    
    входные параметры:
    		регистр С: 00Н
    
    	Процедура  "горячий старт" загружает в ОЗУ CCP и BDOS и
    передает управление операционной системе  ОС  на  уровень  CCP.
    CCP  активизирует  диск  А.  Действие этой функции эквивалентно
    безусловному переходу по адресу 0000H.
    [свернуть]

    А по адресу 0000H у нас
    Код:
    0000 C3   JMP   WBOOT    ; горячий старт
    0001 03
    0002 DA
    В Паскале опробовал все три функции (в автозапуске прописан Проффер), во всех случаях успешно стартонул Проффер.
    Позже опробую тестовые программы (с завершением всеми способами) в пакетном файле.
    Вот в описаниях процедур "теплого старта" и БСВВ и БДОС заметил некую странность: функция 0 БДОС - "Действие этой функции эквивалентно безусловному переходу по адресу 0000H", т.е. вызов функции БСВВ №1. В описании функции 1 БСВВ: "Эта функция вызывается обычно при завершении работы текущей программы, либо при вызове с клавиатуры "теплого старта" (^C)". Но ведь при ^C прерыватся выполнение текущей программы (если в ней эта возможность предусмотрена) или файла $$$.SUB (при этом он удаляется).
    А вот добавить SUBM.COM или SUBMIT.COM в автозапуск BIOSa CP/M через HEX, чтобы получить аналог AUTOEXEC.BAT из MS-DOS мне не удалось. Сама утилита SUBMIT запускается, но параметр с именем командного SUB-файла записанный дальше ни через пробел (20h) ни через NULL (00h) не опознает.
    Опознает и успешно обрабатывает исходный файл, создает $$$.SUB; завершает свою работу вызывая "теплый старт". И тут же повторно запускается... Замкнутый круг..
    Самая большая загадка в том, что $$$.SUB (При этом совсем не важно, как $$$.SUB появился на диске) не выполняется если в автозапуске что-то прописано (выполняется это "что-то"), а вот при прописанном DED.COM (или ничего не прописано) - выполняется.

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

    Serebriakov(22.06.2021)

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

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

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

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

Похожие темы

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

Ваши права

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