Техника - молодёжи 1995-04, страница 26

Техника - молодёжи 1995-04, страница 26

Размер памяти компьютера и ее аппаратная организация определяются в первую очередь разрядностью шины адреса центрального процессора (ЦП). Профессиональные ПК, например, типа IBM XT или AT, основаны на процессорах, имеющих 20-, 24- и 32-разрядные шины адреса, что позволяет напрямую адресовать 1 Мб, 16 Мб и 4 Гб соответственно. Сама память при этом, с точки зрения программиста, представляет собой одномерный массив информации, где каждый элемент (ячейка памяти) навсегда привязан к конкретному адресу. Заметим, что в данном случае речь идет о так называемом физическом адресе, непосредственно отображающемся на шине адреса, в то время как пользователь подобных PC обычно имеет дело с адресом логическим, имеющим подчас совершенно иной смысл.

Бытовые компьютеры оснащаются процессорами, как правило, не столь мощными. Разрядность шины адреса таких ЦП (их часто называют микропроцессорами) обычно составляет 16 бит, что дает возможность адресовать напрямую всего 64 Кб. Очевидно, что для увеличения объема памяти таких систем следует менять ее организацию.

Всем известно, как устроена обыкновенная книга. Текст размещается на страницах, каждая из которых имеет свой номер. Одновременно могут быть раскрыты лишь две страницы, тем не менее читатель имеет доступ ко всему содержанию тома - достаточно его перелистать. Аналогично организована так называемая сегментно-страничная память. Она делится на сегменты, выполняющие роль страниц в книге. Каждый такой сегмент получает свой, только ему присущий номер. Адресное пространство ЦП делится, в свою очередь, на страницы (как видимый читателем разворот книги - на страницу слева и страницу справа). Количество таких страниц равно частному от деления объема памяти, доступной процессору напрямую, на размер сегмента. Подключая к страницам необходимые сегменты (для чего обычно используются порты ввода/вывода), то есть "открывая книгу" в нужном месте, пользователь получает возможность работать с памятью, ограниченной лишь общим количеством сегментов, то есть ресурсами машины.

Такую организацию памяти имеет и популярный среди читателей "ТМ" "Энтерпрайз-128", основанный на микропроцессоре Z80, имеющем 16-битную шину адреса. Память этого компьютера поделена на 256 сегментов объемом 16 Кб каждый (максимально возможный размер памяти составляет, следовательно, 256*16=4096 Кб, то есть 4 Мб), число же страниц равно соответственно 64/16=4.

По своему назначению сегменты распределяется следующим образом:

0..1 - внутреннее ПЗУ;

2..3 - зарезервированы для внутреннего ПЗУ;

4. .7 - ПЗУ картриджа;

8..247 свободны для расширения ПЗУ или ОЗУ;

248..251 - базовое ОЗУ, в составе которого сегменты 252..255 отведены под видеоОЗУ.

Эта область памяти названа так потому, что, помимо микропроцессора Z80, используется также видеопроцессором NICK. Аппаратно она представляет собой обыкновенное ОЗУ, выводы адреса и данных которого мультиплексированы на две магистрали, одна из которых связана с общей схемой памяти, а другая - с шинами адреса и данных NICK, который по отношению к Z80 имеет приоритет доступа, то есть при одновременном запросе видеопамяти со стороны Z80 и NICK предпочтение отдается последнему, а ЦП переходит в состояние ожидания. Именно поэтому быстродействие "Эн-терпрайза" при работе с видеопамятью заметно снижается.

Поясним принципы программирования видеопроцессора NICK.

Его главной особенностью является способность организовать изображение, одновременно представленное многими видеорежимами. Для этого все пространство экрана поделено по вертикали на так называемые макростроки (МС), размеры которых определяет пользователь. Каждая такая МС может иметь только один видеорежим, также задаваемый пользователем. Данные, определяющие все макростроки, хранятся в видеопамяти в виде

Н

Е

L

Александр ГУСЕВ

ПАМЯТЬКАК КНИГА. С КАРТИНКАМИ

таблицы - в порядке расположения последних на экране (то есть сначала программируется МС, первая сверху, затем вторая и т.д.). В конце таблицы с помощью МС с особым видеорежимом программируются кадровый синхроимпульс, прерывание для Z80 от источника 3 и сигнал завершения кадра для NICK. Все указатели адресов NICK определены только для видеопамяти, то есть адрес 0000Н соответствует нулевому адресу сегмента 252, a FFFFH -адресу 3FFFH сегмента 255. Указатель на таблицу параметров макрострок выравнен по числу 16, то есть его биты 0..3 всегда равны 0, биты 4..11 записываются в порт W82H, а биты 12.. 15 - в порт W83H (старшие 4 разряда этого порта должны быть установлены). Цвет бордюра (из 256 возможных) записывается в порт W81Н.

Параметры каждой МС в таблице определяются 16 байтами.

Байт Мнемоника Назначение

0 SC Ноль минус число линий сканирова

ния (размер по вертикали) данной МС, например, F8H для 8 линий

1 MB Видеорежим

2 LM Левое поле и видеорежим

3 RM Правое поле и видеорежим, совмест

но с байтом 2 определяет размер и расположение МС по горизонтали 4. .5 LD1 Указатель на данные (см. таблицу ниже) 6. .7 LD2 То же

8.. 15 COL Цвета 0..7 палитры данной МС (цвета 8.. 15 вычисляются, игнорируя выборку по палитре; старшие 5 бит такого цвета записываются в младшие разряды порта W80H)

БАЙТ 1 (видеорежима) имеет следующий формат: Биты Назначение

7 =1 - генерация сигнала прерывания от источника 3 в начале МС. 6. .5 Определяют цветовой режим (увеличение количества цветов происходит за счет пропорционального снижения разрешения по горизонтали): =00-2 цвета, формат байта изображения: 7-6-5..0 =01 - 4 цвета, формат: 7,3-6,2-5,1-4,0 =10-16 цветов, формат: 7,3,5,1-6,2,4,0 Цвет, определяемый комбинацией соответствующих битов байта изображения, выбирается из палитры данной МС

=11 - 256 цветов; цвет непосредственно определяется байтом изображения (как байты 8.. 15 в параметрах МС), при этом яркость точки RGB-триады на экране определяется следующим образом:

RED - КРАСНЫЙ = Ь0*4/7+ЬЗ*2/7+Ь6* 1 /7 GREEN - ЗЕЛЕНЫЙ = Ы*4/7+Ь4*2/7+Ь7*1/7 BLUE - СИНИЙ = Ь2*2/3+Ь5*1/3

4 =0 - каждая линия сканирования повторяет режим всей МС

=1 - МС используется как единое целое. Например, в случае режима атрибутивной графики атрибут в первом случае будет иметь вид прямоугольника 1x8, а во втором (при 9 линиях сканирования)- 9x8, соответственно изменится и количество необходимой атрибутивной информации. 3..1 определяет режим экрана (см. табл.

ниже)

0 =1 - сигнал окончания кадра для NICK

БАЙТ 2: 7

5..0

БАЙТЗ: 7

6

5..0

ме используются цвета 4 и 5 вместо 0 и 1. Поле экрана, с которого начинается данная МС слева.

=1 - если выбран двухцветовой текстовый режим, то символы с кодами выше 80Н будут иметь цвет 3 на фоне 2 вместо 1 и 0.

=1 - то же, но для символов, в кодах которых установлен бит 6, номера цвета палитры увеличиваются на 4. Поле экрана, на котором заканчивается данная МС справа. Совместно с битами 5..0 байта 2 в режиме генерации кадрового синхроимпульса, определяет его длительность.

Таблица видеорежимов

Биты 3..1 Режим LD1 LD2

байта 1

000 Генерация кадрового синхроимпульса

001 Графика HIRES Указатель

на массив графической информации

010 Атрибутивная Указатель Указатель графика на атрибуты на графику

011 ТЕХГ-256 Указатель Указатель

на символы

100 TEXT-128 Тоже

101 ТЕХГ-64 Тоже

110 Не используется

111 Графика LORES Аналогично 001

на знакогенератор Тоже Тоже

=1 - если старший бит байта изображения =1, то в двухцветовом режиме используются цвета 2 и 3 вместо 0 и 1. На экране этот бит всегда снят. =1 - если младший бит байта изображения =1, то в двухцветовом режи-

Здесь HIRES и LORES - сокращения словосочетаний HIGH и LOW RESOLUTION, а число после TEXT обозначает количество символов знакогенератора. Младшие четыре бита в байте атрибута изображения (в режиме атрибутивной графики) определяют палитровый номер цвета чернил, старшие - бумаги.

В заключение предлагается программа, позволяющая произвольно устанавливать цвета палитры всех МС. В ней используется второй режим прерываний Z80. Сразу после ее запуска следует одновременно нажать клавиши ALT и HOLD, а затем HOLD для установки палитры, предлагаемой текущей прикладной программой (что также может быть полезно в дальнейшем). После инсталляции исходную программу на Бейсике можно удалить. Режим установки включается одновременным нажатием ALT и ENTER, а возврат осуществляется клавишей STOP. Перемещение по МС и изменение цвета внутри режима установки осуществляются встроенным джойстиком.

100 ALLOCATE 223

110 CODE l=HEX$("01,3E,F5,3A,38,00,FE,F5, 28,04,F1 ,C3,38,00,AF,D3,82,3E,F4,D3, 83,ED,73,D0,3E,31,FF,3D,C5,D5,E5,DB, B1,47,DB,B2,4F,C5,3E,FD,D3,B1,3E,FF, D3,B2,3A,F3,BF,F6,07,D3,B5,DB,B5,E6, 90,01,08,00,11,00,40,2A,F4,BF") 120 CODE =HEX$("ED,B0,B7,0E,08,20,06,ED, B0,0E,08,18,04,EB,09,EB,09,23,CB,46, 2B,28,E9,ED,B0,DB,B5,E6,C0,28,3B,C1, 78,D3,B1,79,D3,B2,E1 ,D1 ,C1 ,ED,7B,D0, 3E,C3,39,00") 130 CODE P=HEX$("1F,38,0D,23,7D,E6,07,C0, 23,CB,46,2B,28,15,2B,C9,1F,38,02,34, C9,1F,38,0D,7D,E6,07,2B,C0,ED,42,CB, 74,CO,23,09,C9,1F, 1F, D8,35,C9,0E,24, 2A,F6,BF,09,EB,21,08,40,DB,B5,1 F,0E, 40,10,FE,0D,20,FB,30,AF,0E,08,CD") &WORD$( 15871 + P-1) 140 CODE =HEX$("7D,E6,07,F6,30,12,7E,C6, 38,77,0E,40,10,FE,0D,20,FB,D6,38,77, 18,D9")

150 CODE S=HEX$("01 ")&WORD$(S-l)&HEX$ ("11 ,FF,3D,21")&WORD$(I)&HEX$("ED,BO, 3E,3D,ED,47,ED,5E,C9") 160 CALL USR(S,0) ■

ТЕХНИКА-МОЛОДЕЖИ 45 9 5

24