ZX Review #5-6
04 ноября 1997

Этиды - Расчет адреса в файле атрибутов. Программа скроллирования заданного окна на 1 пиксел вправо. Программа очистки заданного окна. Процедура вывода картинки из буфера.

(c) Коновалов Д., г.Тверь

   1. Очень маленькая (15  байт,
57 тактов) процедура расчета ад-
реса в файле атрибутов.  Коорди-
ната Y в регистре E,  X в регис-
тре D.
140.
        LD   A,E
        RRCA
        RRCA
        RRCA
        LD   L,A
        AND  31
        OR   88
        LD   H,A
        LD   A,L
        AND  252
        OR   D
        LD   L,A
2
   2.  А вот программа, скролли-
рующая заданное окно на 1 пиксел
вправо.140.

        ORG  40000

        LD   A,(HGT)
        LD   C,A
        LD   HL,(Y)
START   PUSH HL
        LD   A,L
        AND  7
        RRCA
        RRCA
        RRCA
        ADD  A,H
        LD   H,L
        LD   L,A
        LD   A,H
        AND  #18
        OR   #40
        LD   H,A
        LD   B,8
ST      PUSH HL
        PUSH BC
        LD   A,(LEN)
        LD   B,A
        AND  A
ST1     RR   (HL)
        INC  HL
        DJNZ ST1
        POP  BC
        POP  HL
        INC  H
        DJNZ ST
        POP  HL
        INC  L
        DEC  C
        RET  Z
        JR   START

Y       DEFB 0
X       DEFB 0
LEN     DEFB 10     ;ширина окна
HGT     DEFB 10     ;высота окна
2
   Программа не проверяет, выхо-
дит ли окно за  пределы  экрана.
Чтобы скроллинг происходил на  4
пиксела, нужно внести  следующие
изменения: AND A заменить на XOR
A, RR (HL) заменить на RRD.

   3. Эта программа предназначе-
на для  очистки  заданного  окна
экрана. Делает она  это  следую-
щим образом: одна пиксельная ли-
ния скроллируется вправо, другая
влево, затем снова вправо и т.д.
140.
        ORG  40000

        LD   A,(HGT)
        LD   C,A
        LD   HL,(Y)
START   PUSH HL
        LD   A,L
        RRCA
        RRCA
        RRCA
        ADD  A,H
        LD   H,L
        LD   L,A
        LD   A,H
        AND  #18
        OR   #40
        LD   H,A
        LD   B,4
ST      PUSH BC
        LD   A,(LEN)
        LD   B,A
        AND  A
ST1     RR   (HL)
        INC  HL
        DJNZ ST1
        AND  A
        LD   A,(LEN)
        LD   B,A
        DEC  HL
        INC  H
ST2     RL   (HL)
        DEC  HL
        DJNZ ST2
        INC  HL
        POP  BC
        INC  H
        DJNZ ST
        POP  HL
        INC  L
        DEC  C
        RET  Z
        JR   START

Y       DEFB 0
X       DEFB 0
LEN     DEFB 10
HGT     DEFB 10
2
   Данная процедура  не  очистит
все окно - она делает всего один
проход. Для полной очистки  окна
ее нужно циклически вызывать  из
другой программы.

   4.  И  последняя   процедура.
Она выводит на экран картинку из
буфера по адресу 41000.  Картин-
ка как бы "выезжает"  из  левого
края экрана к правому, после че-
го перебрасываются атрибуты.
140.
        ORG  40000

        LD   B,64
ST      LD   C,192
        LD   DE,16384
        LD   HL,41000
RUN     PUSH BC
        LD   C,2
        XOR  A
WORK    LD   B,32
LOOP    RRD
        INC  HL
        DJNZ LOOP
        EX   DE,HL
        DEC  C
        JR   NZ,WORK
        POP  BC
        OR   A
        DEC  C
        JR   NZ,RUN
        DJNZ ST
        LD   DE,22528
        LD   HL,47144
        LD   BC,768
        LDIR
        RET
2
   О себе: мне 15 лет, увлекаюсь
адвентюрными  и  стратегическими
играми.
   Также Даниэль просит  напеча-
тать  его  адрес  для  любителей
адвентюр:   170004,   г.Тверь-4,
ул.Строителей,   д.8,  корпус 2,
кв.121, Коновалову Даниэлю.

   Прим. ред.:  И вот опять следует напом-
нить об оптимизации программ. В конце про-
грамм  2 и 3  стоит последовательность ко-
манд:

        RET     Z
        JR      START

   Но будет лучше заменить ее на:

        JR      NZ,START
        RET

   В чем же разница?  А в том, что  второй
вариант  работает  быстрее, потому  что  в
первом варианте команда RET Z  выполняется
столько раз, сколько  и  весь  цикл, а  во
втором - один раз.  Конечно, здесь  это не
играет  особой  роли, но представьте себе,
что  цикл  выполняется  не  10, а, скажем,
10000 раз. Тут уже эти 5 тактов выльются в
большие потери времени.

            *   *   *




Другие статьи номера:

Adventure Project - Проектирование и разработака Адвентюрных и RPG игр.

Adventure Project - Русификация адвентюр.

TR-DOS для начинающих - Продолжение.

Авторская разработка - Scorpion 2000 (С.Зонов).

Авторская разработка - Трамплин (С.Веремеенко).

Визитная карточка - новый электронный юмористический журнал "SpectrofUn".

Перекресток драконов - Раскрутка игры Finders Keepers.

Перекресток драконов - Раскрутка игры Knight Tyme.

Перекресток драконов - Раскрутка игры Spellbound.

Перекресток драконов - Раскрутка игры Stormbringer.

Ретро - 40 лучших процедур: Слияние картинок, Вращение символа по часовой стрелке, Инвертирование символов, Изменение атрибута, Закрашивание контура, Построение шаблонов (Дж.Хардман, Э.Хьюзон.).

Советы экспертов - Total Eclipse 2.

Советы экспертов Super League.

Форум-игры - Описание игры Страна Мифов.

Форум-игры - Прохождение Renegade.

Форум-игры - Тонкости торговли в игре Elite

Форум - Изучение и отладка @-файлов с помощью STS 5.1. Особенности отладки программ с помощью монитора STS. Исправление ошибки STS 5.1.

Форум - Компрессия программ.

форум - О сокращении времени форматирования. О записи секторов одновременно с форматированием. Перестроение экрана за одно прерывание.

Форум - Особенности ассемблера ZX ASM 3.0.

Форум - По поводу компилятора бейсика "Blast".

Форум - По поводу релоцируемых программ.

Форум - Программы "Пламя" и "Дракон".

Читатель-читателю - TR-DOS: как не допустить ошибки?

Читатель-читателю - Эффективная работа с дисководом .

Этиды - Расчет адреса в файле атрибутов. Программа скроллирования заданного окна на 1 пиксел вправо. Программа очистки заданного окна. Процедура вывода картинки из буфера.

Этюды - Индикатор каналов музыкального процессора. Процедура очистки экрана. Предложение по стандартизации.

Этюды - Набор из восьми программ "расширения" экрана. Две процедуры проявления экрана.

Этюды - Новые темы для разработок.

Этюды - Программа воспроизведения инструмента от редакторов оцифрованной музыки.

Этюды - Программа обработки @-бейсик файлов.

Этюды - Процедура поворота символа на 90 градусов по часовой стрелке.

Этюды - Процедура поиска текстовых файлов.

Этюды - Экранная процедура "UP HL".


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

Похожие статьи:
Новости - CyberTeam присоединяется к AREAsoft.
Вступление - об авторах, содержание номера.
Наука - Сегодня, мы осваиваем космос, мы строим мега полисы, мы создаем роботов и искусственный интеллект. Но в то же время, что мы знаем о себе? Человек будущего это человек творческий, творчество и шизофрения стоят очень близко друг к другу.

В этот день...   12 декабря