Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Микропроцессор W65C02S в корпусе PDIP-40.

Design Center Western (МЦД) 65C02 микропроцессор является усовершенствованной КМОП - версия популярной NMOS -На 8-битную MOS Technology 6502 . Хотя 65C02 исправил несколько проблем в исходном 6502 и добавил несколько новых инструкций, его основной особенностью было значительно сниженное энергопотребление, примерно в 10-20 раз меньше, чем у NMOS 6502, работающего на той же скорости. [1] Снижение энергопотребления сделало 65C02 полезным в роли портативных компьютеров и микроконтроллерных систем в промышленных условиях. Он использовался в некоторых домашних компьютерах , а также во встроенных приложения, включая имплантированные устройства медицинского назначения.

Разработка началась в 1981 году [a], а образцы были выпущены в начале 1983 года. [B] WDC предоставила лицензию на разработку Synertek , NCR , GTE и Rockwell Semiconductor . В первую очередь Роквелл интересовался рынком встраиваемых систем и попросил добавить несколько новых команд, чтобы помочь в этой роли. Позже они были скопированы обратно в базовую версию, после чего WDC добавила две новые собственные команды для создания W65C02 . Позднее Sanyo также лицензировала дизайн, а Seiko Epson выпустила еще одну модифицированную версию HuC6280 .

Ранние версии использовали 40-контактный DIP-корпус и были доступны в версиях 1, 2 и 4 МГц. Более поздние версии производились в пакетах PLCC и QFP , а также в PDIP, и с гораздо более высокими тактовыми частотами. Текущая версия от WDC, W65C02S-14, имеет полностью статическое ядро ​​и официально работает на частоте до 14 МГц при питании от 5 вольт.

Введение и особенности [ править ]

65C02 - недорогой 8-разрядный микропроцессор общего назначения (8-разрядные регистры и шина данных ) с 16-разрядным счетчиком программ и адресной шиной . Набор регистров небольшой, с одним 8-битным аккумулятором (A), двумя 8-битными индексными регистрами (X и Y), 8-битным регистром состояния (P) и 16-битным программным счетчиком (PC). В дополнение к одному аккумулятору первые 256 байтов ОЗУ, «нулевая страница» ( $0000до $00FF), обеспечивают более быстрый доступ за счет режимов адресации, в которых используется 8-битный адрес памяти вместо 16-битного. стекнаходится в следующих 256 байтах на первой странице (от $ 0100 до $ 01FF) и не может быть перемещен или расширен. Стек растет вниз , указатель стека (S) начинается с $ 01FF и уменьшается по мере роста стека. [2] Он имеет набор инструкций переменной длины , варьирующийся от одного до трех байтов на инструкцию. [1]

Базовая архитектура 65C02 идентична оригинальной 6502 и может рассматриваться как реализация этой конструкции с низким энергопотреблением. На частоте 1 МГц, самой популярной для оригинального 6502, 65C02 требует всего 20 мВт, в то время как исходный использует 450 мВт, что более чем в двадцать раз меньше. [3] Оптимизированное вручную ядро ​​и низкое энергопотребление делают 65C02 хорошо подходящим для маломощных систем на кристалле (SoC). [1]

Модель описания оборудования Verilog доступна для разработки ядра W65C02S в специализированной интегральной схеме (ASIC) или программируемой вентильной матрице (FPGA). [4] Как это принято в полупроводниковой промышленности, WDC предлагает систему разработки, которая включает в себя плату разработчика , внутрисхемный эмулятор (ICE) и систему разработки программного обеспечения. [5]

W65C02S-14 является версией производства в 2020 г. , а также доступен в ПКР , PLCC и QFP пакеты. Максимальная официально поддерживаемая тактовая частота Ø2 (первичная) составляет 14  МГц при работе от 5 вольт, на что указывает суффикс номера детали –14 (любители разработали системы домашнего пивоварения 65C02, которые работают быстрее, чем официальный рейтинг). Обозначение «S» указывает на то, что деталь имеет полностью статический сердечник , что позволяет замедлить или полностью остановить Ø2 в высоком или низком состоянии без потери данных. [6] Типичные микропроцессоры, не реализованные в CMOS, имеют динамические ядра и потеряют содержимое своих внутренних регистров (и, следовательно, откажутся), если они не будут постоянно синхронизироваться со скоростью между некоторыми минимальными и максимальными указанными значениями.

Общие логические особенности [ править ]

  • 8-битная шина данных
  • 16-битная адресная шина (обеспечивает адресное пространство 64 КБ)
  • 8-битный арифметико-логический блок (АЛУ)
  • Регистры 8-битного процессора :
    • аккумулятор
    • указатель стека
    • индексные регистры
    • регистр статуса
  • 16-битный счетчик программ
  • 69 инструкций , реализованных 212 кодами операций
  • 16 режимов адресации , включая адресацию нулевой страницы
Фотография кристалла микроконтроллера Sitronix ST2064B, показывающая встроенное ядро W65C02S в правом верхнем углу

Логические особенности [ править ]

  • VPBВыход Vector pull ( ) указывает, когда адресуются векторы прерывания
  • MLBВывод блокировки памяти ( ) указывает другим мастерам шины, когда выполняется инструкция чтения-изменения-записи.
  • Инструкции WA it- for - I nterrupt ( WAI) и ST o P ( STP) снижают энергопотребление, уменьшают задержку прерывания и обеспечивают синхронизацию с внешними событиями

Электрические характеристики [ править ]

  • Напряжение питания указано от 1,71 В до 5,25 В
  • Потребление тока (ядро) 0,15 и 1,5 мА на МГц при 1,89 В и 5,25 В соответственно
  • Набор команд переменной длины, позволяющий оптимизировать размер кода для процессоров с набором команд фиксированной длины, приводит к экономии энергии
  • Полностью статическая схема позволяет останавливать часы для экономии энергии

Функции синхронизации [ править ]

W65C02S может работать при любом удобном напряжении питания (V DD ) от 1,8 до 5 В (± 5%). В лист данных перечислены характеристики переменного тока таблица эксплуатационные характеристики при 5 V на 14 МГц, 3,3 В или 3 В при 8 МГц, 2,5 В при 4 МГц и 1,8 В на частоте 2 МГц. Эта информация может быть артефактом из более ранней таблицы данных, поскольку график показывает, что типичные устройства способны работать на более высоких скоростях, чем указано в таблице характеристик переменного тока, и что надежная работа на 20 МГц должна быть легко достижима с V DD на 5 вольт, если это позволяет поддерживающее оборудование.

Поддержка W65C02S произвольной тактовой частоты позволяет использовать тактовую частоту, которая работает с частотой, идеальной для какой-либо другой части системы, например, 13,5 МГц (частота дискретизации яркости цифрового SDTV), 14,31818 МГц (частота цветовой несущей NTSC × 4), 14,75 МГц (квадратные пиксели PAL), 14,7456 (кристалл скорости передачи) и т. Д., Если V DD достаточно для поддержки частоты. Дизайнер Билл Менш указал на то, что на F MAX влияют внешние факторы, такие как емкостная нагрузка на контакты микропроцессора. Минимизация нагрузки за счет использования коротких сигнальных дорожек и минимального количества устройств помогает поднять F MAX . Пакеты PLCC и QFP имеют меньшую межконтактную емкость, чем корпус PDIP, и более экономичны при использовании печатных плат. Космос.

WDC сообщил, что реализация W65C02S на базе FPGA успешно работает на частоте 200 МГц.

Сравнение с NMOS 6502 [ править ]

Базовая архитектура [ править ]

Хотя 65C02 в основном можно рассматривать как маломощный 6502, он также исправляет несколько ошибок, обнаруженных в оригинале, и добавляет новые инструкции, режимы адресации и функции, которые могут помочь программисту в написании небольших и быстро выполняющихся программ. Подсчитано, что средняя программа на языке ассемблера 6502 может быть уменьшена на 10-15 процентов на 65C02 и получить аналогичное улучшение производительности, в основном за счет предотвращения доступа к памяти за счет использования меньшего количества инструкций для выполнения данной задачи. [1]

Недокументированные инструкции удалены [ править ]

Оригинала 6502 была 56 инструкции, которые, в сочетании с различными режимами адресации, произведенной в общей сложности 151 опкодов из возможных 256 моделей 8-битных кодов операций. Остальные 105 неиспользуемых кодов операций не были определены, при этом набор кодов с младшими 4-мя битами с 3, 7, B или F остался полностью неиспользованным, а код с младшим 2-м кодом имел только один код операции. [7]

6502 был известен тем, что некоторые из этих оставшихся кодов действительно выполняли действия. Из-за того, как работает декодер инструкций 6502, простая установка определенных битов в коде операции может привести к выполнению части обработки инструкций. Некоторые из этих кодов операций сразу вызвали сбой процессора, в то время как другие выполняли полезные функции и даже получали от пользователей неофициальную мнемонику ассемблера. [8]

65C02 добавил ряд новых кодов операций, которые использовали ряд этих ранее "недокументированных команд" слотов, например, $ FF теперь использовался для новой BBSинструкции (см. Ниже). Те, что остались действительно неиспользованными, были настроены на выполнение NOPs. Программы, использующие эти коды, не будут работать на 65C02, но эти коды всегда документировались как неработающие и не должны были использоваться. [1]

Исправления ошибок [ править ]

В оригинальном 6502 при запуске было несколько ошибок. Ранние версии процессора имели дефектную RORинструкцию (повернуть вправо), и проблема MOS Technology решалась путем не документирования инструкции. RORбыл исправлен в самом начале производственного цикла и не был проблемой для подавляющего большинства компьютеров, использующих процессор. [9]

Напротив, печально известная ошибка, которая присутствует во всех вариантах NMOS 6502, связана с инструкцией перехода ( JMP) при использовании косвенной адресации . В этом режиме адресации целевой адрес JMPинструкции выбирается из памяти (вектор перехода), а не является операндом JMPинструкции. Например, JMP ($1234)будет извлекать значение из ячеек памяти $ 1234 (младший байт) и $ 1235 (старший значащий байт) и загружать эти значения в программный счетчик , что затем заставит процессор продолжить выполнение по адресу, хранящемуся в векторе перехода.

Ошибка возникает, когда адрес вектора заканчивается на $ FF, которое является границей страницы памяти . В этом случае JMPбудет извлекаться наиболее значимый байт целевого адреса из $ 00 исходной страницы, а не из $ 00 новой страницы. Следовательно, JMP ($12FF)младший байт целевого адреса получит значение 12FF, а старший байт целевого адреса - 1200 долларов, а не 1300 долларов. 65C02 исправил эту проблему. [1]

Состояние флага (D) ecimal в регистре состояния NMOS 6502 больше похоже на недосмотр, чем на ошибку, после сброса или прерывания . Это означает, что программисты должны установить флаг на известное значение, чтобы избежать ошибок, связанных с арифметическими операциями. В результате можно найти CLDинструкцию (CLear Decimal) почти во всех обработчиках прерываний 6502 , а также в начале кода сброса. 65C02 автоматически сбрасывает этот флаг после помещения регистра состояния в стек в ответ на любое прерывание или в ответ на аппаратный сброс, тем самым переводя процессор обратно в режим двоичной арифметики. [10]

Во время арифметики в десятичном режиме NMOS 6502 обновляет флаги (N) egative, o (V) erflow и (Z) ero, чтобы отразить результат двоичной арифметики, то есть флаги отражают результат, вычисленный до выполнения процессором десятичная коррекция. Напротив, 65C02 устанавливает эти флаги в соответствии с результатом десятичной арифметики за счет дополнительного тактового цикла для каждой арифметической инструкции. [10]

При выполнении инструкции чтение-модификация-запись (МРО), например , все NMOS варианты будут делать двойной записи на адр , первое переписывание текущее значение , найденное в адр , а затем записи измененного значения. Такое поведение может привести к трудно решаемым ошибкам, если адрес является аппаратным регистром. Вместо этого 65C02 выполняет двойное чтение адреса , за которым следует однократная запись.INC addr

При выполнении индексированной адресации, если индексирование пересекает границу страницы, все варианты NMOS будут считываться с недопустимого адреса, прежде чем получить доступ к правильному адресу. Как и в случае с инструкцией RMW, такое поведение может вызвать проблемы при доступе к аппаратным регистрам через индексацию. 65C02 исправил эту проблему, выполнив фиктивное чтение кода операции инструкции, когда индексирование пересекает границу страницы. Однако это исправление привело к появлению новой ошибки, которая возникает, когда базовый адрес находится на четной границе страницы (что означает, что индексация никогда не перейдет на следующую страницу). С новой ошибкой фиктивное чтение выполняется по базовому адресу до индексации, так что LDA $1200,Xбудет выполнено фиктивное чтение на 1200 долларов до того, как значение X будет добавлено к 1200 долларам. Опять же, при индексации адресов аппаратных регистров эта ошибка может привести к неопределенному поведению.

Если NMOS 6502 получает код операции BRK (программное прерывание) одновременно с аппаратным прерыванием, BRK игнорируется, поскольку процессор реагирует на прерывание. 65C02 правильно обрабатывает эту ситуацию, обслуживая прерывание и затем выполняя BRK.

Новые режимы адресации [ править ]

6502 имеет два режима косвенной адресации, которые разыменовываются через 16-битные адреса, хранящиеся на нулевой странице:

  • Индексированный косвенный, например LDA ($10,X), добавляет регистр X к заданному нулевому адресу страницы перед чтением 16-битного вектора. Например, если X равно 5, он считывает 16-битный адрес из ячейки $ 15 / $ 16. Это полезно, когда на нулевой странице есть массив указателей.
  • Косвенная индексация LDA ($10),Yдобавляет регистр Y к 16-битному вектору, считанному с заданного нулевого адреса страницы. Например, если Y равно 5, а $ 10 / $ 11 содержит вектор $ 1000, это считывает значение из $ 1005. Это выполняет адресацию со смещением указателя.

Обратной стороной этой модели является то, что если индексирование не требуется, один из индексных регистров все равно должен быть установлен в ноль и использоваться в одной из этих инструкций. 65C02 добавил неиндексированный режим косвенной адресации LDA ($10)ко всем инструкциям, которые использовали индексированный косвенный и косвенный режимы индексирования, освободив регистры индекса. [11]

У JMPинструкции 6502 был уникальный (среди инструкций 6502) режим адресации, известный как «абсолютная косвенная», при котором считывалось 16-битное значение из заданного адреса памяти, а затем осуществлялся переход к адресу в этом 16-битном значении. Например, если ячейка памяти $ A000 содержит 34 доллара, а $ A001 содержит 12 долларов, JMP ($A000)он прочитает эти два байта, построит значение $ 1234 и затем перейдет в это место.

Одним из распространенных способов использования косвенной адресации является создание таблиц переходов , списка точек входа для подпрограмм, к которым можно получить доступ с помощью индекса. Например, драйвер устройства может перечислить точки входа для OPEN, CLOSE, READи т.д. в таблице на $ A000. READ- это третья запись с нулевым индексом, и для каждого адреса требуется 16 бит, поэтому для вызова READодного будет использоваться что-то похожее на JMP ($A004). Если драйвер обновлен и код подпрограммы перемещается в память, любой существующий код будет работать до тех пор, пока таблица указателей остается на уровне $ A000.

В 65C02 добавлен новый режим «абсолютного косвенного индексирования», который упростил использование таблиц переходов. В этом режиме к абсолютному адресу добавляется значение регистра X, а из полученного местоположения берется 16-битный адрес. Например, чтобы получить доступ к READфункции из таблицы выше, можно было бы хранить 4 в X, то JMP ($A000,X). Этот стиль доступа упрощает доступ к таблицам переходов, поскольку один базовый адрес используется в сочетании с 8-битным смещением. [11]

Новые и измененные инструкции [ править ]

Помимо новых режимов адресации, «базовая модель» 65C02 также добавила набор новых инструкций. [12]

  • INCи DECбез параметров теперь увеличивайте или уменьшайте аккумулятор. Это было странным упущением в исходном наборе команд, который включал только INX/ DEX, INY/ DEYи / . Некоторые ассемблеры используют альтернативные формы / или / . [12]INC addrDEC addrINADEAINC ADEC A
  • STZ addr, STore Ноль в адр . Заменяет необходимость и не требует изменения значения аккумулятора. Поскольку эта задача является общей для большинства программ, использование STZ может уменьшить размер кода, как за счет устранения LDA, так и любого кода, необходимого для сохранения значения аккумулятора, обычно пары. [13]LDA #0;STA addrPHA PLA
  • PHX, PLX, PHY, PLY, Толкать и тянуть X и Y регистров в / из стека. Раньше только аккумулятор и регистр состояния имели инструкции push и pull. X и Y можно было сложить в стек, только сначала переместив их в аккумулятор с помощью TXAили TYA, тем самым изменив содержимое аккумулятора, а затем используя PHA. [14]
  • BRA, филиал всегда. Работает как a, JMPно использует 1-байтовый относительный адрес, как и другие ветви, с сохранением байта. Скорость часто совпадает с абсолютной скоростью 3 цикла, JMPесли только страница не пересечена, что сделало бы BRAверсию на 1 цикл длиннее (4 цикла). [15] Поскольку адрес является относительным, он также полезен при написании перемещаемого кода [13], что было распространенной задачей в эпоху, предшествовавшую появлению блоков управления памятью .

Инструкции по работе с битами [ править ]

И WDC, и Rockwell внесли улучшения в функции тестирования долот и манипуляции с ними в 65C02. WDC добавила новые режимы адресации к инструкции BIT, которая присутствовала в 6502, а также две новые инструкции для удобного управления битовыми полями, что является обычным действием в драйверах устройств.

BIT в 65C02 добавляет немедленный режим, нулевую страницу, проиндексированную X, и абсолютную проиндексированную X-адресацией. [12] Адресация в непосредственном режиме особенно удобна тем, что является полностью неразрушающей. Например:

LDA <регистр>
БИТ №% 00010000

может использоваться вместо:

LDA <регистр>
И #% 00010000

Первый сохраняет значение, загруженное из <register>, поэтому с ним можно выполнить более одного теста. Последняя последовательность разрушает значение регистра.

В дополнение к усовершенствованиям инструкции BIT, WDC добавил две инструкции, предназначенные для удобного управления битовыми полями:

  • TSB addrи , T est и S et B it и T est и R eset B its.TRB addr
Маска в аккумуляторе ( .A) логически соединяется с памятью по адресу addr , которая может быть нулевой страницей или абсолютной. Флаг Z в регистре состояния настраивается в соответствии с результатом логического И - никакие другие флаги регистра состояния не затрагиваются. Кроме того, биты в addr устанавливаются (TSB) или очищаются (TRB) в соответствии с маской в .A. Вкратце, TSB выполняет логическое ИЛИ после логического И и сохраняет результат логического ИЛИ по адресу addr , тогда как TRB сохраняет результаты логического И по адресу addr . В обоих случаях флаг Z в регистре состояния указывает результат до содержимого addr.A AND addrизменено. Таким образом, TRB и TSB заменяют последовательность инструкций, по существу объединяя инструкцию BIT с дополнительными шагами для сохранения вычислительных изменений, но таким способом, который сообщает о состоянии затронутого значения до его изменения. [1]

Изменения Роквелла добавили больше инструкций по манипулированию битами для непосредственной установки и тестирования любого бита, а также объединения тестов, очистки и перехода в один код операции. Новые инструкции были доступны с самого начала в семействе Rockwell R65C00 [16], но не были частью исходной спецификации 65C02 и не были найдены в версиях, выпущенных WDC или другими лицензиатами. Позже они были скопированы обратно в базовый проект и стали доступны в более поздних версиях WDC.

Особые инструкции Rockwell:

  • SMBbit# zp/ . Установить или сбросить (сбросить) бит номера бита # в байте нулевой страницы zp .RMBbit# zp
RMB и SMB используются для очистки (RMB) или установки (SMB) отдельных битов в битовом поле, каждая из которых заменяет последовательность из трех инструкций. Поскольку RMB и SMB предназначены только для адресации нулевой страницы, полезность этих инструкций ограничена, и они в первую очередь имеют значение в системах, в которых регистры устройств представлены на нулевой странице. Компонент bit # инструкции часто записывается как часть мнемоники, например, SMB1 $12которая устанавливает бит 1 в адресе нулевой страницы $ 12. Некоторые ассемблеры рассматривают бит # как часть операнда инструкции, например, который имеет то преимущество, что позволяет заменять его именем переменной или вычисленным числом. [13]SMB 1,$12
  • BBR bit#,offset,addrи переход при установке / сбросе бита.BBS bit#,offset,addr
Та же адресация нулевой страницы и ограничения, что и RMB и SMB, но переход к адресу addr, если выбранный бит сброшен (BBR) или установлен (BBS). Как и в случае с RMB и SMB, BBR и BBS заменяют последовательность из трех инструкций. [13]

Режимы с низким энергопотреблением [ править ]

В дополнение к новым командам выше, МЦД также добавлены STPи WAIинструкции для поддержки режима с низким энергопотреблением.

STP, ОСТАНОВИТЕ процессор, остановил всю обработку до тех пор, пока не будет выполнен сброс оборудования. Это может быть использовано для перевода системы в «спящий» режим, а затем быстрого ее выхода из режима перезагрузки. Обычно для этого требовалась какая-то внешняя система для поддержки основной памяти, и она не использовалась широко.

WAIt имел аналогичный эффект, входя в режим пониженного энергопотребления, но эта инструкция снова разбудила процессор при получении прерывания. Раньше обработка прерывания обычно включала запуск цикла для проверки того, было ли получено прерывание, иногда известный как « вращение », проверка типа при его получении и затем переход к коду обработки. Это означало, что процессор работал в течение всего процесса.

Напротив, в 65C02 код прерывания мог быть написан, если WAIсразу за ним следовало JSRили JMPобработчику. При обнаружении WAIошибки обработка останавливается, и процессор переходит в режим пониженного энергопотребления. Когда прерывание было получено, оно немедленно обработало JSRи обработало запрос.

Это имело дополнительное преимущество в виде небольшого повышения производительности. В случае вращения прерывание может прибыть в середине одной из инструкций цикла, и чтобы позволить ему перезапустить после возврата из обработчика, процессор тратит один цикл, чтобы сохранить свое местоположение. С WAI, процессор переходит в состояние с низким энергопотреблением в известном месте, где все инструкции гарантированно завершены, поэтому, когда приходит прерывание, он не может прервать выполнение инструкции, и процессор может безопасно продолжить работу, не тратя состояние сохранения цикла.

65SC02 [ редактировать ]

65 SC 02 - это вариант WDC 65C02 без битовых инструкций. [17]

Известные применения 65C02 [ править ]

Домашние компьютеры [ править ]

  • Портативный Apple IIc от Apple Computer (NCR 1.023 МГц)
  • Усовершенствованный Apple IIe от Apple Computer (1,023 МГц)
  • Домашний / учебный компьютер BBC Master от Acorn Computers Ltd (2 МГц 65SC12 плюс дополнительный второй процессор 65C102 4 МГц)
  • Replica 1 от Briel Computers, копия компьютера для любителей Apple I (1 МГц)
  • Клоны Apple II серии Laser 128
  • KIM-1 Современная копия MOS / CBM KIM-1 от Briel Computing

Консоли для видеоигр [ править ]

  • Портативный компьютер Atari Lynx (65SC02 @ ~ 4 МГц)
  • NEC PC Engine, также известный как TurboGrafx-16 ( HuC6280 @ 7,16 МГц) [18]
  • КПК GameKing (6 МГц) от Timetop
  • Контроллеры Watara Supervision (65SC02 @ 4 МГц)

Другие продукты [ править ]

  • Картридж ускорителя TurboMaster для домашнего компьютера Commodore 64 (65C02 @ 4.09 MHz)
  • Подключенный к трубке второй процессор для домашнего компьютера Acorn BBC Micro (65C02 @ 3 МГц)
  • множество специализированных шахматных компьютеров, например: Mephisto MMV , Novag Super Constellation, Fidelity Elite и многие другие (4–20 МГц)

См. Также [ править ]

  • Прерывания в процессорах 65xx
  • CSG 65CE02 , дальнейшая улучшенная версия 65C02

Примечания [ править ]

  1. ^ Некоторые источники, в том числе предыдущие версии этой статьи, утверждают, что это 1978 год. Это была дата, когда Билл Менч, главный дизайнер, основал WDC. Менч особо отмечает 1981 год, говоря о дизайне 1984 года.
  2. ^ Июня 1983 статья Вагнера упоминает это время для «несколько месяцев». Учитывая типичные задержки публикации на тот момент, это может быть датировано концом 1982 года.

Ссылки [ править ]

Цитаты [ править ]

  1. ^ Б с д е е г Wagner 1983 , с. 204.
  2. ^ Koehn, Philipp (2 марта 2018). "Стек 6502" (PDF) .
  3. Перейти ↑ Taylor & Watford 1984 , p. 174.
  4. ^ «6502 CPU Projects in HDL (for FPGA)» .
  5. ^ "W65C02DB Developer Board" .
  6. ^ "W65C02S-14" .
  7. ^ Паркер, Нил. «Набор команд 6502 / 65C02 / 65C816 декодирован» . Страница Нила Паркера Apple II .
  8. ^ Vardy, Адам (22 августа 1995). «Дополнительные инструкции ЦП серии 65ХХ» .
  9. ^ Steil, Майкл (2010-09-28). «Измерение ошибки ROR в раннем MOS 6502» .
  10. ^ a b «Различия между NMOS 6502 и CMOS 65c02» . Проверено 27 февраля 2018 года . Флаги N, V ​​и Z были неправильными после десятичной операции (но C был в порядке).
  11. ^ a b Кларк, Брюс. «Коды операций 65C02» .
  12. ↑ a b c Wagner 1983 , p. 200.
  13. ^ а б в г Вагнер 1983 , стр. 203.
  14. Перейти ↑ Wagner 1983 , pp. 200-201.
  15. ^ "W65C02S Datasheet" (PDF) .
  16. Перейти ↑ Wagner 1983 , p. 199.
  17. ^ Закс, Родней. Программирование 6502 . п. 348.
  18. ^ http://archaicpixels.com/HuC6280

Библиография [ править ]

  • Вагнер, Роберт (июнь 1983 г.). «Сборочные линии» . Softtalk . С. 199–204.
  • Тейлор, Саймон; Уотфорд, Боб (июль 1984 г.). «6502 возрождение». Мир персональных компьютеров . С. 174–175.

Дальнейшее чтение [ править ]

  • 65C02 Лист данных ; Центр западного дизайна; 32 страницы; 2018.
  • Программирование 65816 - включая 6502, 65C02, 65802 ; 1-е изд; Дэвид Айз и Рон Личти; Прентис Холл; 636 страниц; 1986; ISBN 978-0893037895 . (архив) 

Внешние ссылки [ править ]

  • 65C02 веб-сайт - Western Design Center
  • 65xx / 65Cxx / 65SCxx Отличия - CPU World
  • Декодирование набора команд 6502 / 65C02 / 65C816 - со страницы Нила Паркера Apple II