Amiga. Вычислительная техника
Меню сайта
Главная
Amiga
Amiga Corporation
Модельный ряд
История развития
Аппаратная платформа
Операционные системы
Эмуляция
AMIGA # 1
Программирование на Ассемблере
Организация процессоров
Методы защиты информации
Компьютерные новеллы
Боятся ли компьютеры адского пламени?
Виртуальная реальность
Корпоративные сети
Телекоммуникационные сети
Архитектура ЭВМ
ЕС ЭВМ
Рождение ЭВМ
Компьютер
Гарвардская архитектура
Современные высокопроизводительные компьютеры
Дорога в будущее
Vista
Инфоpматика
ЭВМ
Операционные системы
Linux
Windows
Освой компьютер
Макинтош
Набор текста
Поколения
Компьютерная грамотность
Устройство компьютера
Железо
Графика
Звук
Ремонт
Сети
Программирование
Информационные технологии
Криптография
Микроэлектроника
Истории
 
 

Программирование на Ассемблере



Ясно, что компьютер должен постоянно следить за состоянием этих портов,
чтобы своевременно получать сигналы от мыши и вычислять новое положение
указателя. К счастью, этим занимаются custom-чипы, освобождая процессор для
более важной работы.
Итак, Вы можете получить текущее состояние мыши/джойстика из регистров
$DFF00A и $DFF00C (для портов 1 и 2 соответственно). Старшие байты этих
регистров содержат информацию о вертикальном перемещении мыши, а младшие -
о горизонтальном.
Но будьте внимательны - не пытайтесь выводить содержимое этих регистров с
помощью AssemPro, так как это приводит к зависанию компьютера. Выглядит это
довольно занимательно (экран начинает \"мелькать\"), однако выйти из этого
состояния можно только по RESETу, в результате чего вся информация в памяти
компьютера теряется.
Напишем небольшую программу для чтения этих регистров:
;(5.3A) mouse
test: bsr.s run ;тестовая подпрограмма

bra.s test ;\"вечный\" цикл

illegal
joy = $DFF00A
run:

move joy,D6 ;данные порта 1 в D6

move joy+2,D7 ;данные порта 2 в D7

bra.s run ;rts в случае SEKA
end
Если теперь оттранслировать эту программу и запустить в режиме \"Breakable\",
то содержимое регистров D6 и D7 будет периодически обновлятся на экране и
Вы сможете наблюдать за состоянием портов мыши/джойстика.
Передвиньте мышь и Вы увидите, что содержимое регистра D6 изменится. При
горизонтальном движении мыши меняется только младший байт, а при
вертикальном - старший.
Нетрудно убедится, что содержимое порта мыши зависит от направления и
скорости перемещения мыши, однако оно не определяет текущие координаты
указателя (переместите указатель в левый верхний угол и продолжайте двигать
мышь влево - содержимое D6 все равно будет менятся). Модифицируем нашу
программу чтения регистров так, чтобы она выдавала разность предыдущего и
текущего значений:
;(5.3B) ;программа чтения данных мыши
test:

bsr.s run ;тестовая подпрограмма

bra.s test ;\"вечный\" цикл

illegal
joy = $DFF00A
run:

move D7,D6 ;копируем старое содержимое в D6

move joy,D7 ;новое содержимое

sub D7,D6 ;разность в D6

bra.s run ;rts в случае SEKA
end
Запустите эту программу и понаблюдайте за содержимым D6.

 

 

© 2010 Amigo. All Rights Reserved
Создание сайтов ЕкатеринбургШаблоны сайтовПоиск товаров - справочник цен, каталог магазинов, прайс-листыБесплатные шаблоны дизайна компьютерных сайтов
Hosted by uCoz