User Tag List

Показано с 1 по 10 из 494

Тема: Вектор-06Ц: Операционные системы

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

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

    Регистрация
    06.02.2018
    Адрес
    г. Волгоград
    Сообщений
    1,065
    Спасибо Благодарностей отдано 
    582
    Спасибо Благодарностей получено 
    470
    Поблагодарили
    253 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    убрать служебную ячейку из диапазона 0008-0037
    РДС активно использует эти ячейки, и CP/M тоже:

    Из доков...

    Как известно в ОС СР/М в этой области памяти зарезервированы следующие адреса
    0-2 - "горячий" старт ОС,
    3 - байт конфигурации,
    4 - номер текущего диска и области пользователя,
    5-7 - переход на диспетчер функций BDOS,
    38h-3Ah - переход на обработку прерывания по кадровому импульсу (в "Вектор 06Ц"),
    5Ch-7Fh - зарезервированы для БУФ файла,
    80h-0FFh - зарезервированы под область DMA.

    В РДС добавлены следующие ячейки:
    8-0Аh - переход на диспетчер функций BDOS,добавлен для короткого вызова BDOS - командой RST 1,а также зарезервирован для расширения функций BDOS.
    0Bh-0Dh - признак РДС (три байта в КОИ-8 - "РДС"),для того чтобы программа смогла определить (если надо),что она работает именно в РДС.
    0Eh - версия РДС,старшая тетрада - номер версии,младшая - номер коррекции.
    0Fh - слово включения резидентной части РДС,байт выводимый в порт 10h.В данной версии ОС,РДС находится в нулевой зоне квазидиска,соответственно слово включения будет - 20h.
    3Bh - копия порта 10h,используется при обращении к резидентной части РДС.(См. также п.8)
    3Ch - слово возврата из резидентной части РДС,после холодного старта и для полной СР/М-совместимости установлено в 23h,но может быть изменено (например,если его установить в 0,то по адресам с 0A000h по 0DFFFh
    будут находится 2 и 3 экранные плоскости).
    3Dh - коды ошибок BIOS,если при обмене с диском не было ошибок,устанавливается в 0.В основном эта ячейка предназначена для режима работы РДС номер 1.
    3Eh - номер текущего режима РДС (биты 0-6),в данной версии использутся только режимы 0 и 1,бит 7 зарезервирован для переключения режимов
    3Fh - номер режима обработки ошибок BIOS при обмене информацией с дисками.Номера 0 и 2 используются только в режиме 0 РДС,номер 1 - в любом.Номер 0 (установлен при холодном старте) - ошибки обрабатывает BIOS,вывоводится сообщение типа - "BIOS ERROR,CONTINUE ?",номер 2 - ошибки передаются
    для обработки BDOS,номер 1 - BDOS и BIOS игнорируют ошибки,их обработка поручается программе пользователя,в ячейке 3Dh - код ошибки.
    40h-5Bh - зарезервированы в режиме номер 1.
    Кроме того,в сегменте РДС (то есть в данной версии зона 0) по адресу 0А000h находятся три слова,которые содержат адреса частей РДС интересных для программиста.По адресу 0А000h - адрес начала кода BIOS,0А002h - адрес начала BIOS дисплэя (РК-консоль) и 0А004 - адрес начала знакогенератора.
    [свернуть]
    Сложно будет куда-то распихать все ячейки из этого диапазона, не ломая логику РДС и так, чтобы другие программы для РДС не перестали работать. Да и выше область памяти используется... Может проще запускать без ОС и возвращаться по БЛК-ВВОД?

    Цитата Сообщение от electroscat Посмотреть сообщение
    Круто бы было еще заставить при старте искать какой нибудь AUTOEXEC.BAT
    Да, кстати, полезная функция, надо будет посмотреть, как туда это внедрить.

    Цитата Сообщение от electroscat Посмотреть сообщение
    индикация процесса копирования в VC.COM
    Это когда очередь дойдёт до VC...

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

    electroscat(19.05.2021)

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

  3. #2

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,388
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Improver Посмотреть сообщение
    Как известно в ОС СР/М в этой области памяти зарезервированы следующие адреса
    0-2 - "горячий" старт ОС,
    3 - байт конфигурации,
    4 - номер текущего диска и области пользователя,
    5-7 - переход на диспетчер функций BDOS,
    38h-3Ah - переход на обработку прерывания по кадровому импульсу (в "Вектор 06Ц"),
    5Ch-7Fh - зарезервированы для БУФ файла,
    80h-0FFh - зарезервированы под область DMA.
    Возможно я поторопился перенести в 0003, но видно, что официально cp/m диапазон 8-37h сам не трогает

    Цитата Сообщение от Improver Посмотреть сообщение
    В РДС добавлены следующие ячейки:
    Проблема, которую я предлагаю попробовать решить - запуск некоторых сипиэмных программ в РДС и этим сипиэмным программам уникальные РДСные ячейки не нужны, даже наоборот, нужно чтобы РДС туда не лез. По тому, что я видел, критичная ячейка 000F, ее очень желательно переместить за пределы 8-37h, но это конечно не обязательно, всегда при большом желании можно хакнуть.

  4. #3

    Регистрация
    06.02.2018
    Адрес
    г. Волгоград
    Сообщений
    1,065
    Спасибо Благодарностей отдано 
    582
    Спасибо Благодарностей получено 
    470
    Поблагодарили
    253 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    критичная ячейка 000F, ее очень желательно переместить за пределы 8-37h
    За пределами всё достаточно плотно, но если нужно сдвинуть всего один байт, то можно попробовать поменять её местами с ячейкой 3Dh, куда пишутся коды ошибок BIOS, они, по крайней мере, возникают не так часто...

  5. #4

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,388
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Improver Посмотреть сообщение
    можно попробовать поменять её местами с ячейкой 3Dh
    Возможно лучше с 3Fh.

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

    Improver(20.05.2021)

  6. #5

    Регистрация
    06.02.2018
    Адрес
    г. Волгоград
    Сообщений
    1,065
    Спасибо Благодарностей отдано 
    582
    Спасибо Благодарностей получено 
    470
    Поблагодарили
    253 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    Lightbulb

    Свежая версия РДС, бинарник с исходниками: rds305.7z

    Второй квазидиск ещё пока не добавил, пофиксил баги:

    • Сделал исправление контрольных сумм секторов под системой на квазидиске, правда, по описанным выше причинам, полностью исправить это невозможно, но количество ошибок по команде TEST (или 8 в МДОС) существенно сократилось.
    • Исправил работу команды HDD -- в предыдущих версиях была ошибка: запуск без параметров с любого диска, кроме А: вызывал сброс на 0 предыдущего диска (т.е. если, например, запустить HDD с диска В:, то вместо вывода конфигурации диску А: будет назначена нулевая дискета).
    • Исправил ошибку переключения на несуществующий диск (например, D: ), которая приводила к зависанию системы на этой ошибке до полного сброса.
    • Дополнил функционал команды TEST, теперь она может исправлять ошибки на квази-диске, для этого нужно к команде добавить ключик R:
      TEST R
      или
      TEST C:R
      Ну и, кроме того, немного ускорил работу программы тестирования КД.
    • Сделал защиту на запись треков 180-195 квазидиска, в которых расположена система, на всякий случай.
    • Дополнил документацию на РДС и приложил её в комплект к системе.
    • Немного улучшил работу системы с командной строкой: теперь по нажатию клавиш "вверх" или "вниз" в командную строку копируются символы предыдущей выполненной команды (если буфер не был очищен). Собственно, этой функции мне серьёзно недоставало во всех версиях Векторовских ДОСов, теперь в случае ошибочного ввода легче исправить и повторить последнюю команду.
      Дальше, думаю, можно будет сделать второй буфер для запоминания командной строки, может даже изменить работу стрелок "влево" и "вправо" для редактирования команд.


    И по поводу освобождения ячейки 15...
    Цитата Сообщение от ivagor Посмотреть сообщение
    критичная ячейка 000F, ее очень желательно переместить за пределы 8-37h
    Это трогать пока не стал... Технически это сделать легко, но если её переместить, то тогда перестанут работать все программы, написанные под РДС. Их немного, но патчить понадобится все, поэтому пока что эта ячейка пусть останется на месте.

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

    electroscat(04.06.2021)

  7. #6

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,388
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Improver Посмотреть сообщение
    если её переместить, то тогда перестанут работать все программы, написанные под РДС.
    Как это проявляется (переставание работать) на примере какой-нибудь программы? Просто после моей хаки 0F я (очень поверхностно) тестировал и программы работали. Или проблема в 3F?

  8. #7

    Регистрация
    06.02.2018
    Адрес
    г. Волгоград
    Сообщений
    1,065
    Спасибо Благодарностей отдано 
    582
    Спасибо Благодарностей получено 
    470
    Поблагодарили
    253 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Как это проявляется (переставание работать) на примере какой-нибудь программы? Просто после моей хаки 0F я (очень поверхностно) тестировал и программы работали. Или проблема в 3F?
    Проблема в 0F, точнее не проблема. Все программы, которые обращаются к функциям РДС, делают это примерно так:
    Код:
    	. . .
    	DI
    	LDA	15
    	OUT	10H
    	. . .	; тут идёт обращение к функциям или ячейкам с параметрами РДС
    	LDA	3CH	;отключение "сегмента" РДС.
    	OUT	10H
    	EI
    	. . .
    Можете глянуть это, например, в исходниках VC3, там эта конструкция встречается в четырёх местах... В общем, их нужно просто все пропатчить под другой адрес, но пока этого не сделано, думаю, можно пока не перемещать -- это сейчас не так критично.

    И ещё, менять лучше всё-таки на 3Dh, а не на 3Fh -- к этой ячейке система обращается гораздо чаще.
    Последний раз редактировалось Improver; 04.06.2021 в 17:39.

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

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

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

Похожие темы

  1. Ответов: 213
    Последнее: 13.06.2022, 14:02
  2. Ответов: 4
    Последнее: 20.08.2007, 16:14
  3. Организация plug-in'нной системы
    от CityAceE в разделе Программирование
    Ответов: 9
    Последнее: 20.09.2005, 12:45
  4. Описание системы команд - давайте централизуем ;)
    от Alex/AT в разделе Программирование
    Ответов: 42
    Последнее: 09.07.2005, 22:34
  5. Инициализация системы
    от breeze в разделе Программирование
    Ответов: 13
    Последнее: 24.03.2005, 10:03

Ваши права

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