ZX Pilot #38
31 мая 2000

Coding - пишем простую бегущую строку.

<b>Coding</b> - пишем простую бегущую строку.
                C O D I N G

──────────────────────────────────────────

(C) Z-ZERO


                   Развеять дабы неученья,
               Разбить невежество и тьму -
                 Берем картину мироздания,
             И тупо смотрим, что к чему...

                         Братья Стругацкие
                   "Понедельник начинается
                               в субботу."

                   "...это просто МАРАЗМ!"
                       Z-Zero SYSTEMS inc.

   O-е-ей! Чего это я, спрашивается, умны-
ми фразами стал раскидыватся? Не дай бог к
ночи такое! В прочем умные фразы тем и хо-
роши, что  они  умные... Стоп, стоп, стоп!
Представляю  как (ну, предположим, Sergius
Puzzler) воздевает  руки  к  небу, с моль-
бой... ну, что-нибудь в  стиле: "ОПЯТЬ!!!"
Или  еще  кто-нибудь, но  уже  со словами:
"Етись  ты - провались!!!" Я  их  чудестно
понимаю, но  когда  "свербит" - надо  дать
выход эмоциям, дабы  извилины не  перегре-
лись!
   OOPS! Я совсем забыл, о чем сий раздел!
ПРИСТУПИМ!
   Каждый раз, когда я открываю очередной,
взятый у приятелеля  не знаю  который раз,
номер Ревюхи - я содрогаюсь от ужаса! Зна-
ете, создается впечатление, что ее состав-
лением  занимались либо ребятня из началь-
ной  школы, или  полные маразматики. "Ну и
ладно," - скажет кто-нибудь из матерых co-
der'ов - "для  нас это уже прошедший век".
Ну  для  вас это может быть и прошедший, а
для  вашего  соседа (брата, друга - нужное
выделить) все только начинается, и он тоже
читает эту газету, а  по  сему  не кидайте
тухлые яйца...
   Да простит меня... (кто-нибудь простит)
но поведу я сегодняшний разговор о "строч-
ках - бегульках", а точнее их основах, пр-
инципах, размерах.
   Любые бегущие строчки делятся на четыре
вида:
   - Простейшие с выводом  по знакоместам,
либо роллирующиеся, но  каждая новая буква
появляется с  бухты барахты, или выводится
в невидимое знакоместо.
   - Стандартные  с варьирующимся размером
букв, и способом вывода (scr/attr).
   - Сложные. Могут иметь самые непредска-
зуемые эффекты, такие как sin'усоида, jump
ряд, оконтуривание  собой предметов на эк-
ране (см. мою  версию War In Middle Earth"
ее можно заказать у меня (mouse)), переме-
щение в потоке воды, высыпание  из мешка и
еще многое другое, всего не перебрать.
   - Сверх  сложные. В  этот разряд  можно
включить бегущие строчки, для создания ко-
торых используется бордюр, векторное масш-
табирование букв, создание строчки MuLtIc-
OlOr'ными эффектами.
   Все  выше перечисленное мы рассмотрим в
нашем экскурсе. Для кого-то это станет св-
оего рода учебником, а кто-то в доволь по-
ностальгирует о былом.

                 Простые.

   Это наиболее простой  вид бегущих стро-
чек, и  реализуется он следующим  образом:
программа  печати быводит строчку с адреса
#XXXX, на #YY  букв. Производится задержка
путем HALT'а или  вывода спрайта(ов). Уве-
личивается на  единицу начало текста. Про-
веряется  на его конец, и если да - то ус-
тановить #XXXX на  начало  и перебраться в
начало абзаца. Если  не  конец, то  просто
переход на начало абзаца.
   Или другой вариант, который отличаестся
от предыдущего тем, что выводится  не  вся
строчка а лишь очередная буква, после чего
делается 8 (16, 32, 64...) роллинга. После
этого все по стандартной схеме-проверка на
конец, цикл.
   Прочитав этот  абзац, кое кто из нович-
ков на ASSEMBLER'ном фронте воскликнет:
   - А разве  нельзя воткнуть знакоместо -
невидимку, и на том ограничиться?
   Отвечаю - НЕЛЬЗЯ! Прежде  всего потому,
что это  будет  плохим тоном, а во вторых,
представте, что  вы  выводите  этот бред в
рамочку в центр экрана... б-р-р-р!

               Стандартные.

   Добрались! Вот из-за  этого я и устроил
весь этот сыр-бор. Загляните в любой выпу-
ск ZX-РЕВЮ, и вы найдете  тьму стандартных
строчек, каждая из  которых  претендует на
лаконичность и простоту исполнения, но ве-
зде имеется куча переменных кои надо запо-
лнить, дабы весь этот балаган стал плясать
Теперь поглядите  на их  size'ы и покажите
мне хоть одну  более  или  мене короткую!?
Создается  впечатление, что у  нас  страна
изобретателей,  изобретателей  велосипедов
(шо езжаю - то и  думаю)! "Начало  строчки
указывается в пиксельных координататах..."
Или еще: "Начало  строчки вычисляется...",
а  далее  идет программа на BASIC'е, строк
эдак  на 200. Что  смеетесь, было  и такое
(где - не помню). Это значит для того, да-
бы узнать куда это я приткнул строчку, на-
до  набить здоровенную прогу и часика пол-
тора  прождать, что прога сообщить что-ни-
будь типа: "You  lain  disposet  of sistem
varaibles!" Короче говоря, 107 байт, и ст-
рочка готова...

        ORG #61A8
INIT    LD HL,TXT
        LD (TEKST),HL;Инициализатор текста
INIT2   LD A,#01
        LD (TEKBY),A;Обнуление бита
        RET
SYM     LD HL,(TEKST)
        LD A,(HL)
        CP #FF
        RET Z
        INC HL
        LD (TEKST),HL
        LD L,A
        LD H,#00
        ADD HL,HL
        ADD HL,HL
        ADD HL,HL
        LD DE,FONT-#0100
        ADD HL,DE
        LD (TEKSY),HL;Адрес текущ. символа
        RET
LETER   LD HL,(TEKSY)
        LD DE,#4073;Левый край текста
        LD C,#08;Высота символа (MAX8)
PIP2    RLC (HL)
        PUSH DE
        EX DE,HL
        LD B,#08;Длина строки
PIP1    RL (HL)
        DEC HL
        DJNZ PIP1
        EX DE,HL
        POP DE
        INC HL
        INC D
        DEC C
        XOR A
        OR C
        JR NZ,PIP2
        RET
STEPS   LD A,(TEKBY)
        CP #09;Счетчик битов
        JR NC,NEXT;Выход по концу буквы
STEPSES CALL LETER
        LD A,(TEKBY)
        INC A
        LD (TEKBY),A
        LD B,#02
        HALT
        DJNZ $
        RET
NEXT    CALL SYM;Новая буква
        CALL Z,INIT;Текст кончился
        JR Z,NEXT
        CALL INIT2;Не конец, обнулен. бита
        JR STEPSES
TEKST   DEFW FONT-1;Указатель на #FF байт
TEKSY   DEFW #0000 ;Адрес текущей буквы в
                   ;фонте
TEKBY   DEFB #09;Счетчик битов, при первом
                ;старте 9.
                ;Текстовое сообщение
TXT     DEFM "По-маленьку маразматируем?"
        DEFB #FF
FONT    INCBIN "font";Font, не ПЗУ!

   Для  каждого очередного шага строчки (в
том числе и первого) делаем CALL STEPS.
   В строке "левый край текста", указывае-
тся адрес левого  края строки, с точностью
до знакоместа. В  строке  "длина  строки",
указывается  ее длина  в знакоместах. Все!
Самая простая строчка ползет по вашему эк-
рану, если скорость мала - убрать HALT.
   За сим разрешить расшаркаться.
   To be continued...

                             Alex Merkulow
                              Sewerodwinsk
                       Z-Zero SYSTEMS inc.
                                 03/III-00


                    - Нет, по моему это...
                  - Да маразм это, МАРАЗМ!
                       Z-Zero SYSTEMS inc.
                             with someone.



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

Новости - новости от Ковровских спектрумистов.

Тема - Беседа Justinas'a с SerzhSoft'ом из Шадринска и Firex'ом/Mayhem из Тулы произощедшая на Chaos Construction 2000.

Тема - Беседа с известным художником Fil/Antares произощедшая на Chaos Construction 2000.

Тема - Беседа с одним из организаторов FunTop'98 и редактором газеты Nicron - Wlodek Black'ом из Москвы.

Тема - размышления SIR-X'a о плачевном состоянии дел со спектрумовским софтом.

Imagination - Сумерки богов (по оригинальному замыслу Игоря Богданова).

Железо - описание новой звуковой карточки для спектрума DMA UltraSound Card и сравнение ее с DMA Sound Blaster.

Coding - пишем простую бегущую строку.

Coding - пишем необычную бегущую строку.

О разном - письмом Organism'а о нелегкой судьбе Спектрумистов из глубинке.

Hints - пароли для игр: Tower Pod, Clocks head Cracker.

Реклама - рекалама и обьявления о продаже спектрумовского вареза.

Credits - имена создателей газеты.


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

Похожие статьи:
Система - Описание программ : ZX-ASM3.0, Universal XAS Converter v2.1, Format Utility v2.01, Commander DOS v1.9, Super Catalog v1.12, Text Designer v1.0, The Dizzy Editor v1.0, Digital Studio for Covox, Alfasoft Music Crasher v2.13. Драйвер печати шрифтов , созданных в Mach v2.4.
Мнение - Феномен электронной почты (взгляд и чувства программиста).
Старье - обзор игры: Beamrider.
Реклама - Реклама от Романа Чунина.
Спорт за бугром - Американцы и спорт.

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