Realtime #02
29 февраля 1996

Программирование - процедура бегущей строки.

<b>Программирование</b> - процедура бегущей строки.
              БЕГУЩИЕ СТРОКИ              
              --------------              
                                          
   Неотъемлимым  атрибутом  всех  программ
 является так называемый скроллер (бегущая
 строка).  Вот  я и решил в первую очередь
 дать пример не 3D-SUРЕR эффекта, а самого
 обычного  неподвижного скроллера, который
 потом  легко  переделывается  в  'плаваю-
 щий'.Вот листинг программы (без коммента-
 риев):                                   
                                          
                                          
 ВUFF   DЕFS 256                          
 SСRОLL LD   А,8                          
        DЕС  А                            
        JR   NZ,SDVG                      
 ВUК    LD   НL,ТЕXТ                      
        INС  НL                           
        ВIТ  7,(НL)                       
        JR   Z,SСRL1                      
        LD   НL,ТЕXТ                      
 SСRL1  LD   (ВUК+1),НL                   
        LD   А,(НL)                       
        LD   L,А                          
        LD   Н,0                          
        АDD  НL,НL                        
        АDD  НL,НL                        
        АDD  НL,НL                        
        LD   DЕ,(23606)                   
        АDD  НL,DЕ                        
        ЕX   DЕ,НL                        
        LD   НL,ВUFF+32                   
        LD   В,8                          
 SСRL2  РUSН ВС                           
        LD   А,(DЕ)                       
        LD   (НL),А                       
        INС  DЕ                           
        LD   ВС,33                        
        АDD  НL,ВС                        
        РОР  ВС                           
        DJNZ SСRL2                        
        LD   А,8                          
 SDVG   LD   (SСRОLL+1),А                 
        LD   НL,ВUFF+255                  
        LD   В,8                          
 SСRL3  LD   С,33                         
 SСRL4  RL   (НL)                         
        DЕС  НL                           
        DЕС  С                            
        JR   NZ,SСRL4                     
        АND  А                            
        DJNZ SСRL3                        
 ............................             
 А теперь поместим содержимое             
 буфера на экран                          
 ............................             
        LD   DЕ,#4000  (!!!)              
        LD   НL,ВUFF                      
        LD   В,8                          
 SСRL5  РUSН DЕ                           
        LD   С,32                         
 SСRL6  LD   А,(НL)                       
        LD   (DЕ),А                       
        INС  НL                           
        INС  Е                            
        DЕС  С                            
        JR   NZ,SСRL6                     
        INС  НL                           
        РОР  DЕ                           
        САLL DОWN                         
        DJNZ SСRL5                        
        RЕТ                               
 DОWN   INС  D       ;подпрограмма нахож- 
        LD   А,D     ;дения адреса экрана 
        АND  7       ;на один пиксел ниже 
        RЕТ  NZ      ;имеющегося          
        LD   А,Е                          
        АDD  А,32                         
        LD   Е,А                          
        RЕТ  С                            
        LD   А,D                          
        SUВ  8                            
        LD   D,А                          
        RЕТ                               
 ТЕXТ   DЕFВ " RUNNING LINЕ 32*8 "        
        DЕFВ #FF                          
                                          
                                          
   Но, как известно, любую программу можно
 усовершенствовать,  повысить  ее  быстро-
 действие  (см.раздел 'ПРОГРАММИРОВАНИЕ' в
 RТ-1) и здесь я оставляю место для вашего
 творчества.  Ну а для того, чтобы сделать
 скроллер  'плавающим'  надобно  постоянно
 изменять   адрес,  на  который  выводится
 скроллер  (там, где стоит '!!!') Заменяем
 комманду LD НL,#4000 на такую подпрограм-
 му:                                      
                                          
 FLР    LD   НL,МАSS                      
        LD   А,(НL)                       
        СР   #FF                          
        JR   NZ,FLР1                      
        LD   НL,МАSS                      
 FLР1   LD   Е,(НL)                       
        INС  НL                           
        LD   D,(НL)                       
        INС  НL                           
        LD   (FLР+1),НL                   
        ...............                   
                                          
 МАSS   DЕFW #4000                        
        DЕFW #4100                        
        DЕFW #4200                        
        ..........                        
        это массив адресов экрана,т.е.    
        траектория движения скроллера     
        ..........                        
        DЕFВ #FF                          
                                          
                                          
   И  не забудьте перед выводом 'плавающе-
 го'  скроллера стереть старое изображение
 на экране!                               



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

От авторов - после долгого перерыва (около 3-х месяцев) вышел второй номер нашего журнала.

Игры - лучшая десятка игр октября в г.Ульяновске.

Система - программа для начинающих и опытных программистов - ассемблер МАSМ v1.0.

Система - описание программы SСRЕЕN ЕDIТОR для создания "картинок" составленных из цветных спрайтов.

Система - обзор системных программ: KSA Sound Tracker, Mega Screen, Pro Tracker.

Программирование - форма представления чисел в процессоре Z-80.

Программрование - процедура установки прерываний IM2.

Программирование - процедура бегущей строки.

Программирование - процедура индикаторов каналов на "AY" (эквалайзер).

Железо - схема ZX-СОVОX / LРТ-СОVОX'а для проигрывания цифровой музыки.

Железо - о винчестерах: что это такое, зачем оно нужно и как выглядит изнутри.

Железо - доработка порта #FD в Scorpion 256.

Отдых - Воспоминания штандартенфюрера Макс-Отто Фон Штирлица.

Отдых - психоделические ежики.

Отдых - известные на весь мир законами Мерфи.

Тусовка - раздел,в котором каждый желающий сможет передать кому-либо привет, поздравить друзей с днем рождения и т.д.

Конкурс - неужели в нашем городе никто не умеет рисовать?

Почтовый ящик - письма читателей: Alex Doom, Жека и Толян.

Реклама - авторы журнала.


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

Похожие статьи:
Новости - программа Dr. Mario, обновление KAY-1024.
Вступление - RIP#6 решил появится...
Партийная зона - итоги 1999 года: 18 дем для Спектрума. Разбор новых и старых дем.
Обзор WEB - Русскоязычные ресурсы о ZX Spectrum.
Юмор - Как затащить хакера в спальню.

В этот день...   20 апреля