)s64W@(-8\ж▄ ∙ ┤Tрjr10i.lj *c33E(s72W <рр└└└АААА°°°°°*c34E(s38W T<<8xxxpppр8р8*c35E(s136Wи└<└<└<└<└8АxА?  ■?  ■?  ■?  ■ЁЁЁЁрррр   °   °   °   °└<└<└<А8АxАxАx*c36E(s130W&X└Ё ° Ёь`ММММШ╪°°№ А?└7└3р1р!рaрa└ c└8gАА  ?■°└└ААААА*c37E(s148W !ФpрpЁр°р<<└p<Аpррр<р88Ё8pЁЁЁср?┴└ААрЁ8°x<<Ёp<рp└р└рАрр8Ё8ЁЁ<рx?└p*c38E(s100Wpр?рр°ЁЁЁЁxx№№■<xxЮЁ╝Ё°Ё°ЁЁЁр°р№Ё Ё■°?°xр|*c39E(s22W08p`└А*c40E(s92W &80xЁрр└А><<xxx°ЁЁЁЁЁЁЁЁЁЁЁЁЁxxx<<*c41E(s92W &8└└ррЁЁЁxxxxxxxxxxxxx°ЁЁЁЁрр└└АА<xЁ`*c42E(s36W @aАс└є└??є└с└aА*c43E(s76WXЁЁЁЁЁЁЁЁ  Ё  Ё  Ё  ЁЁЁЁЁЁЁЁЁ*c44E(s27W (<<8xppррр*c45E(s24W @ ° ° ° °*c46E(s21W,°°°°°*c47E(s124W$`pЁЁрр└└АА<<xxЁЁрр└└АА<<xpЁрр*c48E(s106W\? └ рсЁ└ЁАЁxxx>x>x>x>Ё|Ё|Ё|Ё|Ё|Ё°р°р°р°└°└°└|А|А~?■№Ё*c49E(s72W X└└└А?ААўАчА╟<<<<<xxx*c50E(s103WX└р Ё Ёр°└°xxxpЁЁр└└А<xЁр└А └? └ А  *c51E(s106WX■ А └└ррррр└└А № А└ррррр└└А└Ё~ № °?└*c52E(s100WX`рррр└└└?└{└s└уА├А├АЗАА8 р  р  └  А*c53E(s103WX°° Ёрр└└ААр№■?АА└└└└└АААА>р№ ° Ё?А*c54E(s103WX└А><xЁр└АА°■? ~А|Аx└°└Ё└Ё└Ё└ЁАЁАЁ°|>№Ё└*c55E(s100WX ° Ё рр└└А<xxЁрр└└А<8xЁ*c56E(s106WX  └ р р├ЁЁЁЁЁррЗ└ А   А?└|└xрЁрЁрЁрЁрЁр°└№└ А ?■°*c57E(s103WX№  А└└<└<рxрxрxрx└x└x└|А>А?  ■|xЁрр└А>|°*c58E(s34W8>>>>>°°°°°*c59E(s66W 4ААААА<<8xppррр*c60E(s112WМ8°°Ё└ №?Ё А■° └ └°■ А?Ё№ └Ё°°8*c61E(s52W X  Ё  Ё  Ё  Ё  Ё  Ё*c62E(s112WМр° └Ё■ Ар№  └°° └ №р А■Ё└ °р*c63E(s74WDЁ°№|<<|°°Ё└А><<>?°°°°°*c64E(s211W"#'Ф№? А  рЁЁ└|8АxЁ└p№a└p■с└р ррр>ррр<└ррx└ррx└ррЁАррЁАррЁАррЁ└рЁ└рЁ└рЁАр°р р Юp?ч№pГЁxx<└xЁ°  р  └■*c65E(s128WИ0px°°°№№╝><|xЁА  А  А  └└└А└└рр<р|ЁxЁ*c66E(s100Wd └ Ё °°|<<<<x°Ё └ А? р<Ё<Ё<x<x|xxxxЁxЁxрxр  └  А №*c67E(s136Wt№?   └  р№рр└└А>>|xxxЁЁЁЁЁЁ°xx|>?└■ № ЁА*c68E(s128Wx └ ° № ■?АА└└└└└└└<└<└<└<А<А|xx>x|x° Ё  р  А №*c69E(s100W\ № № № Ё р? р<<<<|xxxxx  └  └  А*c70E(s100WX № № № р р? р<<<<|xxxxxЁЁЁ*c71E(s136WМ№ А р  Ё№°рЁщих битовый образ экрана в памяти (карту) памяти. В связи с этим обстоятельством имеет смысл рассмотреть принципы построения этого образа. Описываемый здесь образ экрана в памяти применим как к монохромному, так и к цветному графическрому адаптерам, работающим в тесктовом режиме. Графические режимы будут рассмотрены в следующей главе с учетом особенностей хранения изображений в памяти (Более подробные сведения о различных режимах работы цветного графического адаптера и некоторые интересные возможности описаны в разделе 8.11.). Поскольку дисплейные адаптеры используют специальную двухвходовую память, не следует удивляться тому, что она размещается особым образом. Физически память дисплея размещается на схемной плате и плате расширения адаптера. Схемная плата содержит также микросхему контроллера дисплея и все вспомогательные элетронные схемы. Эта плата, подобно другим платам для IBM/PC, вставляется в один из дополнительных разъемов, предназначенных для поключения вспомогательного оборудования. Несмотря на то, что память дисплея физически размещается на плате контроллера дисплея, логически она ничем не отличается от обычной памяти в том смысле, что допускает считывание и запись информации путем обращения по адресу. Дисплеям двух различных типов отводятся различные участки памяти (об этом уже говорилось при обсуждении основ использования памяти персонального компьютера в главе 3), поэтому они могут быть одновременно подключены к одному компьютеру. Монохромному дисплею отводится область памяти, начиная с шестнадцатеричного адреса B000, а цветному графическому - с адреса B800. Читателю, знакомому с Бейсиком, напомним, что доступ к памяти осуществляется с помощью операторов PEEK и POKE после того, как установлен нужный указатель сегмента 10 DEF SEG = &HB000 (память монохромного дисплея) 20 DEF SEG = &HB800 (память цветного графического дисплея) После приведенных кратких сведений о принципах работы дисплея с хранимым образом экрана в памяти имеет смысл еще раз обратиться к диаграмме на рис. 8.1. Процесс отображения содержимого экрана в память начинается с определения позиций отдельных символов экрана. Каждой позиции экрана соответствует два байта памяти. Совместно эти два байта задают собственно объект подлежащий, отображению на экране и то, как его следует отобразить. Первый из двух байтов (имеющий четный адрес) специфицирует собственно объект (т.е. "что" отображается на экране). Это шестнадцатеричный код символа ASCII. Второй байт (имеющий нечетный адрес) специфицирует режим отображения первого байта (т.е. "как" символ отображается на экране). Это так называемый байт-атрибутов. В случае цветного графического адаптера байт-атрибутов управляет цветом. В случае монохромного адаптера байт-атрибутов управляет яркостью и подчеркиванием символа; это своего рода монохромные эквиваленты цвета. Кроме того байт-атрибутов устанавливает режим мерцания символа (для адаптеров обоих типов). Детальное описание байта-атрибутов приводится в разделах 8.5 и 8.6. Первой позиции экрана (верхний левый угол соответствует таким образом два байта в памяти дисплея со смещением 0. Следующей позиции (смещенной на одно знакоместо вправо) соответствуют два байта памяти со смещением 2, Так продолжается до конца первой строки экрана дисплея. Для монохромного дисплея, а также для цветного графического дисплея, работающего в 80-ти позиционном режиме последнему символу строки соответствует пара байтов со смещением 158 (т.е. 79х2). Для цветного графического дисплея, работающего в 40- позиционном режиме, последней позиции первой строки соответствует пара байтов памяти со смещением 78 (т.е. 39х2). При переходе к новой строке позиции экрана продолжают отображаться парой смежных байтов таким образом, что первой позиции следующей строки соответствует пара байтов, расположенных непосредственно вслед за байтами последней позиции предыдущей строки. Область памяти используется без промежутков, т.е. какие-либо пробеловы между концом одной строки и началом другой строки - отсутствуют. Разумеется, речь идет о физических промежутках, поскольку в логическом плане вполне естественно говорить о вычислении местоположения границы между строками. Все сказанное выше распространяется как на 80-ти позиционный, так и на 40-позиционнный режимы. Поэтому при переходе из одного режима в другой должна измениться структура расположения в памяти позиций и строк. Монохромный и цветной графический дисплеи в 80-ти позиционном режиме требуют 4000 байтов: 80 позиций х 2 байта х 25 строк. Цветной графический адаптер в 40- позиционном режиме требует вдвое меньшей памяти, т.е. порядка 2000 байт. Следствием такой схемы хранения образа экрана в памяти является то, что отображаемые символы могут располагаться в любом другом месте памяти. А это, в свою очередь, создает неудобства при перемещении сообщений в память дисплея. Сообщения или любые другие строки отображаемых данных не могут быть перемещены по месту назначения за один шаг, если форма их хранения в программах не предполагает наличия байтов-атрибутов. Сообщение, таким образом, должно быть представлено в виде чередующейся последовательности содержательных и атрибутивных байтов. Поскольку большая часть данных выводятся на экран в виде строк символов с одними и теми же атрибутами, то возникает потребность в специальных программах перемещения данных в нужную область памяти, которые бы попутно дополняли их нужными атрибутами. Листинг 8.2 содержит тексты некоторых служебных программ на Паскале, реализующих эти функции; в параграфе 8.7. этот вопрос рассмотрен более детально. Поскольку в памяти, отведенной дисплею, отсутствуют физические границы между строками, то могут быть автоматически перенесены в следующие строки, путем простого использования очередных адресов. Это довольно эффективный способ решения проблемы переноса сообщений с минимальными затратами. В тех случаях, когда важно фиксировать факт достижения сообщением конца строки, следует предусматривать в программах проверку и обработку этого условия. Для использования монохромного адаптера требуется 4000 байт памяти. Это приблизительно соответствует 4К (4096). Лишние 96 байтов не используются и остаются свободными. Цветной графический адаптер требует значительно большего объема памяти, а именно, 16К. Это объясняется большими потребностями памяти. Объем памяти, используемой цветным графическим адаптером, составляет 16К байт. Такой значительный объем памяти определяется потребностями графических режимов, детально описываемых в следующей главе. Персональный компьютер использует излишки памяти (когда эта память реально не используется в графических режимах) путем организации (в текстовом режиме) набора копий кадров экрана. Эти копии принято называть страницами. В следующем параграфе мы рассмотрим принципы организации и функционирования страничного механизма. 8.4. Страничный механизм цветного графическоно дисплея Материалы настоящего параграфа в первую очередь относятся к компьютерам IBM/PC, снабженным цветным графическим адаптером. Однако, по мере изложения станет ясно, что эта концепция может быть распространена и на систему с монохромным адаптером. Поэтому, если читателя интересуют только системы второго класса (либо универсальные системы) данный параграф, несомненно, представляет интерес. В отличие от монохромного адаптера, объем памяти которого в точности соответствует размеру заполненного кадра дисплея, цветной графический адаптер располагает памятью гораздо большего объема, чем это требуется для работы в текстовом режиме. Это объясняется тем, что для работы в графическом режиме требуются значительные ресурсы памяти. Фирма IBM пошла по пути реализации страничного механизма работы с кадрами изображения. Страница представляет собой образ (копию) содержимого экрана дисплея в памяти компьютера. В 80-ти позиционном текстовом режиме цветной графический адаптер требует памяти в 4 раза (а в 40 - позиционном текстовом режиме в 8 раз ) меньше фактически имеющейся. Поэтому память этого адаптера может хранить либо 4, либо 8 страниц. Любая страница изображения представляет собой полную копию содержимого экрана дисплея, включающую байты данных, байты-атрибутов и построчно-логическое разбиение символов. Работая в 80-ти позиционном режиме, цветной графический адаптер может хранить четыре полных копии одного кадра экрана монохромного адаптера. При работе в 40 - позиционном режиме число таких кадров увеличивается до 8; при этом каждый кадр обладает вдвое меньшей информационной емкостью. Информация, хранящаяся в каждой из четырех или восьми страниц, может в любой момент времени быть отображена на экране. Остальные страницы в это время, подобно актерам, ожидающим выхода на сцену, ждут своей очереди. Получив команду, дисплейный адаптер переключается с одной страницы на другую, таким образом мгновенно обновляя содержимое экрана. Прользовательская программа может формировать данные, подлежащие отображению на дисплее, путем обычной записи по соответствующему адресу, либо путем использования функций обслуживания BIOS, позволяющих оперировать с нужной страницей. После того, как актуализация данных закончена, сформированный в памяти образ экрана может быть мгновенно отображен на дисплее путем переключения адаптером активной страницы. Такой подход делает программу более оперативной, поскольку пользователь не ощущает трудоемкого процесса формирования образа экрана - он видит лишь быстрое появление результата. Возможности программ в части использования страничной техники представляют довольно интересное явление. Если программа использует несколько стандартных форматов для представления информации, то она может сформировать каждый формат только один раз и сохранить его в страничной памяти дисплея. В случае возникновения потребности перехода от одного формата к другому программа может, сохранив текущую страницу на экране, форматировать данные другой страницы и завершив этот процесс, переключить адаптер дисплея на новую страницу. Такого рода техника работы с памятью дисплея создает впечатление, что программа обладает более высокой производительностью, поскольку изображение появляется мгновенно. В выигрыше оказывается и пользователь программы, получая более стабильное изображение на экране дисплея. Поскольку мелкие изменения не допускаются, то надежность человеко-машинного интерфейса повышается - в этом случае нет необходимости каждый раз отыскивать на экране места возможных изменений и проверять все ли на месте. Еще одна потенциальная сфера использования страничной техники при работе с дисплеем состоит в более совершенной передаче динамических изображений.