Переключение в текстовый режим без сервисов ОС(BIOS)

Тема в разделе "WASM.ASSEMBLER", создана пользователем Medstrax, 23 янв 2017.

  1. Medstrax

    Medstrax Забанен

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    673
    Клерк, ты хотел увидеть универсальный код для переключения из графического режима в текстовый с помощью прямого программирования регистров видеоадаптера. Вот, я нашел все-таки старые исходники, причесал их немного и собрал в виде COM-файла, да-да, для DOS))) Только расширение сменить надо.
    Код там линейный и практически тривиальный: сперва переключает в графический режим через int 10h, потом программирует регистры синхронизатора, контроллера CRT, графического контроллера, контроллера атрибутов, загружает фонты в знакогенератор и выводит тестовую строку. Если все ок - в верхнем левом углу экрана будет строка цифр 0-F.
    Если у кого нет возможности запустить код под DOS или хочется потестить именно под виндой/линуксом - придется пилить дров (ну или как-то разрешать I/O в юзермоде). При портировании не забывайте, что приведенный код 16-битный))
    За универсальность конечно не ручаюсь, но на всех протестированных мной видяхах (интелы, нвидиа, радеоны и даже одна встроенная видяха из древнего SiS'овского чипсета) этот код работал корректно.
    Под виндой после переключения в текстовый режим изредка возможно появление артефактов на экране в виде изображения курсора мыши. Я так в свое время и не разобрался почему это случается, да мне это и не нужно было в общем-то. Задача изначально состояла в том, чтобы отлаживать код, в котором просто нельзя пользоваться никакими сервисами ОС, поэтому пришлось изобретать велосипед с переключением в текстовый режим для отладочного вывода на экран.
    И еще. Фонты в коде только для символов 0-F + несколько промежуточных, остальные мне было лень копипастить))
     

    Вложения:

    • SW.txt
      Размер файла:
      1,7 КБ
      Просмотров:
      1.001
  2. _edge

    _edge Well-Known Member

    Публикаций:
    1
    Регистрация:
    29 окт 2004
    Сообщения:
    631
    Адрес:
    Russia
    Такое нужно в виде сорцов в раздел "бабушкин сундук, или работа с видеоадаптером через порты в/в"
    Под досбоксом работает. По крайней мере увидел 0..F. Правда, оно не подразумевает выход из себя обратно в ОС, или не смог подобрать any key для выхода.

    Спасибо.
     
  3. Medstrax

    Medstrax Забанен

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    673
    ))
    Там нет эникея для выхода, тупо hlt в конце, лень же
     
  4. _edge

    _edge Well-Known Member

    Публикаций:
    1
    Регистрация:
    29 окт 2004
    Сообщения:
    631
    Адрес:
    Russia
    Некоторое время назад поковыривал Paratrooper (игра досовская 1984 года), так в то время в играх тоже не был предусмотрен выход. И что характерно, они даже инт21 не используют, только сервисы биос и порты вв/в.