в общем у Абеля: Code (Text): B10MODE PROC NEAR SUB AH,AH ;в оригинале -MOV AH,00H - запрос на установку ; графического режима MOV AL,12H ;режим 12h - см. внизу INT 10H ; вызов обработчика прерывания MOV AH,0BH ; запросить изменение палитры SUB BH,BH ; в оригинале - MOV BH,00H - фон MOV BL,7 ; серый цвет (фона) INT 10H ; вызов обработчика прерывания RET B10MODE ENDP весь листинг не привожу за ненадобностью в общем намертво все виснет после того как очищаем АН, и посылаем в AL 12H. вызывается обработчик прерывания (в дебаг смотрел) -- и появляется полноэкранный черный экран (сорри за каламбур), и все виснет намертво. в безопасном режиме программа едет чуть дальше -- вначале появляется черный экран, потом черный экран становится серым. и все также зависает. в чем может быть дело ?
как тока написал пост -- созрела мысль запустить в ДОСБОКСе. http://www.dosbox.com/information.php?page=0
да, в досбоксе программа таки завелась собственно вопросы тогда отпадают -- просто хотелось бы узнать, отчего сие? от несовместимости нонешних адаптеров с VGA ? драйвера не пускают, как гриться?
Загрузи дос с флешки.... Или если дискета была нужна досбоксу, то есть программы для делания "виртуальных" дисководов
Guru_of_Zen Запросто, если видяха новая, то есть DX10 или DX11. Была тема на форуме, кто-то на эти грабли наступал. Даже, кажется, в текстовом режиме.
Windows эмулирует видео-карту для DOS приложений. Не может же он дать прямой доступ к аппаратуре. Однако эмуляция далеко не полная.
KIV ну выходит как вседга -- в венде реализация корявая и куцая, в сторонней программе (досбох) -- полная и прямая ?
Да. Правда в винде и не ставили задачу обеспечить полную эмуляцию. По крайней мере в новых версиях. Вот в 95 эмуляция была очень даже хорошая - и с графическими режимами и т. п. А вот одно из обновлений хрюши вообще специально портила эмулятор винды (хорошо, что я обновления винды отключил у себя). В висте или семёрке (не помню точно) - вообще убрали эмулятор. Так что кривая реализация не случайность, а злой умысел MS
KIV У мя ощущение, что в 95-й вообще вместо эмуляции все сразу перекидывалось на железо. Например, работали старые досовские проги с COM-портами напрямую. В NT - уже болт, да это и правильно, ИМХО. Даже в хрю-64. Которая, впрочем, скорее 2к3, чем хрю. Ну... это из серии - каждому хоть раз в жизни хочется написать ОС, компилятор, дебаггер... и эмулятор, наверное Можно-то оно можно, теоретически... только, ИМХО эмуляция VGA будет не самой гемморойной частью. Тут проблема - придется эмулировать кучу всего - int 21 + int 10 + int 16 + int 13 + по мелочам. А если учесть, что многих стандартный сервис не устраивал и они норовили все через in/out... В конце-концов таки получится досбокс. У которого, кстати, частенько проблемы со звуком (у меня, по крайней мере, может, конечно, это и лечится...)
KIV В винде эта эмуляция вообще нечно с чем-то. К примеру посмотрите файлы bios1.rom и bios4.rom из папки System32 (для XP). Они вообще просто проецируются по нужным адресам для dos программ. x64 теперь просто не дружит с vm86. Поэтому и смысла создавать на них эмулятор для запуска 16-битных приложений нету.
господа, а еще такой вопрос -- вот допустим написал программу (тоже по графической части). вроде по коду все корректно, ошибки быть не может (99%) но в виндоус ХР и ДОСБох программа работает по-разному. в чем дело в данном случае? в кривой и неполной эмуляции в обеих средах или как ?
Guru_of_Zen По поводу первоначального вопроса. У меня все работает. Может быть дело в чем-то другом? Попробуйте простой код с переключением видео-режима. Code (Text): MOV AH, 00H MOV AL, 12H INT 10H MOV AH, 0BH MOV BH, 00H MOV BL, 01H ; Поменял цвет, чтобы увидеть текст INT 10H MOV AH, 09H MOV DX, 120H INT 21H MOV AH, 08H INT 21H MOV AH, 00H MOV AL, 03H INT 10H RETN DB "PRIVET!$" По поводу последнего вопроса. Такой вопрос надо начинать с ошибки. Поэтому надо сначала локализовать ошибку. Ustus Просто, мысль блуждала около следующих слов: допустим система эмулировала работу с видео, а затем эту эмуляцию убрали. Может быть вернуть её обратно?
skomarov попробую. трудно локализовать -- в ДЕБАГе че-то не идет, а по поведению программы в двух средах тоже не локализуешь -- ибо разное поведение. по сорцам тоже никак не встегнусь. сюда выкладывать не хочу -- ибо хочу еще сам голову поломать и докопаться-таки до истины, да и программа строк на 150 с процедурами и прочими (без)условными переходами -- чтоб понять что она делает читающему придется потратить времени немало, ну нафих людей отвлекать помаленьку можно, а сразу "НА-КО ДЯДЯ СДЕЛАЙ" -- это не, нафих.
skomarov Пес его знает. По-моему просто плюнули, потому как по приличному сделать не получается. XP x64, повторюсь, ваще не хочет 16-е приложения запускать. В любом случае под мало-мальски годным эмулятором будет лучше, чем под сомнительной поддержкой XP. Кстати, попробуй такой вариант - запускаешь консоль, разворачиваешь на весь экран, запускаешь приложение. У меня так получалось некоторые VGA-апп запускать. Некоторые не получалось. Но может, в новых сервиспаках это пофиксили. Давно уже таким не интересовался.
Guru_of_Zen Согласен. Тоже не понимаю, когда просят помочь с кодом. Другое дело, когда просят, где прочитать. Должно быть желание исследовать, расширять кругозор. Ustus Согласен. К тому же, сейчас эмуляторов достаточно. Может быть поэтому и убрали поддержку? Переложили поддержку на плечи третьих фирм (разработчиков эмуляторов). Система стала более современной.