logo
ZX-Review-1992-01-12

Другие приемы управления позицией и цветом печати.

В "Спектруме" есть возможность задействовать некоторые процедуры ПЗУ и управлять системными переменными для того, чтобы достигать тек же эффектов, которые дает применение управляющих кодов. Рассмотрим эти приемы.

PRINT AT B,C (где B и C содержимое одноименных регистров процессора) может быть выполнено вызовом процедуры АТ_B_C, находящейся по адресу 0A9BH (2715).

PRINT TAB A (где A содержимое аккумулятора) выполнимо вызовом процедуры ТАВ_А (0AC3H=2755).

Управляющий код 06 (COMMA_CONTROL) эмулируется вызовом PO_COMMA (0A5FH=2655).

Эти три приема действуют не только на канал "S", но и на канал "K", т.е. с их помощью можно печатать информацию и в INPUT строке.

У Вас есть также достаточно простой способ управлять цветовыми атрибутами INK, PAPER, BRIGHT, FLASH. Все, что для этого требуется внести изменения в системную переменную ATTR_T (5C8FH = 23695), отвечающую за статус временных атрибутов экрана, эта системная переменная имеет следующую раскладку:

Биты 0...2 цвет INK (от 0 до 7)

Биты 3...5 PAPER (от 0 до 7)

Бит 6 статус BRIGHT (0 или 1)

Бит 7 статус FLASH (0 или 1)

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

128*F + 64*B + 8*P + 1, где:

F статус FLASH:

В статус BRIGHT;

P номер цвета PAPER;

I номер цвета INK.

Если же Вы хотите, чтобы какие то цветовые атрибута были транспарантными, системной переменной ATTR_T Вам уже недостаточно и надо воспользоваться системной переменной MASK_T (5С90Н = 23696). Ее раскладка точно та же, что и у ATTR_T. Биты, соответствующие атрибуту, который Вы хотите сделать транспарантным, надо включить.

Итак, рассмотрев, каким образом из машинного кода выполняется печать графики низкого разрешения, мы переходим к графике высокого разрешения, но для этого надо сначала хорошо разобраться со структурой экрана и, главное, понять, как раскладка экрана связана с организацией экранной памяти. Отсюда мы сделаем шаг к наиболее рациональным приемам по изменению экранных форм из машинного кода.