Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Никита123
Зарегистрирован: 20.08.2005 Сообщения: 2 Откуда: Из Москвы
|
Добавлено: Сб Авг 20 2005 17:20 Заголовок сообщения: Assembler |
|
|
Такая проблема: при запуске моей программы (написана на Assemblere под DOS) сбиваются некоторые параметры текстого видео режима, из которого запускается программа, как то: сбивается шрифт, мигает курсор мыши, и может быть ещё чего-то, что я не замечаю. Сама программа работает в текстовом режиме 03h. Что сделать, чтобы все параметры видео режима востанавливались. |
|
Вернуться к началу |
|
|
kolobok0
Зарегистрирован: 22.04.2005 Сообщения: 253 Откуда: Мсква
|
Добавлено: Пн Авг 22 2005 13:01 Заголовок сообщения: Re: Assembler |
|
|
Никита123 писал(а): | .... сбиваются некоторые параметры текстого видео режима, из которого запускается программа, как то: сбивается шрифт, мигает курсор мыши, и может быть ещё чего-то, что я не замечаю.... |
Перед выставлением нового окружения (в том числе и видио) просканировать на ранее установленные значения, запомнить и при выходе из программки - установить...
Если программка - игрушка, то как правило так же изменяют таймер PIT (8253) (тут сложнее - придёться либо лезть с чтение из биоса - правильные даты/время, либо самому вычислять "поправку"). Бывает трогают временные задержки клавиатуры. Так же возможы изменения каналов PPI (8255) или контроллера прерываний 8259. Лучше всё сначало считывать, изменять, а потом восстанавливать на том УРОВНЕ на котором работали.
Например...
Если Вы изменяете режим работы видио карточки на уровне BIOS - то и сканирование нужно производить на уровне биоса.
Если нет возможности прочитать старые установки - то тогда производите стандартный ресет по данному устройству (то что делает биос при запуске компа), либо выставляете официальное значение "по умолчанию".
с уважением
(круглый) |
|
Вернуться к началу |
|
|
Никита123
Зарегистрирован: 20.08.2005 Сообщения: 2 Откуда: Из Москвы
|
Добавлено: Вт Авг 30 2005 11:03 Заголовок сообщения: Но это не решает проблему!!! |
|
|
Здравствуйте, круглый!
Спасибо вам за ответ на мой вопрос. Я даже не подозревал о том что надо что-то делать с таймером (моя программа действительно игра). Но, к сожалению, ваше письмо всё-таки не решило проблему. Мне необходима точная информация о том, как и что откуда считывать и куда записывать, соответственно.
Расскажу более подробно о своей проблеме. Программе нужен режим 80x25 символов, причём она может работать как в цветном, так и чёрно-белом режиме (07h). Но ведь может быть установлено и 80x43 символа, а Windows вообще позволяет регулировать количество столбцов и строк с точностью до единицы (например, в FAR manager'е). И при запуске из этого менеджера в, допустим, режиме 90x30 моя программа выводиться криво. Программе не обязательно устанавливать режим, если предыдущая использует один из режимов 02h, 03h или 07h. И у меня вопрос - как изменить количество столбцов и строк на экране, запомнив предварительно текущие их значения, учитывая, что программа может работать на MDA адаптере, где не поддерживаются функции EGA и VGA адаптеров. До этого я пользовался простой установкой режима, но из-за неё всё сбивалось (шрифт, курсор мыши и т.д.). Очень прошу вас написать, как конкретно решить проблему на IBM PC-совместимом компьютере.
P.S.
Ещё хочу спросить у вас совета как у, как мне показалось опытного разработчика. Стоит ли программе в текстовой строке при запуске писать точную дату завершения работы над программой или же желательно ограничиться только годом.
C уважением, Михаил Пушкин |
|
Вернуться к началу |
|
|
kolobok0
Зарегистрирован: 22.04.2005 Сообщения: 253 Откуда: Мсква
|
Добавлено: Вт Авг 30 2005 12:48 Заголовок сообщения: Re: Но это не решает проблему!!! |
|
|
Никита123 писал(а): | .....вопрос - как изменить количество столбцов и строк на экране, запомнив предварительно текущие их значения, учитывая, что программа может работать на MDA адаптере, где не поддерживаются функции EGA и VGA адаптеров. До этого я пользовался простой установкой режима, но из-за неё всё сбивалось (шрифт, курсор мыши и т.д.). Очень прошу вас написать, как конкретно решить проблему на IBM PC-совместимом компьютере.
.....Стоит ли программе в текстовой строке при запуске писать точную дату завершения работы над программой или же желательно ограничиться только годом........... |
Честно говоря под современные форточки с данной задачей не сталкивался - не пришлось. Но думаю следующее....
1) Можно порыть и попытаться пройти "старыми" функциями BIOSа либо DOSа. Почему На этом уровне - потому как не хай он сам разбираеться со всеми инвариантами настроек под виндами.
2) Попытаться отдетектировать винды, и позвать API виндов напрямую, при опросе и восстановлении режимов.
3) Под досом в последнии года (перед "эпохой" виндов) всё шырше наращивался функционал т.н. мультиплексное прерывание 2Fh - думаю нужно на него глянуть повнимательней.
Куда заглянуть - щаз нет под рукой. Основной справочный материал - книги. Катит двухтомник описания Прерываний компьютера IBM PC (кажеться так обзывался) твёрдый переплёт, формат А4, зелёненького цвета. Так же думаю "БСП" Фроловых.
как ссылка на электронную библиотеку (но лучше нормальные книги, по мне)
http://ftp.anyhost.ru/books/www.krf.bsu.by/
с уважением
(круглый)
ЗЫ
Сплошные очепятки - второй раз правлю... |
|
Вернуться к началу |
|
|
|