|
Realtime
#02
29 февраля 1996 |
|
Программирование - процедура бегущей строки.

БЕГУЩИЕ СТРОКИ
--------------
Неотъемлимым атрибутом всех программ
является так называемый скроллер (бегущая
строка). Вот я и решил в первую очередь
дать пример не 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
И не забудьте перед выводом 'плавающе-
го' скроллера стереть старое изображение
на экране!
Другие статьи номера:
Похожие статьи:
В этот день... 13 ноября