графические режимы в ДОС

Тема в разделе "WASM.BEGINNERS", создана пользователем Guru_of_Zen, 28 июл 2010.

  1. Guru_of_Zen

    Guru_of_Zen Member

    Публикаций:
    0
    Регистрация:
    21 янв 2010
    Сообщения:
    288
    в общем у Абеля:

    Код (Text):
    1. B10MODE PROC    NEAR
    2.         SUB     AH,AH           ;в оригинале -MOV     AH,00H  - запрос на установку ; графического режима
    3.         MOV     AL,12H         ;режим 12h - см. внизу
    4.         INT     10H               ; вызов обработчика прерывания
    5.         MOV     AH,0BH         ;  запросить изменение палитры
    6.         SUB     BH,BH           ; в оригинале - MOV     BH,00H   - фон
    7.         MOV     BL,7         ; серый цвет (фона)
    8.         INT     10H              ; вызов обработчика прерывания
    9.         RET
    10. B10MODE ENDP
    весь листинг не привожу за ненадобностью
    в общем намертво все виснет после того как очищаем АН, и посылаем в AL 12H.
    вызывается обработчик прерывания (в дебаг смотрел) -- и появляется полноэкранный черный экран (сорри за каламбур), и все виснет намертво.

    в безопасном режиме программа едет чуть дальше -- вначале появляется черный экран, потом черный экран становится серым. и все также зависает.

    в чем может быть дело ?
     
  2. Guru_of_Zen

    Guru_of_Zen Member

    Публикаций:
    0
    Регистрация:
    21 янв 2010
    Сообщения:
    288
    как тока написал пост -- созрела мысль запустить в ДОСБОКСе.

    http://www.dosbox.com/information.php?page=0
     
  3. Guru_of_Zen

    Guru_of_Zen Member

    Публикаций:
    0
    Регистрация:
    21 янв 2010
    Сообщения:
    288
    да, в досбоксе программа таки завелась

    [​IMG]

    собственно вопросы тогда отпадают -- просто хотелось бы узнать, отчего сие?

    от несовместимости нонешних адаптеров с VGA ? драйвера не пускают, как гриться?
     
  4. PSR1257

    PSR1257 New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2008
    Сообщения:
    933
    Загрузитесь с дискетки и пустите то же самое в "DOS" - should work fine.
     
  5. Guru_of_Zen

    Guru_of_Zen Member

    Публикаций:
    0
    Регистрация:
    21 янв 2010
    Сообщения:
    288
    нету дискерты в системнике хехе :)
     
  6. maybeZ3N

    maybeZ3N New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2010
    Сообщения:
    80
    Загрузи дос с флешки....

    Или если дискета была нужна досбоксу, то есть программы для делания "виртуальных" дисководов
     
  7. Guru_of_Zen

    Guru_of_Zen Member

    Публикаций:
    0
    Регистрация:
    21 янв 2010
    Сообщения:
    288
    ок , спасибо, попробую
     
  8. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    Guru_of_Zen
    Запросто, если видяха новая, то есть DX10 или DX11. Была тема на форуме, кто-то на эти грабли наступал. Даже, кажется, в текстовом режиме.
     
  9. Guru_of_Zen

    Guru_of_Zen Member

    Публикаций:
    0
    Регистрация:
    21 янв 2010
    Сообщения:
    288
    да видяха-то не шибко новая - радеон х1950, то есть ~4 года уже.
     
  10. KIV

    KIV Member

    Публикаций:
    0
    Регистрация:
    16 июл 2009
    Сообщения:
    231
    Windows эмулирует видео-карту для DOS приложений. Не может же он дать прямой доступ к аппаратуре. Однако эмуляция далеко не полная.
     
  11. Guru_of_Zen

    Guru_of_Zen Member

    Публикаций:
    0
    Регистрация:
    21 янв 2010
    Сообщения:
    288
    KIV
    ну выходит как вседга -- в венде реализация корявая и куцая, в сторонней программе (досбох) -- полная и прямая ?
     
  12. KIV

    KIV Member

    Публикаций:
    0
    Регистрация:
    16 июл 2009
    Сообщения:
    231
    Да. Правда в винде и не ставили задачу обеспечить полную эмуляцию. По крайней мере в новых версиях. Вот в 95 эмуляция была очень даже хорошая - и с графическими режимами и т. п. А вот одно из обновлений хрюши вообще специально портила эмулятор винды (хорошо, что я обновления винды отключил у себя). В висте или семёрке (не помню точно) - вообще убрали эмулятор. Так что кривая реализация не случайность, а злой умысел MS :)
     
  13. skomarov

    skomarov New Member

    Публикаций:
    0
    Регистрация:
    14 май 2008
    Сообщения:
    389
    KIV
    А возможно ли создать свой эмулятор для интегрирования в систему?
     
  14. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    KIV
    У мя ощущение, что в 95-й вообще вместо эмуляции все сразу перекидывалось на железо. Например, работали старые досовские проги с COM-портами напрямую. В NT - уже болт, да это и правильно, ИМХО.

    Даже в хрю-64. Которая, впрочем, скорее 2к3, чем хрю.

    Ну... это из серии - каждому хоть раз в жизни хочется написать ОС, компилятор, дебаггер... и эмулятор, наверное :)
    Можно-то оно можно, теоретически... только, ИМХО эмуляция VGA будет не самой гемморойной частью.
    Тут проблема - придется эмулировать кучу всего - int 21 + int 10 + int 16 + int 13 + по мелочам. А если учесть, что многих стандартный сервис не устраивал и они норовили все через in/out... В конце-концов таки получится досбокс. У которого, кстати, частенько проблемы со звуком (у меня, по крайней мере, может, конечно, это и лечится...)
     
  15. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    KIV
    В винде эта эмуляция вообще нечно с чем-то. К примеру посмотрите файлы bios1.rom и bios4.rom из папки System32 (для XP). Они вообще просто проецируются по нужным адресам для dos программ. x64 теперь просто не дружит с vm86. Поэтому и смысла создавать на них эмулятор для запуска 16-битных приложений нету.
     
  16. Guru_of_Zen

    Guru_of_Zen Member

    Публикаций:
    0
    Регистрация:
    21 янв 2010
    Сообщения:
    288
    господа, а еще такой вопрос -- вот допустим написал программу (тоже по графической части).

    вроде по коду все корректно, ошибки быть не может (99%)

    но в виндоус ХР и ДОСБох программа работает по-разному.

    в чем дело в данном случае?

    в кривой и неполной эмуляции в обеих средах или как ?
     
  17. skomarov

    skomarov New Member

    Публикаций:
    0
    Регистрация:
    14 май 2008
    Сообщения:
    389
    Guru_of_Zen
    По поводу первоначального вопроса. У меня все работает. Может быть дело в чем-то другом? Попробуйте простой код с переключением видео-режима.
    Код (Text):
    1. MOV AH, 00H
    2. MOV AL, 12H
    3. INT 10H
    4.  
    5. MOV AH, 0BH
    6. MOV BH, 00H
    7. MOV BL, 01H ; Поменял цвет, чтобы увидеть текст
    8. INT 10H
    9.  
    10. MOV AH, 09H
    11. MOV DX, 120H
    12. INT 21H
    13.  
    14. MOV AH, 08H
    15. INT 21H
    16.  
    17. MOV AH, 00H
    18. MOV AL, 03H
    19. INT 10H
    20. RETN
    21.  
    22. DB "PRIVET!$"
    По поводу последнего вопроса. Такой вопрос надо начинать с ошибки. Поэтому надо сначала локализовать ошибку.

    Ustus
    Просто, мысль блуждала около следующих слов: допустим система эмулировала работу с видео, а затем эту эмуляцию убрали. Может быть вернуть её обратно? :)
     
  18. Guru_of_Zen

    Guru_of_Zen Member

    Публикаций:
    0
    Регистрация:
    21 янв 2010
    Сообщения:
    288
    skomarov
    попробую.

    трудно локализовать -- в ДЕБАГе че-то не идет, а по поведению программы в двух средах тоже не локализуешь -- ибо разное поведение. по сорцам тоже никак не встегнусь.

    сюда выкладывать не хочу -- ибо хочу еще сам голову поломать и докопаться-таки до истины, да и программа строк на 150 с процедурами и прочими (без)условными переходами -- чтоб понять что она делает читающему придется потратить времени немало, ну нафих людей отвлекать :) помаленьку можно, а сразу "НА-КО ДЯДЯ СДЕЛАЙ" -- это не, нафих.
     
  19. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    skomarov
    Пес его знает. По-моему просто плюнули, потому как по приличному сделать не получается. XP x64, повторюсь, ваще не хочет 16-е приложения запускать. В любом случае под мало-мальски годным эмулятором будет лучше, чем под сомнительной поддержкой XP.

    Кстати, попробуй такой вариант - запускаешь консоль, разворачиваешь на весь экран, запускаешь приложение. У меня так получалось некоторые VGA-апп запускать. Некоторые не получалось. Но может, в новых сервиспаках это пофиксили. Давно уже таким не интересовался.
     
  20. skomarov

    skomarov New Member

    Публикаций:
    0
    Регистрация:
    14 май 2008
    Сообщения:
    389
    Guru_of_Zen
    Согласен. Тоже не понимаю, когда просят помочь с кодом. Другое дело, когда просят, где прочитать. Должно быть желание исследовать, расширять кругозор.

    Ustus
    Согласен. К тому же, сейчас эмуляторов достаточно. Может быть поэтому и убрали поддержку? Переложили поддержку на плечи третьих фирм (разработчиков эмуляторов). Система стала более современной.