Освой компьютер
Занести адрес нужного битплана
в один из адресных регистров можно так: move.l screenhd(PC),A5 ;адрес блока данных экрана
move.l $C0(A5),A5 ;адрес нулевого битплана Напишем фрагмент программы, использующей полученный адрес: move.l screenhd(PC),A5 ;адрес блока данных экрана
move.l $C0(A5),A5 ;адрес нулевого битплана
move #$20,D0 ;счетчик цикла - в D0
loop1:
move #$AAAA,(A5) ;рисуем на экране
add.l #80,A5 ;следующая строка
dbra D0,loop1 ;цикл Программа рисует столбец шириной в 16 точек, заполненный маской $AAAA.
Конечно, практической пользы от этой программы мало, однако она
демонстрирует простоту работы с видео-памятью, связанной с экраном Intuition.
О правомерности прямой работы с видеопамятью рассказано в разделе 9. Как обычно, Вы можете перемещать экраны Intuition, \"захватив\" верхнюю часть
(заголовок) нужного экрана с помощью мыши, однако то же самое можно делать
и программно. Для этого в состав intuition.library входит функция
MoveScreen (смещение -162), которая вызывается с тремя параметрами: в A0 идентификатор экрана, полученный при вызове OpenScreen
в D1 смещение по вертикали (в пикселах)
в D0 смещение по горизонтали (в пикселах), в старых версиях
Intuition - не используется Пример: MoveScreen = -162
...
scrmove: ;* сдвигает экран на D1 пикселов вниз
move.l intbase(PC),A6 ;база intuition.library
move.l screenhd(PC),A0 ;идентификатор экрана
moveq #0,D0
jsr MoveScreen(A6) ;сдвигаем экран
rts
Напишем программу, которая использует джойстик для перемещения своего
экрана (как Вы уже знаете, информация о положении джойстика доступна по
адресу $DFF00C (см.
AMIGA: ПРОГРАММИРОВАНИЕ НА АССЕМБЛЕРЕ.
|