КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Сопроцессор pAPU
Джойстики.
Нажатие на клавиши джойстиков не вызывает в приставке никаких событий. Опрос джойстиков чисто программный, его частота должна выбираться программистом, исходя из необходимой точности и скорости реакции пользователя на события системы. Естественно, что очень частый опрос может замедлить работу системы, да и не стоит забывать, что джойстик это механическое устройство, а пользователь не может работать со скоростью ЭВМ (пусть даже такой как NES). И так – как было сказано выше, для опроса состояния джойстиков используются два порта из адресного пространства CPU - $4016 и $4017. Алгоритм следующий: сначала необходимо «зафиксировать» состояние кнопок в сдвиговом регистре джойстиков (обоих сразу, если оба подключены). Для этого формируется строб, «защелкивающий» этот регистр – т.е. по адресу $4016 младший бит сначала устанавливается в единицу а затем в ноль (строб). Далее можно прочесть состояние кнопок джойстика на момент «защелкивания». Информация считывается в последовательном коде (из сдвигового регистра джойстика по синхросигналу CPU). Младший бит порта $4016 – первый джойстик (Порт A), порта $4017 – второй джойстик (Порт B). Информация считывается в следующей последовательности:
1 = A 9 = Ignored 17 = +--+ 2 = B 10 = Ignored 18 = +-- Идентификатор устройства 3 = SELECT 11 = Ignored 19 = | 4 = START 12 = Ignored 20 = +--+ 5 = UP 13 = Ignored 21 = 0 6 = DOWN 14 = Ignored 22 = 0 7 = LEFT 15 = Ignored 23 = 0 8 = RIGHT 16 = Ignored 24 = 0
Нажатой кнопке соответствует единица, не нажатой – ноль.
Ок.
Приложение №1. Система команд 6502.
Рассмотрим систему команд архитектуры 6502. В Денди используется именно эта модель, за исключением блока десятичной арифметики. Процессор оперирует целыми восьмиразрядными числами. Содержит 6 программно-доступных регистров. Из них 5 – восьмиразрядных, и 1 – шестнадцатиразрядный программный счетчик.
· A – регистр - аккумулятор. Как и большинство «простых» архитектур – 6502 является «аккумуляторной», то есть во всех, или почти во всех, операциях явно или неявно участвует аккумулятор. · PC – программный счетчик. Единственный 16-ти разрядный регистр – указатель выполняемой команды (классически). · S – регистр - указатель вершины стека (первой свободной ячейки). Стек находится в пространстве адресов 0100h – 01FFh и «растёт» от старшего к младшему. · P – регистр флагов. o P[0] - “C” – “ Carry” – флаг переноса из старшего разряда (классически). o P[1] - “Z” – “Zero” – признак нулевого результата (классически). o P[2] - “I” – “Interrupt” – флаг маскирования прерывания аппаратного прерывания на линии IRQ – варьируется командами SEI/CLI. o P[3] - “D” – “Decimal” – флаг режима десятичной арифметики. Так как в Денди этот режим отсутствует, то этот флаг не используется процессором, может использоваться программистом. Варьируется командами SED/CLD. o P[4] - “B” – “Break” – флаг программного прерывания (команда BRK). o P[5] - “1” o P[6] - “V” – “” – флаг переноса в знаковый разряд (из 6-ого в 7-ой - классически). o P[7] - “N” – “” – флаг знака результата операции – дублирует седьмой разряд (классически). · X, Y – регистры индексной адресации. Напомним, что система команд процессора оперирует или с перечисленными выше регистрами, или с адресным пространством памяти (64кб) – все устройства, управляемые процессором, должны отображаться своими регистрами на память. И так – о способах адресации памяти.
ABS - прямая, указывается полный 16-разрядный адрес операнда: ABS, X - индексированная по X, указывается базовый 16-разрядный адрес, к которому прибавляется смещение из регистра X; ABS, Y - индексированная по Y, указывается базовый 16-разрядный адрес, к которому прибавляется смещение из регистра Y. АСС - аккумуляторная, операнд в регистре A процессора. IMM - непосредственная, 8-разрядный операнд расположен сразу за кодом команды (в мнемонической записи перед непосредственным операндом ставится символ «#»). IMPL - неявная, операнды не указываются – жесткая логика работы инструкции. IND - косвенная, задается адрес ячейки памяти, в которой хранится адрес операнда: IND, X – индексно-косвенная, указывается 8-разрядный адрес в нулевой странице, к которому прибавляется содержимое регистра X, после чего из ячейки памяти с вычисленным адресом извлекается полный 16-разрядный адрес операнда; IND, Y - косвенно-индексная, в нулевой странице указывается 8-разрядный адрес, после чего из заданной ячейки памяти считывается 16-разрядный базовый адрес, к которому прибавляется содержимое регистра Y, и из ячейки с вычисленным адресом извлекается операнд; REL - относительная, в команде указывается 8-разрядное смещение относительно содержимого счетчика команд PC; ZP - адресация нулевой страницы, в команде задается 8-разрядный адрес, определяющий ячейку памяти нулевой страницы, где хранится операнд; ZP, X - индексированная по X адресация нулевой страницы, указывается 8-разрядный базовый адрес в нулевой странице, к которому прибавляется содержимое регистра X, и из ячейки памяти с вычисленным адресом извлекается операнд; ZP, Y - индексированная по Y адресация нулевой страницы, в нулевой странице указывается 8-разрядный базовый адрес, к которому прибавляется содержимое регистра Y, и из ячейки памяти с вычисленным адресом извлекается операнд.
Ниже приведем саму систему команд (Всего 56 мнемоник инструкций).
Условные обозначения: а16 - 16-разрядный адрес a16h - старший байт 16-разрядного адреса а16l - младший байт 16-разрядного адреса а8 - 8-разрядный адрес в нулевой странице d8 - непосредственный 8-разрядный операнд i8 - 8-разрядное смещение в диапазоне от -128 до 127
Также приведем матрицу системы команд (красным цветом отмечены недокументированные инструкции –в базовой архитектуре 6502 они отсутствуют, но контроллером 6561 поддерживаются).
╔════════╤════════╤════════╤════════╤════════╤════════╤════════╤════════╤════════╗ ║76543210│xxx000xx│xxx010xx│xxx100xx│xxx110xx│xxx001xx│xxx011xx│xxx101xx│xxx111xx║ ╟────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────╢ ║000xxx00│BRK IMM │PHP │BPL REL │CLC │DOP ZP │TOP ABS │DOP ZPX │TOP ABX ║ ║001xxx00│JSR ABS │PLP │BMI REL │SEC │BIT ZP │BIT ABS │DOP ZPX │TOP ABX ║ ║010xxx00│RTI │PHA │BVC REL │CLI │DOP ZP │JMP ABS │DOP ZPX │TOP ABX ║ ║011xxx00│RTS │PLA │BVS REL │SEI │DOP ZP │JMP IND │DOP ZPX │TOP ABX ║ ║100xxx00│DOP IMM │DEY │BCC REL │TYA │STY ZP │STY ABS │STY ZPX │SYA ABX ║ ║101xxx00│LDY IMM │TAY │BCS REL │CLV │LDY ZP │LDY ABS │LDY ZPX │LDY ABX ║ ║110xxx00│CPY IMM │INY │BNE REL │CLD │CPY ZP │CPY ABS │DOP ZPX │TOP ABX ║ ║111xxx00│CPX IMM │INX │BEQ REL │SED │CPX ZP │CPX ABS │DOP ZPX │TOP ABX ║ ║000xxx01│ORA NDX │ORA IMM │ORA NDY │ORA ABY │ORA ZP │ORA ABS │ORA ZPX │ORA ABX ║ ║001xxx01│AND NDX │AND IMM │AND NDY │AND ABY │AND ZP │AND ABS │AND ZPX │AND ABX ║ ║010xxx01│EOR NDX │EOR IMM │EOR NDY │EOR ABY │EOR ZP │EOR ABS │EOR ZPX │EOR ABX ║ ║011xxx01│ADC NDX │ADC IMM │ADC NDY │ADC ABY │ADC ZP │ADC ABS │ADC ZPX │ADC ABX ║ ║100xxx01│STA NDX │DOP IMM │STA NDY │STA ABY │STA ZP │STA ABS │STA ZPX │STA ABX ║ ║101xxx01│LDA NDX │LDA IMM │LDA NDY │LDA ABY │LDA ZP │LDA ABS │LDA ZPX │LDA ABX ║ ║110xxx01│CMP NDX │CMP IMM │CMP NDY │CMP ABY │CMP ZP │CMP ABS │CMP ZPX │CMP ABX ║ ║111xxx01│SBC NDX │SBC IMM │SBC NDY │SBC ABY │SBC ZP │SBC ABS │SBC ZPX │SBC ABX ║ ║000xxx10│KIL │ASL A │KIL │NOP │ASL ZP │ASL ABS │ASL ZPX │ASL ABX ║ ║001xxx10│KIL │ROL A │KIL │NOP │ROL ZP │ROL ABS │ROL ZPX │ROL ABX ║ ║010xxx10│KIL │LSR A │KIL │NOP │LSR ZP │LSR ABS │LSR ZPX │LSR ABX ║ ║011xxx10│KIL │ROR A │KIL │NOP │ROR ZP │ROR ABS │ROR ZPX │ROR ABX ║ ║100xxx10│DOP IMM │TXA │KIL │TXS │STX ZP │STX ABS │STX ZPY │SXA ABY ║ ║101xxx10│LDX IMM │TAX │KIL │TSX │LDX ZP │LDX ABS │LDX ZPY │LDX ABY ║ ║110xxx10│DOP IMM │DEX │KIL │NOP │DEC ZP │DEC ABS │DEC ZPX │DEC ABX ║ ║111xxx10│DOP IMM │NOP │KIL │NOP │INC ZP │INC ABS │INC ZPX │INC ABX ║ ║000xxx11│SLO NDX │AAC IMM │SLO NDY │SLO ABY │SLO ZP │SLO ABS │SLO ZPX │SLO ABX ║ ║001xxx11│RLA NDX │AAC IMM │RLA NDY │RLA ABY │RLA ZP │RLA ABS │RLA ZPX │RLA ABX ║ ║010xxx11│SRE NDX │ASR IMM │SRE NDY │SRE ABY │SRE ZP │SRE ABS │SRE ZPX │SRE ABX ║ ║011xxx11│RRA NDX │ARR IMM │RRA NDY │RRA ABY │RRA ZP │RRA ABS │RRA ZPX │RRA ABX ║ ║100xxx11│AAX NDX │XAA IMM │AXA NDY │XAS ABY │AAX ZP │AAX ABS │AAX ZPY │AXA ABY ║ ║101xxx11│LAX NDX │ATX IMM │LAX NDY │LAR ABY │LAX ZP │LAX ABS │LAX ZPY │LAX ABY ║ ║110xxx11│DCP NDX │AXS IMM │DCP NDY │DCP ABY │DCP ZP │DCP ABS │DCP ZPX │DCP ABX ║ ║111xxx11│ISC NDX │SBC IMM │ISC NDY │ISC ABY │ISC ZP │ISC ABS │ISC ZPX │ISC ABX ║ ╚════════╧════════╧════════╧════════╧════════╧════════╧════════╧════════╧════════╝
Приложение №2. Палитра в RGB.
В палитре Денди содержится 64 ячейки (некоторые содержат одинаковые цвета). Соответствие цветов формату RGB приведено ниже.
Дата добавления: 2014-11-16; Просмотров: 619; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |