Патч работает, в целом, если учитывать то, что нажимать "ввод+блк" если и нужно будет - то совсем не часто - то это 100% работает.
Эксперимента ради я понажимал "ввод+блк" с пристрастием, и в эмуляторе и на реале, и это дало разные результаты. В эмуляторе мусор на экране я так и не увидел, полосок не было. Изредка мигала "карта памяти" на экране, зеленая на черном фоне, при зеленом цвете шрифта, белая - при белом... примерно раз в двадцать нажатий, но на долю секунды. А вот на реальном векторе "полоски" все же иногда вылезали на экран, так же где то раз в двадцать - тридцать нажатий, так же прокручивались, и исчезали в верху экрана. Причем, на этот раз это были не точки а именно полоски, одна максимум две, в одну строку друг от друга. И так же артифакт "карта памяти" иногда на экране мелькал на доли секунды. Все это крайне не существенно, и в целом не требует внимания, потому как такие действия с системой проводятся достаточно редко, и то в виде однократного нажатия "ввод+блк"...
Благодарю !!!
- - - Добавлено - - -
Доброго времени ! Спасибо за патч!
На сколько я понимаю, это первые строки кода оси ? То есть они должны быть такими 21 03 B6 01 00 C3 00 B6 3E 23 D3 10 E9 ? Я не достаточно еще в коде ориентируюсь, вставил приведенный вами код с адреса 00H и получил в целом не совсем работающюю систему. Загрузка ее из ком. строки системы показывает сразу приглашение системы "A>" и в целом все работает, заголовка в левом верхнем углу "микроДОС 3.1 Р ...." нету, и точки иногда таки выскакивают. А вот записав систему в загрузочную область загрузку не получил... Наверняка я что то не понял, куда нужно этот код встраивать ? Судя по адресам - 000H - 000С... или я ошибаюсь ?
- - - Добавлено - - -
У меня есть вопрос такого содержания. Я делал в своей программе выход в МДОС, алгоритм такой, выключаю КД, для освобождения экранной области копирую все с адреса E000H до FFFFH на адресс 5000H - 7FFFH (адресс установил опытно-наблюдательным путем), счетчик стека ставлю на 4FFFH, копирую код из адресов 0001H, 0002H, 0039H, 0040H в переменные и заменяю адресами старта приложения и обработчика прерывания, и потом при выходе все это возвращаю на место, включаю КД и делаю CALL 0005H с 00H в регистре С. Вчера доработал программу, для работы в РДС - она читает адресс системы из 0006Н, 0007H и дальше считает по этим цифрам сколько и куда копировать, и в соответствии с этим же ставит адресс указателя стека. В итоге - в РДС все отлично, огромное количество свободной памяти, а в других системах обратная реакция, для приложения остается совсем не много. В итоге, написал, чтобы если в 0006Н, 0007Н цифра меньше E000H то как предел принимается E000H. Потому что после отключения КД - c адреса, лежащего в 0006H, 0007H - нули и изредка какой то мусор, типа куски символов из консоли, которые уже были на экране, до адреса E000H, и только с этого адреса находится то, что при утере не дает вернуться систему. Пока во всех системах адресс E000H одинаково актуален, кроме РДС, там гораздо меньше, тем не менее очень интересно, есть ли в микродосе и CP/M универсальное место, где можно получить адресс того куска, который нужно скопировать из ОЗУ для того чтобы освободить экранную область, а потом восстановить работоспособность системы ? Ну или, может есть какие то альтернативные алгоритмы выхода в систему для приложений ?





Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 
