Если вы хотите, чтобы ваша программа выполнялась на различных машинах семейства PC и PS/2, необходимо предусмотреть в программе совместимость для разных компьютеров. Так как фирмой IBM созданы различные видеоподсистемы, программисты разработали несколько подходов к решению вопроса о совместимости. Они включают в себя создание:
- устанавливаемых программ;
- самоустанавливающихся программ;
- независимых от аппаратуры программных окружений.
Мы уже упоминали, что большинство поставщиков программного обеспечения поддерживают совместимость за счет распространения программного обеспечения, которое имеет программы дисплейного вывода в виде отдельных устанавливаемых модулей. Прежде чем можно будет использовать такое программное обеспечение, данные программы должны быть скомпанованы с остальными прикладными программами. Это позволяет писать программы, которые в полной мере используют возможности каждой видеоподсистемы не в ущерб совместимости.
Процесс установки может быть достаточно трудоемким как для программиста, который должен написать программу установки, так и для конечного пользователя, который должен установить программы для работы с видеоподсистемой надлежащим образом. Вы можете упростить процесс установки, если ваша прикладная программа будет самоустанавливающейся. Фокус заключается в том, чтобы включить некоторую подпрограмму в вашу программу, которая будет определять, с какой видеоподсистемой та работает. В этом случае программа может настроить экранный вывод с учетом возможностей и ограничений используемого видеооборудования.
Вы можете использовать несколько различных приемов для определения видеоподсистемы. На машинах PS/2 ROM BIOS предоставляет в ваше распоряжение службу, которая сообщает конфигурацию видеооборудования (см. гл.9), однако при работе с семейством компьютеров PC/XT/AT вы должны полагаться на применение нестандартных приемов определения оборудования, которые задокументированы в технических руководствах по аппаратным средствам.
После того как программа определит конфигурацию видеоапаратуры, она сможет обеспечить соответствующий вывод. Например, программа, работающая с монохромным дисплейным адаптером, может использовать только видеорежим с монохромными атрибутами для знаков. Если та же самая программа работает с цветной подсистемой, то она может задействовать атрибуты цвета в текстовых режимах. Если программе нужно выполнить графический вывод, то она может выбрать для этого графический режим с наиболее высокой разрешающей способностью на основе определения используемой видеоподсистемы.
В простейшем случае ваша программа может использовать видеорежим, который был активен в момент ее запуска. Служба 0FH прерывания ROM BIOS ЮН сообщает номер текущего видеорежима. Однако если вы не используете интерфейс к ROM BIOS на языке ассемблера, то можете легко определить видеорежим простым обращением к нижеприведенной программе для проверки статусной переменной ROM BIOS, расположенной по адресу 0040:0049Н, которая содержит номер видеорежима.
Вы можете в своей программе избежать зависимости от имеющегося видеооборудования, если воспользуетесь операционной оболочкой типа GEM фирмы Digital Research или Windows фирмы
Microsoft. Такие оболочки защитят вашу программу от непредвиденных особенностей видеоаппаратуры с помощью ряда надежных, независимых от аппаратуры подпрограмм, обеспечивающих операции ввода/вывода для дисплея. Естественно, возникнет проблема, связанная с тем, что конечный пользователь также должен иметь копию операционной оболочки, способной обеспечить работу вашей программы.
Вне зависимости от выбираемого вами подхода к решению вопроса о совместимости не упускайте при этом из виду несколько основных ее критериев. Нельзя сказать, что они полностью согласуются друг с другом — дает о себе знать внутренняя противоречивость в конструкции персонального компьютера, а также разнообразие используемых форматов отображения информации на дисплее. Тем не менее можно говорить об общих положениях по совместимости, которые мы вкратце опишем.
Во-первых, совместимость повышается при выводе на дисплей только текста. Многие ПК по-прежнему оборудованы монохромными дисплейными адаптерами, которые не могут воспроизводить графику. Если при разработке программы вы стоите перед дилеммой: текст или графика, вам нужно учитывать два фактора. С одной стороны, как уже наглядно продемонстрировали многие программы, вы можете создавать очень эффектные изображения с помощью одних только стандартных текстовых знаков IBM. С другой стороны, все чаще и чаще компьютеры наделяются графическими возможностями. Поэтому в будущем вывод, включающий в себя лишь текст, вероятно, потеряет свою значимость и вы сможете использовать в своих программах графику, не беспокоясь о совместимости.
Во-вторых, чем меньше ваша программа зависит от цвета, тем шире диапазон компьютеров, на которых она сможет работать. Это вовсе не означает, что в целях совместимости вы должны избегать цвета: просто это означает, что для обеспечения максимальной совместимости цвет в программе должен быть не существенной составляющей, а декоративным дополнением. Если программы могут выполняться без цвета, то они будут совместимы с компьютерами, использующими монохромные дисплеи, включая машины PC с монохромным дисплейным адаптером, а также машины Compaq Portable со встроенными монохромными дисплеями.
Короче говоря, вы должны взвесить преимущества, которые дает обеспечение широкой совместимости, с удобством и простотой написания программ для более узкого круга дисплеев. Наш собственный опыт и убеждение подсказывают, что слишком часто программисты ошибаются, ориентируясь на узкий класс дисплеев, тем самым существенно ограничивая круг машин, на которых могли бы использоваться их программы. Будьте осторожны!
|