
- •I. Оргвопросы
- •II. Проблемы системы образования россии
- •III. Проблемы мировой компьютерной индустрии
- •IV. Правила работы с литературой
- •V. Имитационное моделирование
- •Рисование эллипсов
- •Установка видеорежима
- •Выбор окна видеопамяти
- •Установка логической длины строки развертки
- •Организация видеопамяти
- •Пограммирование таблицы цветов в 256-цветном режиме
- •Классификация моделей
- •Достоинства и недостатки имитационного моделирования
Рисование эллипсов
Современные микропроцессоры, используемые в персональных ЭВМ, включают в себя быстродействующие блоки для вычислений с плавающей запятой. Это позволяет рассчитывать любые эллипсы.
Однако ненаклонные эллипсы можно достаточно быстро прорисовывать, используя только целочисленную арифметику. Ненаклонный эллипс описывается уравнением:
x2 y2
--- + --- = 1.
A2 B2
следовательно
|\\\\\\\\
/ B2x2
y = / B2 - ---- ,
? A2
где полученное значение Y необходимо округлить до ближайшего целого.
Так как эллипс имеет две оси симметрии, то вычисления достаточно выполнить для оного из четырех квадрантов. Сначала рисуется дуга, где основной осью является X, затем - дуга, где основной осью является Y. Затем полученные точки отображаются на три остальных октанта.
Точка, в которой ось перестает быть основной, вычисляется по формуле
B2x2 = A2y2 .
ПРЯМАЯ РАБОТА С ПАМЯТЬЮ В СОВРЕМЕННЫХ ВИДЕОКОНТРОЛЛЕРАХ
Вообще говоря, изобилие видеорежимов является результатом несогласованной и непродуманной технической и маркетинговой политики фирм-изготовителей аппаратуры. Фирмы просто не смогли вовремя выработать общий стандарт, что и породило хаос.
Само по себе использование данных ПЗУ видеокарты для программирования режимов работы той же карты является грубым техническим просчетом - гораздо рациональнее было бы возложить процедуру переключения режимов не на основной процессор, а на собственный процессор видеокарты.
Кроме того, со времени разработки первых видеокарт для IBM PC в конструкции видеокарт сохранилось множество нелепых анахронизмов, что делает невозможным прямое управление работой видеокарты на аппаратном уровне.
Для обеспечения нормальной работы видеокарты в режимах SVGA встроенная в карту микросхема видео-BIOS должна соответствовать стандарту VESA v2.0 или более позднему. Ранние версии стандарта VESA не поддерживали режимы True Color и прямую адресацию видеопамяти.
Установка видеорежима
Видеорежим устанавливается вызовом прерывания 10h с номером функции 4F02h. В регистр BX нужно код видеорежима:
100h - 640x400 256 цв.,
101h - 640x480 256 цв.,
103h - 800x600 256 цв.,
105h - 1024x768 256 цв.,
107h - 1280x1024 256 цв.,
112h - 640x480 TrueColor,
115h - 800x600 TrueColor,
118h - 1024x768 TrueColor,
11Bh - 1280x1024 TrueColor.
Например, нужно установить режим 640x480 TrueColor:
mov AX,4F02h
mov BX,112h
int 10h
Выбор окна видеопамяти
Вследствие ошибки, допущенной еще при разработке процессора Intel 8086, вся размещенная на видеокарте память оказалась разделенной на кусочки размером по 64 кб - так называемые "окна" или "страницы". Процессору в каждый момент времени доступно только одно такое окно, и для доступа к другому требуется вызвать программу видео-BIOS, переключающую окна (на аппаратном уровне такое переключение выполнить сложно - видеокарты разных фирм используют для этого регистры с разными номерами).
Например, в режиме TrueColor 640x480 при четырехбайтовой кодировке цвета точки одному кадру соответствует 1228800 байт памяти, или 18,75 страниц по 64 кб.
Переключение номера активного (доступного процессору) окна выполняется вызовом прерывания 10h с номером функции 4F05h. В регистр BH нужно записать 0, в регистр DX - номер окна. Само окно будет размещено по адресу A0000h.
Например, нужно обратиться к данным в девятом окне:
mov AX,A000h
mov ES,AX
mov AX,4F05h
mov BH,0
mov DX,9
int 10h