ZX-Ревю 1997 №1-2 1997 г.

Этюды - процедура печати 42 символов в строке.


(с) Вячеслав Мишуков, г.Северодвинск, 1996.

Процедура печати 42 символов в строке.

В ZX-РЕВЮ N5/95 на стр. 29 опубликована процедура печати 42 символов в строке (автор Дмитрий Сергеев).

Приведенная процедура обладает недостатком: выключаются пикселы, которые при работе процедуры не должны быть задействованы. Поскольку размер символа по горизонтали б точек, то справа от него в знакоместе 8x8 могут остаться 2,4 или б незанятых пиксельных столбцов, которые выключаются процедурой. Кроме того, если символ полностью по-

Dt^eniP 97/1

ЭТЮДЫ

местился в знакоместе 8x8 (прижат к левому или правому его краю), то следующее знакоместо 8x8 также очищается.

Во всем виновата процедура SCRL, расположенная в строках 137-167. Процедура печати будет работать корректно, если переписать подпрограмму SCRL в соответствии с листингом. Изменения коснулись фрагмента, формирующего изображение символа.

Восемь строк символа помещаются в экранную область памяти таким образом, чтобы изображение справа и слева от него не пострадало. Это достигается последовательным использованием операций XOR, AND, XOR. Такой метод подробно описан в книге ИНФОРКОМА "Элементарная графика" на стр. 94.

Применение операций XOR, AND, OR позволяет заменить отдельные биты в байте А на соответствующие биты байта В. Заменены будут только те биты, которые замаскированы в операции AND нулями.

В измененном варианте подпрограммы, параллельно со сдвигом байта шаблона символа, сдвигается маска для операции AND.

После внесения изменений длина процедуры увеличится. В какой-то степени увеличение объема можно скомпенсировать, удалив в исходном листинге строки 113, 114, 120, 121, 124, 125, 126, раскрыв подпрограмму SCRL. Но время, затрачиваемое на. вывод одного символа все же возрастет, поскольку увеличился главный цикл процедуры.

Листинг подпрограммы

SCRL с внесенными изменениями:

SCRL

SHIFT

LD

А,(ВС)

PUSH

ВС

PUSH

AF

LD

DE,#FF03

XOR

A

LD

C,A

LD

A,(NUM)

LD

B,A

POP

AF

AND

A

RLA

RL

С

SCF

RL

E

RL

D

DJNZ

SHIFT

LD

B.A

LD

A.(HL)

XOR

С

AND

D

XOR

С

LD

(HL),A

INC

HL

LD

A,(HL)

XOR

В

AND

E

XOR

В

LD

(HL),A

DEC

HL

INC

H

POP

ВС

INC

ВС

LD

A,(ST)

DEC

A

LD

(ST),A

JR

NZ.SCRL

LD

A,#08

LD

(ST),A

RET

.....................ZX-PwiO УГ/1-2.....................................................




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Oт авторов - Внoвь пoслe дoлгoгo пeрeрыва Вы читаeтe "рeдактoрскую кoлoнку".
Дискуссия - Рецензия.
Наша анкета - Результаты второй анкеты.
Заначка - недетерминируемая игра VIRUS 2.
Сказочки - Различные смешные истории.

В этот день...   21 ноября