Открой свой мир программирования и    
цифровых технологий
Управление видеодисплеем
Автор lisa   
05.07.2011 г.
Оглавление
Управление видеодисплеем
Несколько слов о курсоре
Непосредственное управление аппаратными средствами

Вообще говоря, управление экраном дисплея, как и большинство других операций с устройствами компьютера, можно выполнить четырьмя способами:

  • Используя службы языка программирования (например, предложение SCREEN в Бейсике).
  • Используя службы DOS (см. гл. 16 и 17)
  • Используя видеослужбы ROM BIOS (см. гл. 9).
  • Впрямую управляя аппаратными средствами через обращение к памяти или к портам ввода/вывода.

Видеослужбы, предоставляемые в ваше распоряжение языками программирования, DOS и ROM BIOS, автоматически помещают выводимые на экран данные в видеобуфер, при этом службы разных, типов предлагают различные уровни управления. Службы ROM BIOS особенно эффективны, так как обеспечивают почти все функции, необходимые для генерации экранного вывода, управления курсо­ром и манипуляции экранной информацией. (Все видеослужбы в полной мере описаны в гл. 9.) Для достижения максимальной степени свободы в управлении экраном вы можете, минуя программные средства, впрямую помещать данные в видеобуфер, если, конечно, вы считаете, что на это есть вес­кая причина.

Однако, прежде чем окончательно выбрать непосредственный способ вывода данных на экран, вам следует знать, что данный способ вступает в конфликт с работой многооконных систем или более сложных многозадачных операционных оболочек. Тем не менее много серьезных программ для се­мейства компьютеров PC генерируют непосредственный вывод на экран дисплея — настолько много, что этот метод фактически стал стандартным и общепринятым способом формирования вывода на экран. Поэтому, даже если с точки зрения долговечности программ, вероятно, неразумно помещать выводимые данные непосредственно в видеобуфер, все,похоже,так делают.

По существу, вы не можете совместно использовать программы, непосредственно записывающие информацию в память дисплея, и многооконные системы, так как две такие программы будут посто­янно конкурировать за управление одной и той же областью памяти и затирать данные друг друга. Однако так как достаточно много программ в настоящее время генерируют непосредственный вывод данных на экран, то многозадачные операционные системы типа OS/2 идут на все ухищрения, что­бы разрешить функционирование программам, впрямую записывающим данные в видеопамять. Сис­темы, подобные OS/2, осуществляют это посредством простого хранения отдельной копии видеопа­мяти программы; когда программа выполняется, то эта копия заносится в буфер дисплея, а когда программа приостанавливает свою работу, то создается новая копия буфера дисплея. Данный прием позволяет OS/2 осуществлять запуск программ, которые впрямую работают с памятью дисплея, одна­ко это дается большой ценой: во-первых, увеличиваются время выполнения и объем памяти; во-вто­рых, программа не может быть запущена в фоновом режиме одновременно с выполнением других программ и в-третьих, информация, выводимая на экран, не может быть организована в окна, т. е. не может быть перемещена или изменена в размере.

Здесь программисты сталкиваются с противоречием: с одной стороны, непосредственный вывод имеет преимущество в скорости и эффективности, однако, с другой стороны, использование ROM BIOS или служб языка высокого уровня дает преимущество в достижении большей гибкости при адаптации многооконных систем, новых аппаратных видеосредств и т.п. Наилучшим решением в данной ситуации будет использование обоих методов.



Последнее обновление ( 05.07.2011 г. )
 
« Пред.   След. »
Скачать книги по программированию