Программирование на Ассемблере
Такая на первый
взгляд странная форма адресации используется для доступа к большинству
внешних регистров Amiga. Посмотрим, какая информация содержится в регистрах $BFECxx. Нажмите клавишу
и выберите \"Parameter-Display-HEX-Dump\" (в системе SEKA наберите
\"q $bfec00\" и нажмите сразу после ). Вы увидите, что
содержимое регистра $BFEC01 изменилось и стало равно $37. $BFEC01 - это
регистр статуса специальных клавиш. Следующая таблица показывает влияние
клавиш на его содержимое: левый Shift $3F
правый Shift $3D
Ctrl $39
Alt $37
левая Amiga $33
правая Amiga $31 Вы можете использовать этот регистр для проверки нажатия указанных клавиш,
например: skeys = $bfec01 ... cmp.b #$37,skeys ;клавиша Alt нажата?
beq function ;да! вызвать function
cmp.b #$31,skeys ;а правая Amiga?
beq function2 ;да! вызвать function2 ... ;и так далее... 5.2. Работа с таймером. Если Вам требуется узнать, сколько времени прошло между двумя событиями,
используйте встроенный таймер, который обеспечивает максимальную точность и
работает независимо от процессора (на самом деле Amiga имеет несколько
таймеров, но здесь мы рассмотрим только один из них - 24-битный CIA-A TOD
таймер). Таймеры (или счетчики) - это специальные устройства, которые периодически
уменьшают или увеличивают значения своеих регистров. Рассматриваемый нами
таймер входит в состав CIA (Complex Interface Adapter - набор чипов,
обеспечивающих ввод/вывод и другие интерфейсные функции) и работает со
скоростью 60 герц (или 50 в режиме PAL). Это означает, что значение его
регистра увеличивается на единицу 60 раз в секунду.
Регистр нашего таймера разбит на три байта, которые имеют адреса $BFF801,
$BFF901 и $BFFA01. В связи с этим его значение не может быть прочитано
одной командой MOVE.L.
|