Технология MOS 6502

редактировать
Технология MOS 6502
MOS 6502AD 4585 top.jpg Процессор MOS Technology 6502 в пластиковом корпусе ДИП-40. Четырехзначный код даты указывает на то, что он был изготовлен на 45-й неделе (ноябрь) 1985 года.
Общая информация
Запущен 1975 ; 46 лет назад ( 1975)
Общий производитель (и)
Представление
Максимум. Тактовая частота процессора От 1 МГц до 3 МГц
Ширина данных 8
Ширина адреса 16
Архитектура и классификация
Набор инструкций MOS 6502
инструкции 56
Физические характеристики
Транзисторы
Пакет (ы)
История
Предшественник
Преемник

MOS Technology 6502 (обычно произносится как «шестьдесят пять-о-два» или «шесть-пять-о-два») представляет собой 8-разрядный микропроцессор, который был разработан небольшой группой во главе с Чаком вразнос для MOS Technology. Команда дизайнеров ранее работала в Motorola над проектом Motorola 6800 ; 6502 - это, по сути, упрощенная, менее дорогая и быстрая версия этой конструкции.

Когда он был представлен в 1975 году, 6502 был самым дешевым микропроцессором на рынке со значительным отрывом. Первоначально он продавался менее чем за одну шестую от стоимости конкурирующих разработок от более крупных компаний, таких как 6800 или Intel 8080. Его внедрение вызвало резкое снижение цен на всем рынке процессоров. Наряду с Zilog Z80 он положил начало серии проектов, которые привели к революции домашних компьютеров в начале 1980-х годов.

Популярные игровые консоли и компьютеры, такие как Atari 2600, семейство Atari 8-bit, Apple II, Nintendo Entertainment System, Commodore 64, Atari Lynx, BBC Micro и другие, используют 6502 или варианты базовой конструкции. Вскоре после появления 6502 технология MOS была куплена Commodore International, которая продолжала продавать микропроцессор и лицензии другим производителям. В первые дни 6502, он был вторым-источников по Роквеллу и Synertek, а затем лицензированы для других компаний.

В своей форме CMOS ( 65C02, которая была разработана Western Design Center ) семейство 6502 продолжает широко использоваться во встраиваемых системах, объемы производства которых оцениваются в сотни миллионов.

СОДЕРЖАНИЕ
  • 1 История и использование
    • 1.1 Истоки в Motorola
    • 1.2 Переход к технологии MOS
    • 1.3 Переход на NMOS
    • 1.4 Замечания по дизайну
    • 1.5 Представляем 6501 и 6502
    • 1.6 Иск Motorola
    • 1.7 Компьютеры и игры
  • 2 Техническое описание
    • 2.1 Регистры
    • 2.2 Обращение
    • 2.3 Косвенная адресация
    • 2.4 Инструкции и коды операций
    • 2.5 язык ассемблера
    • 2.6 Таблица инструкций
  • 3 Подробное поведение
  • 4 Вариации и производные
    • 4.1 16-битные производные
  • 5 Пример кода
  • 6 Ошибки и причуды
  • 7 См. Также
  • 8 Примечания
  • 9 ссылки
    • 9.1 Цитаты
    • 9.2 Библиография
  • 10 Дальнейшее чтение
  • 11 Внешние ссылки
История и использование

Истоки в Motorola

Демонстрационная плата Motorola 6800, построенная Чаком Педдлом и Джоном Бьюкененом в 1974 году.

6502 был разработан многими из тех же инженеров, которые проектировали семейство микропроцессоров Motorola 6800. Motorola начала проект микропроцессора 6800 в 1971 году под руководством Тома Беннета в качестве главного архитектора. Компоновка микросхемы началась в конце 1972 года, первые 6800 микросхем были изготовлены в феврале 1974 года, а полное семейство было официально выпущено в ноябре 1974 года. Джон Бьюкенен был разработчиком микросхемы 6800, а Род Оргилл, который позже разработал 6501, помогал Бьюкенену с анализ схем и компоновка микросхем. Билл Менш присоединился к Motorola в июне 1971 года после окончания Университета Аризоны (в возрасте 26 лет). Его первым заданием было помочь определить периферийные ИС для семейства 6800, а позже он был главным разработчиком адаптера периферийного интерфейса 6820 (PIA). Инженеры Motorola могли выполнять аналоговое и цифровое моделирование на мэйнфрейме IBM 370-165. Беннетт нанял Чака Педдла в 1973 году для выполнения архитектурной поддержки продуктов семейства 6800, которые уже ведутся. Он участвовал во многих областях, включая разработку 6850 ACIA (последовательный интерфейс).

Целевыми клиентами Motorola были известные компании-производители электроники, такие как Hewlett-Packard, Tektronix, TRW и Chrysler. В мае 1972 года инженеры Motorola начали посещать избранных клиентов и делиться деталями предлагаемой ими 8-битной микропроцессорной системы с ПЗУ, ОЗУ, параллельным и последовательным интерфейсами. В начале 1974 года они предоставили инженерные образцы микросхем, чтобы клиенты могли создавать прототипы своих конструкций. Стратегия Motorola по «полному семейству продуктов» была сосредоточена не на цене микропроцессора, а на снижении общей стоимости проектирования для заказчика. Они предложили программное обеспечение для разработки на таймшер-компьютере, систему отладки «EXORciser», обучение на месте и поддержку инженеров по полевым приложениям. И Intel, и Motorola первоначально объявили цену в 360 долларов за один микропроцессор. Фактическая цена на объемы производства была намного меньше. Motorola предложила дизайнерский комплект, содержащий 6800 с шестью микросхемами поддержки, за 300 долларов.

Педдл, который сопровождал продавцов во время визитов к покупателям, обнаружил, что покупателей отталкивает высокая стоимость микропроцессорных чипов. В то же время эти посещения неизменно приводили к тому, что инженеры, которых он представлял, составляли списки необходимых инструкций, которые были намного меньше, чем «все эти причудливые инструкции», которые были включены в 6800. Педдл и другие члены команды начали обрисовывать в общих чертах дизайн улучшенная функция, микропроцессор уменьшенного размера. В то время новое предприятие Motorola по производству полупроводников в Остине, штат Техас, испытывало трудности с производством МОП-микросхем, а середина 1974 года стала началом годичного спада в полупроводниковой промышленности. Кроме того, многие сотрудники Меса, штат Аризона, были недовольны предстоящим переездом в Остин, штат Техас.

Руководство подразделения полупроводниковой продукции Motorola было перегружено проблемами и не проявило интереса к предложению Peddle о недорогом микропроцессоре. В конце концов Педдлу было отправлено официальное письмо с требованием прекратить работу над системой. Педдл ответил на приказ, сообщив Motorola, что письмо представляет собой официальное заявление об «отказе от проекта», и поэтому интеллектуальная собственность, которую он разработал к тому моменту, теперь принадлежит ему. В интервью в ноябре 1975 года председатель Motorola Роберт Гэлвин в конечном итоге согласился с тем, что концепция Педдла была удачной и что подразделение упустило возможность: «Мы не выбрали правильных руководителей в подразделении полупроводниковой продукции». Подразделение было реорганизовано, сменилось руководство. Новый вице-президент группы Джон Велти сказал: «Организация по продажам полупроводников потеряла чувствительность к потребностям клиентов и не может принимать быстрые решения».

Переход к технологии MOS

Реклама MOS Technology 1973 года, в которой подчеркиваются возможности заказных интегральных схем. MOS Technology MCS6501, в белом керамическом корпусе, изготовлен в конце августа 1975 г.

Педдл начал искать источники финансирования этого нового проекта за пределами Motorola. Сначала он обратился к генеральному директору Mostek Л.Дж. Севину, но тот отказался. Позже Севин признал, что это произошло потому, что он боялся, что Motorola подаст на них в суд.

В то время как Педдл посетил Ford Motor Company во время одной из своих торговых поездок, Боб Джонсон, позже глава подразделения автоматизации двигателей Ford, упомянул, что их бывший коллега Джон Пайвинен перешел в General Instrument и сам изучал дизайн полупроводников. С тех пор он ушел и занимался очень интересной работой над чипсетами для калькуляторов в новой компании, которую он основал в Вэлли-Фордж, штат Пенсильвания.

Пайвинен основал MOS Technology в 1969 году вместе с двумя другими руководителями General Instrument, Морт Джаффе и Дон Маклафлин. Allen-Bradley, поставщик электронных компонентов и промышленных устройств управления, приобрел контрольный пакет акций в 1970 году. Компания разработала и изготовила индивидуальные микросхемы для клиентов и разработала линейку микросхем для калькуляторов.

После того, как усилия Mostek провалились, Педдл подошел к Пайвинену, который «сразу понял». 19 августа 1974 года Чак Педдл, Билл Менш, Род Оргилл, Гарри Боуком, Рэй Хирт, Терри Холдт и Уил Матис покинули Motorola, чтобы присоединиться к MOS. Майк Джейнс присоединился позже. Из семнадцати разработчиков микросхем и специалистов по компоновке в команде 6800 осталось восемь. Целью команды было разработать и произвести недорогой микропроцессор для встраиваемых приложений и охватить как можно более широкую клиентскую базу. Это было бы возможно только в том случае, если бы микропроцессор был недорогим, а группа установила целевую цену на уровне 5 долларов за объем. Позже Менш заявил, что цель заключалась не в цене самого процессора, а в создании набора микросхем, который можно было бы продавать по 20 долларов, чтобы конкурировать с недавно представленным Intel 4040, который продавался за 29 долларов в аналогичном комплекте микросхем.

Чипы производятся путем печати нескольких копий дизайна чипа на поверхности «пластины», тонкого диска из высокочистого кремния. Чипы меньшего размера могут быть напечатаны в большем количестве на одной и той же пластине, что снижает их относительную цену. Кроме того, пластины всегда содержат некоторое количество крошечных физических дефектов, разбросанных по поверхности. Любая микросхема, напечатанная в этом месте, выйдет из строя, и ее следует выбросить. Меньшие чипы означают, что вероятность того, что одна копия будет отпечатана с дефектом, меньше. По обеим этим причинам стоимость конечного продукта сильно зависит от размера конструкции микросхемы.

Исходные чипы 6800 должны были иметь размер 180 × 180 мил (4,6 × 4,6 мм), но компоновка была завершена с размером 212 × 212 мил (5,4 × 5,4 мм) или площадью 29,0 мм 2. Для новой конструкции цель по стоимости требовала целевого размера 153 × 168 мил (3,9 × 4,3 мм) или площади 16,6 мм 2. Для достижения этой цели потребуется несколько новых методов.

Переход на NMOS

Когда разрабатывалась модель 6502, на рынке появилось два значительных новшества, которые обеспечили значительное снижение затрат. Первым был переход к NMOS с истощенной загрузкой. В 6800 использовался ранний процесс NMOS, который требовал трех напряжений питания, но одной из особенностей микросхемы был встроенный удвоитель напряжения, который позволял использовать один источник питания + 5 В для внутренних +5, -5 и +12, в отличие от других микросхем. эпоха, подобная Intel 8080, которая требовала трех отдельных контактов питания. Хотя эта функция снизила сложность источника питания и компоновки выводов, она по-прежнему требовала отдельных шин питания для различных вентилей на кристалле, что увеличивало сложность и размер. При переходе к новой конструкции истощающей нагрузки достаточно было единственного источника питания +5, устраняющего всю эту сложность.

Еще одним практическим преимуществом было то, что тактовый сигнал для более ранних процессоров должен был быть достаточно сильным, чтобы выдержать все рассеивание при прохождении через цепи, что почти всегда требовало отдельного внешнего чипа, который мог бы обеспечить достаточно сильный сигнал. При снижении требований к мощности NMOS часы можно было перенести на микросхему, что упростило общую конструкцию компьютера. Эти изменения значительно снизили сложность и стоимость внедрения полной системы.

Еще одно изменение, которое имело место, - это введение маскировки проекции. Раньше чипы наносили на поверхность пластины, помещая маску на поверхность пластины и затем освещая ее ярким светом. Маски часто собирали крошечные кусочки грязи или фоторезиста, когда они поднимались с чипа, вызывая дефекты в этих местах при любой последующей маскировке. В сложных конструкциях, таких как процессоры, можно было бы использовать 5 или 6 таких шагов маскирования, и вероятность того, что хотя бы один из этих шагов привнесет дефект, была очень высока. В большинстве случаев 90% таких конструкций имели дефекты, что давало доходность 10%. Цена рабочих примеров должна была покрывать производственные затраты на 90%, которые были выброшены.

В 1973 году Perkin-Elmer представила систему Micralign, которая проецировала изображение маски на пластину вместо прямого контакта. Маски больше не собирают грязь с пластин, и их срок службы составляет порядка 100 000 использований, а не 10. Это устранило поэтапные отказы и высокий процент брака, который ранее наблюдался в сложных конструкциях. Доходность процессоров сразу же подскочила с 10% до 60 или 70%. Это означало, что цена ЦП упала примерно на такую ​​же величину, и микропроцессор внезапно стал массовым устройством.

Существующие производственные линии MOS Technology были основаны на более старой технологии PMOS, они еще не начали работать с NMOS, когда прибыла команда. Пайвинен пообещал вовремя запустить линию NMOS, чтобы начать производство нового процессора. Он выполнил обещание, новая линия была готова к июню 1975 года.

Примечания к дизайну

Чак Педдл, Род Оргилл и Уил Матис разработали первоначальную архитектуру новых процессоров. Статья в журнале EDN за сентябрь 1975 г. дает следующее краткое изложение конструкции:

Семейство MOS Technology 650X представляет собой сознательную попытку восьми бывших сотрудников Motorola, которые работали над разработкой системы 6800, выпустить деталь, которая заменит и превзойдет 6800, но при этом будет продавать ее дешевле. Оглядываясь назад на проект 6800, команда MOS Technology во главе с Чаком Педдлом внесла следующие архитектурные изменения в ЦП Motorola...

Основным изменением, касающимся размера микросхемы, было устранение драйверов с тремя состояниями на выходах адресной шины. Это было включено в 6800, чтобы позволить ему работать с другими микросхемами в ролях прямого доступа к памяти (DMA) и совместной обработки за счет значительного пространства кристалла. На практике использование такой системы требовало, чтобы другие устройства были аналогичными сложными, и разработчики вместо этого стремились использовать внешние системы для координации такого доступа. В 6502 просто убрали эту функцию, поскольку он был недорогим контроллером, который использовался для определенных задач и связи с простыми устройствами. Педдл предположил, что любой, кому действительно нужен такой стиль доступа, может реализовать его с помощью одного 74158.

Следующим важным отличием было упрощение регистров. Для начала сняли один из двух гидроаккумуляторов. Регистры общего назначения, такие как аккумуляторы, должны быть доступны для многих частей декодера команд и, следовательно, требуют значительного количества проводных соединений для перемещения данных в их хранилище и из них. Два аккумулятора упрощают многие задачи кодирования, но значительно усложняют саму конструкцию микросхемы. Дальнейшая экономия была достигнута за счет уменьшения регистра стека с 16 до 8 бит, а это означало, что стек мог иметь длину только 256 байт, чего было достаточно для его предполагаемой роли микроконтроллера.

16-битный индексный регистр IX был разделен на две части, став X и Y. Что еще более важно, изменился стиль доступа; в 6800 IX содержал 16-битный адрес, который был смещен числом, указанным с инструкцией, два были добавлены для получения окончательного адреса. В 6502 (и большинстве других конструкций) базовый адрес хранился в инструкции, и к нему добавлялись X или Y.

Наконец, набор команд был упрощен, освободив место для декодера и логики управления. Из исходных 72 инструкций в 6800 осталось 56. Среди тех, что были удалены, были любые инструкции, которые перемещали данные между двумя аккумуляторами 6800, а также ряд инструкций ветвления, вдохновленных PDP-11, таких как возможность напрямую сравнивать два числовых значения. 6502 использовал более простую систему, которая обрабатывала сравнения, выполняя математические вычисления в аккумуляторе и затем проверяя флаги результатов.

Высокоуровневый дизайн микросхемы пришлось превратить в чертежи транзисторов и межсоединений. В MOS Technology «макетирование» выполнялось вручную с помощью цветных карандашей и пергаментной бумаги. Макет состоял из тысяч многоугольников на шести разных рисунках; по одному на каждый уровень производственного процесса. Учитывая ограничения по размеру, необходимо было постоянно учитывать всю конструкцию микросхемы. Менш и Пайвинен работали над декодером инструкций, а Менш, Педдл и Оргилл работали над ALU и регистрами. Еще одним достижением, разработанным на вечеринке, был способ разделить часть внутренней проводки, чтобы уменьшить размер ALU.

Несмотря на все усилия, окончательный дизайн оказался на 5 мил больше ширины. Первые 6502 чипа имели размер 168 × 183 мил (4,3 × 4,7 мм) или площадь 19,8 мм 2. Инструкция поворота вправо (ROR) не работала в первом кремнии, поэтому инструкция была временно исключена из опубликованных документов, но следующая итерация дизайна уменьшила чип и исправила инструкцию поворота вправо, которая затем была включена в исправленную документацию..

Представляем 6501 и 6502

Вводная реклама микропроцессоров MOS Technology MCS6501 и MCS6502

MOS представит два микропроцессора, основанных на той же базовой конструкции: 6501 будет подключаться к тому же разъему, что и Motorola 6800, а 6502 перестроит распиновку для поддержки встроенного тактового генератора. Оба будут работать с другими микросхемами поддержки, разработанными для 6800. Они не будут запускать программное обеспечение 6800, потому что у них другой набор инструкций, другие регистры и в основном разные режимы адресации. Род Оргилл отвечал за дизайн 6501; он помогал Джону Бьюкенену в Motorola на 6800. Билл Менш сделал 6502; он был разработчиком адаптера периферийного интерфейса 6820 (PIA) в Motorola. С макетом помогали Гарри Боуком, Майк Джейнс и Сидней-Энн Холт.

Внедрение микропроцессоров MOS Technology отличалось от традиционного выпуска продукции, продолжавшегося несколько месяцев. Первый запуск новой интегральной схемы обычно используется для внутреннего тестирования и передается избранным клиентам в качестве «инженерных образцов». Эти микросхемы часто имеют небольшие конструктивные дефекты или два, которые будут исправлены до начала производства. Целью Чака Педдла было продать первые партии чипов 6501 и 6502 участникам торговой выставки Wescon в Сан-Франциско, которая началась 16 сентября 1975 года. Педдл был очень эффективным представителем, и микропроцессоры MOS Technology широко освещались в отраслевой прессе. Одним из первых был полностраничный рассказ о микропроцессорах MCS6501 и MCS6502 в выпуске журнала Electronics от 24 июля 1975 года. Истории также публиковались в EE Times (24 августа 1975 г.), EDN (20 сентября 1975 г.), Electronic News (3 ноября 1975 г.), Byte (ноябрь 1975 г.) и Microcomputer Digest (ноябрь 1975 г.). Рекламы 6501 появились в нескольких публикациях в первую неделю августа 1975 года. 6501 будет продаваться на Wescon по 20 долларов за штуку. В сентябре 1975 года реклама включала как микропроцессоры 6501, так и 6502. 6502 будет стоить всего 25 долларов (что эквивалентно 120 долларам в 2020 году).

Когда компания MOS Technology прибыла в Вескон, они обнаружили, что экспонентам не разрешается ничего продавать в выставочном зале. Они арендовали MacArthur Suite в отеле St. Francis и предложили клиентам приобрести процессоры. В комплекте процессоры хранились в больших банках, что означало, что чипы были в производстве и были легко доступны. Покупатели не знали, что в нижней половине каждой банки находятся нефункциональные микросхемы. Чипы стоили 20 и 25 долларов, а пакет документации - еще 10 долларов. Пользователям предлагалось делать фотокопии документов - это недорогой способ для MOS Technology распространять информацию о продукте. В предварительных таблицах данных перечислено всего 55 инструкций, за исключением инструкции «Повернуть вправо» (ROR), которая некорректно работала на этих ранних микросхемах. В обзорах в Byte и EDN отмечалось отсутствие инструкции ROR. Следующая версия схемы устранила эту проблему, и в таблице данных за май 1976 г. было перечислено 56 инструкций. Педдл хотел, чтобы каждый заинтересованный инженер и любитель имел доступ к микросхемам и документации; другие полупроводниковые компании хотели иметь дело только с «серьезными» клиентами. Например, Signetics представила микропроцессор 2650, и ее рекламные объявления просили читателей писать информацию на фирменных бланках своей компании.

MOS Technology MCS6502, в белом керамическом корпусе, изготовлен в конце 1975 г.
Различия в распиновке
Штырь 6800 6501 6502
2 Остановка Готовый Готовый
3 ∅1 (дюйм) ∅1 (дюйм) ∅1 (уходит)
5 Действительный адрес памяти Действительный адрес памяти NC
7 Автобус доступен Автобус доступен СИНХРОНИЗАЦИЯ
36 Включить шину данных Включить шину данных NC
37 ∅2 (дюйм) ∅2 (дюйм) ∅0 (дюйм)
38 NC NC Установить флаг переполнения
39 Трехсторонний контроль NC ∅2 (уходит)

Иск Motorola

В даташите за май 1976 года отсутствовал микропроцессор 6501, который был в версии от августа 1975 года.

Представление 6501/6502 в печати и на Wescon имело огромный успех. Обратной стороной было то, что внимание Motorola привлекло широкое освещение в прессе. В октябре 1975 года Motorola снизила цену одного микропроцессора 6800 со 175 до 69 долларов. Комплект для проектирования системы стоимостью 300 долларов был сокращен до 150 долларов, и теперь он поставлялся с печатной платой. 3 ноября 1975 года Motorola обратилась в Федеральный суд с иском о запрете MOS Technology производить и продавать микропроцессорные устройства. Они также подали иск о нарушении патентных прав и незаконном присвоении коммерческой тайны. Motorola заявила, что семь бывших сотрудников присоединились к MOS Technology для создания микропроцессорных продуктов этой компании.

Motorola была компанией с доходом в миллиард долларов, у нее было убедительное дело и адвокаты. 30 октября 1974 года Motorola подала множество патентных заявок на семейство микропроцессоров и получила двадцать пять патентов. Первый был в июне 1976 года, а второй - Биллу Меншу 6 июля 1976 года за схему чипа 6820 PIA. Эти патенты касались шины 6800 и того, как периферийные микросхемы взаимодействуют с микропроцессором. Motorola начала производить транзисторы в 1950 году и имела портфель патентов на полупроводники. Аллен-Брэдли решил не бороться с этим делом и продал свою долю в MOS Technology обратно основателям. В иске были названы имена четырех бывших инженеров Motorola: Чака Педла, Уилла Мэтиса, Билла Менша и Род Оргилла. Все они были названы изобретателями в 6800 патентных заявках. В процессе открытия компания Motorola обнаружила, что один инженер, Майк Джейнс, проигнорировал инструкции Педдла и принес свои проектные документы 6800 в MOS Technology. В марте 1976 года у теперь независимой компании MOS Technology заканчивались деньги, и ей пришлось уладить дело. Они согласились отказаться от процессора 6501, заплатить Motorola 200 000 долларов и вернуть документы, которые, по утверждению Motorola, были конфиденциальными. Обе компании договорились о кросс-лицензировании патентов на микропроцессоры. В мае того же года Motorola снизила цену одного микропроцессора 6800 до 35 долларов. К ноябрю Commodore приобрела MOS Technology.

Компьютеры и игры

Несмотря на юридические проблемы, MOS все еще оставалась с проблемой заставить разработчиков опробовать свой процессор, что побудило Чака Педдла спроектировать одноплатный компьютер MDT-650 («терминал разработки микрокомпьютеров»). Другая группа внутри компании разработала KIM-1, который продавался в неполном виде и мог быть превращен в пригодную для использования систему с добавлением компьютерного терминала стороннего производителя и компактного кассетного привода. К их большому изумлению, KIM-1 хорошо продавался любителям и мастерам, а также инженерам, для которых он был предназначен. Соответствующая система управления / обучения / развития Rockwell AIM 65 также хорошо себя зарекомендовала. Программное обеспечение AIM 65 было основано на программном обеспечении MDT. Другим примерно похожим продуктом был Synertek SYM-1.

Одним из первых «публичных» применений этой конструкции был микрокомпьютер Apple I, представленный в 1976 году. Затем 6502 использовался в Commodore PET и Apple II, выпущенных в 1977 году. Позже он использовался в 8-битной версии Atari. family и домашние компьютеры Acorn Atom, BBC Micro, Commodore VIC-20 и другие разработки как для домашних компьютеров, так и для бизнеса, такие как Ohio Scientific и Oric. 6510, прямой преемник 6502 с цифровым портом ввода / вывода и тремя состояниями шины адреса, был процессор используется в бестселлера Commodore 64 домашний компьютер. 6520 и / или 6502-вариантные процессоры были использованы во все коммодоре гибких дисков дисков для всех своих 8-битных компьютеров, от линии ПЭТ (некоторые из которых имело два процессора 6502 на основе) через коммодор 128D, в том числе коммодора 64, и во всех дисковых накопителях Atari для всей линейки 8-битных компьютеров, от 400/800 до XEGS.

Еще одно важное применение семейства 6500 было в видеоиграх. Первым, кто использовал дизайн процессора, был Atari VCS, позже переименованный в Atari 2600. VCS использовала вариант 6502, названный 6507, который имел меньше контактов и, как следствие, мог адресовать только 8  КБ памяти. Будут проданы миллионы консолей Atari, каждая с процессором MOS. Еще одним важным использованием была Nintendo Entertainment System и Famicom. 6502, используемый в NES, был второй исходной версией Ricoh, частичной системой на кристалле, в которой отсутствовал двоично-десятичный режим, но добавлены 22 отображаемых в память регистра и встроенное оборудование для генерации звука и чтения с джойстика., и список спрайтов DMA. Названный 2A03 в консолях NTSC и 2A07 в консолях PAL (разница заключается в соотношении делителя памяти и таблице поиска частот дискретизации звука), этот процессор был произведен исключительно для Nintendo. Atari Lynx используется версия 4 МГц чипа, в 65SC02.

В 1980-х годах популярный журнал по электронике Elektor / Elektuur использовал этот процессор в своей микропроцессорной плате для разработки Junior Computer.

Техническое описание
6502 кристалл процессора. Обычная секция вверху - это ПЗУ для декодирования команд, кажущаяся случайной секция в центре - это управляющая логика, а внизу - регистры (справа) и ALU (слева). Подключения шины данных расположены внизу справа, а адресная шина - внизу и внизу слева. 6502 Конфигурация контактов (40-контактный DIP ) Регистры MOS 6502
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 (битовая позиция)
Основные регистры
А ccumulator
Индексные регистры
Икс Индекс X
Y Индекс Y
0 0 0 0 0 0 0 1 S Указатель S tack
Счетчик команд
ПК Р rogram С ounter
Регистр статуса
N V - B D я Z C P rocessor F лаги

6502 - это 8-битный процессор с прямым порядком байтов и 16-битной адресной шиной. Оригинальные версии были изготовлены с использованием 8 мкм техпроцесса чипа с фильерой размером от 3,9 мм × 4,3 мм (рекламируемых в 153 мил × 168 мил), для общей площади 16,6 мм 2.

Внутренняя логика работает с той же скоростью, что и внешняя тактовая частота, но, несмотря на низкие тактовые частоты (обычно в районе 1-2 МГц ), производительность 6502 была конкурентоспособной по сравнению с другими современными процессорами, использующими значительно более высокие тактовые частоты . Частично это связано с тем, что простой конечный автомат реализуется комбинационной (без тактовой) логикой в большей степени, чем во многих других проектах; двухфазные часы (обеспечивающие две синхронизации за цикл) могли бы, таким образом, напрямую управлять машинным циклом. Для выполнения типичных инструкций на 6502 может потребоваться вдвое меньше циклов, чем на современных моделях. Как и большинство простых процессоров того времени, динамический чип NMOS 6502 не упорядочивается ПЗУ микрокода, а использует PLA (который занимал около 15% площади чипа) для декодирования и упорядочивания команд. Как и в большинстве 8-битных микропроцессоров, чип выполняет некоторое ограниченное перекрытие выборки и выполнения.

Низкая тактовая частота сдерживала требования к скорости памяти и периферийных устройств, подключенных к ЦП, поскольку для доступа к памяти было доступно только около 50% тактового цикла (из-за асинхронной конструкции эта доля сильно варьировалась в зависимости от версии чипа). Это было критически важно в то время, когда доступная память имела время доступа в диапазоне 250–450 нс.

Поскольку микросхема обращалась к памяти только в течение определенных частей тактового цикла, и эти циклы были обозначены выводом вывода тактовой частоты PHI2-low, другие микросхемы в системе могли получить доступ к памяти в то время, когда 6502 был отключен от шины. Иногда это называлось «скрытым доступом». Этот метод широко использовался компьютерными системами; они использовали бы память с возможностью доступа на частоте 2 МГц, а затем запустили бы ЦП на частоте 1 МГц. Это гарантировало, что ЦП и видеооборудование могут чередовать свои обращения с общей производительностью, соответствующей устройству памяти. Когда в 1980-х годах стали доступны более быстрые запоминающие устройства, новые машины могли работать с более высокими тактовыми частотами, как, например, ЦП с частотой 2 МГц в BBC Micro, и по-прежнему использовать методы разделения шины.

Регистры

Как и его предшественник 6800, 6502 имеет очень мало регистров. Регистры 6502 включают в себя один 8-битный регистр накопителя (A), два 8-битных индексных регистра (X и Y), 7 1-битных битов флага состояния процессора (P) - в частности, от бита 7 до бита 0 в P это отрицательный (N), переполнение (V), зарезервировано, прерывание (B), десятичное (D), отключение прерывания (I), ноль (Z) и флаг переноса (C) -, 8-битный указатель стека (S), и 16-битный счетчик программ (ПК). Это можно сравнить с типичным дизайном той же эпохи, Z80, который имеет восемь 8-битных регистров общего назначения, которые можно объединить в четыре 16-битных. Z80 также имел полный набор альтернативных регистров, который составлял в общей сложности шестнадцать регистров общего назначения.

Чтобы отчасти восполнить недостаток регистров, 6502 включил режим адресации нулевой страницы, который использует один байт адреса в инструкции вместо двух, необходимых для адресации полных 64 КБ памяти. Это обеспечивает быстрый доступ к первым 256 байтам ОЗУ за счет использования более коротких инструкций. Чак Педдл сказал в интервью, что конкретное намерение состояло в том, чтобы позволить этим первым 256 байтам ОЗУ использоваться как регистры.

Адресное пространство стека жестко привязано к странице памяти $ 01, то есть диапазону адресов $ 0100 - $ 01FF ( 256 - 511). Программный доступ к стеку осуществляется с помощью четырех инструкций режима подразумеваемой адресации, функции которых состоят в том, чтобы нажимать или выталкивать (вытягивать) аккумулятор или регистр состояния процессора. Тот же стек также используется для вызовов подпрограмм через инструкции JSR (переход к подпрограмме) и RTS (возврат из подпрограммы) и для обработки прерываний.

Обращение

Микросхема эффективно использует регистры индекса и стека с несколькими режимами адресации, включая режим быстрой «прямой страницы» или «нулевой страницы», аналогичный тому, что есть в PDP-8, который обеспечивает доступ к ячейкам памяти с адресов от 0 до 255 с помощью одного 8-битный адрес (сохранение цикла, обычно необходимого для выборки старшего байта адреса) - код для 6502 использует нулевую страницу так же, как код для других процессоров будет использовать регистры. На некоторых микрокомпьютерах на базе 6502 с операционной системой операционная система использует большую часть нулевой страницы, оставляя для пользователя лишь несколько мест.

Режимы адресации также включают подразумеваемые (1-байтовые инструкции); абсолютный (3 байта); индексированный абсолютный (3 байта); индексированная нулевая страница (2 байта); относительный (2 байта); аккумулятор (1); косвенный, x и косвенный, y (2); и немедленно (2). Абсолютный режим - это универсальный режим. Команды перехода используют 8-битное смещение со знаком относительно инструкции после перехода; числовой диапазон -128..127, следовательно, преобразуется в 128 байтов назад и 127 байтов вперед от инструкции, следующей за ветвью (что на 126 байтов назад и 129 байтов вперед от начала команды ветвления). В режиме аккумулятора аккумулятор используется как эффективный адрес и не требуется никаких данных операнда. В немедленном режиме используется 8-битный буквальный операнд.

Косвенная адресация

Непрямые режимы полезны для обработки массивов и других циклов. В режиме «(косвенный), y» с циклом 5/6 8-битный регистр Y добавляется к 16-битному базовому адресу, считываемому с нулевой страницы, который располагается одним байтом после кода операции. Таким образом, регистр Y является индексным регистром в том смысле, что он используется для хранения фактического индекса (в отличие от регистра X в 6800, где непосредственно хранится базовый адрес и к которому может быть добавлено немедленное смещение). Увеличение регистра индекса для побайтного обхода массива занимает всего два дополнительных цикла. В менее часто используемом режиме «(косвенный, x)» эффективный адрес для операции находится по адресу нулевой страницы, сформированному добавлением второго байта инструкции к содержимому регистра X. В индексированных режимах нулевая страница эффективно действует как набор из 128 дополнительных (хотя и очень медленных) адресных регистров.

6502 может выполнять сложение и вычитание в двоичной или двоично-десятичной системе счисления. Перевод ЦП в режим BCD с помощью SEDинструкции (установить флаг D) приводит к десятичной арифметике, в $99 + $01результате чего устанавливается $ 00 и устанавливается флаг переноса (C). В двоичном режиме ( CLDочистить флаг D) та же операция приведет к очистке $ 9A и флага переноса. За исключением Atari BASIC, режим BCD редко использовался в приложениях для домашних компьютеров.

Увидимся в Привет, мир! статья для простого, но характерного примера языка ассемблера 6502.

Инструкции и коды операций

Коды операций инструкции 6502 ( коды операций) имеют длину восемь бит и имеют общую форму AAABBBCC, где AAA и CC определяют код операции, а BBB определяет режим адресации.

Например, рассмотрим ORAинструкцию, которая выполняет поразрядное ИЛИ над битами в аккумуляторе с другим значением. Код операции команды имеет вид 000bbb01, где bbb может быть 010 для значения немедленного режима (константа), 001 для фиксированного адреса нулевой страницы, 011 для абсолютного адреса и так далее.

Этот шаблон не является абсолютным, и есть ряд исключений. Однако там, где он применяется, он позволяет легко деконструировать значения кода операции обратно в мнемонику ассемблера для большинства инструкций, обрабатывая крайние случаи с помощью специального кода.

Из 256 возможных кодов операций, доступных с использованием 8-битного шаблона, исходный 6502 использует 151 из них, организованных в 56 инструкций с (возможно) несколькими режимами адресации. В зависимости от инструкции и режима адресации код операции может потребовать ноль, один или два дополнительных байта для операндов. Следовательно, машинные инструкции 6502 имеют длину от одного до трех байтов. Операнд хранится в обычном для 6502 формате с прямым порядком байтов.

65C816, 16-разрядный КМОП потомок 6502, также поддерживает 24-битную адресацию, что приводит к инструкции быть собран с тремя-байтовых операндов, также расположенных в маленьком формате обратным порядком байтов.

Остальные 105 кодов операций не определены. В первоначальном дизайне инструкции, в которых младшие 4 бита ( полубайт) были 3, 7, B или F, не использовались, обеспечивая место для будущего расширения. Кроме того, столбец $ 2x имел только одну запись,. Остальные 25 пустых слотов были розданы. Некоторые из пустых слотов использовались в 65C02 для предоставления как новых инструкций, так и вариантов существующих с новыми режимами адресации. Изначально инструкции $ Fx были оставлены свободными, чтобы позволить сторонним поставщикам добавлять свои собственные инструкции, но более поздние версии 65C02 стандартизировали набор инструкций по изменению битов, разработанный Rockwell Semiconductor. LDX #constant

язык ассемблера

Оператор языка ассемблера 6502 состоит из трехсимвольной мнемоники инструкции, за которой следуют любые операнды. Команды, которые не принимают отдельный операнд, а нацелены на один регистр на основе режима адресации, объединяют целевой регистр в мнемонике команд, поэтому ассемблер использует INXвместо INC Xувеличения регистра X.

Таблица инструкций

Матрица кодов операций для набора команд 6502
Режимы адресации: A  - аккумулятор, #  - немедленный, zpg  - нулевая страница, abs  - абсолютный, ind  - косвенный, X  - индексируется регистром X, Y  - индексируется регистром Y, rel  - относительный
Высокий клев Низкий клев
0 1 2 4 5 6 8 9 А C D E
0 BRK ORA ( инд., X) ORA zpg ASL zpg PHP ORA # ASL A ORA abs ASL абс
1 BPL отн. ORA ( инд.), Y ORA zpg, X ASL zpg, X CLC ORA абс, Y ORA абс, X ASL абс, X
2 JSR абс И ( ind, X) BIT zpg И zpg ROL zpg PLP А ТАКЖЕ # ROL A БИТ абс И пресс ROL абс
3 ИМТ отн. И ( инд), Y И zpg, X ROL zpg, X SEC И абс, Y И абс, X ROL абс, X
4 RTI EOR ( инд., X) EOR zpg ЛСР zpg PHA EOR № ЛСР А JMP абс ПНП абс ЛСР абс
5 BVC rel EOR ( инд.), Y EOR zpg, X ЛСР zpg, X CLI EOR абс, Y ПНП абс, X ЛСР абс, X
6 РТС АЦП ( инд., X) ADC zpg ROR zpg PLA АЦП № ROR A JMP ( инд.) АЦП абс ROR абс
7 BVS rel АЦП ( инд.), Y АЦП zpg, X ROR zpg, X SEI АЦП абс, Y АЦП абс, X ROR абс, X
8 STA ( инд, X) STY zpg STA zpg STX zpg DEY TXA STY abs STA абс STX абс
9 BCC rel STA ( инд.), Y STY zpg, X STA zpg, X STX zpg, Y ТЯ STA абс, Y TXS STA абс, X
А LDY # LDA ( инд., X) LDX # LDY zpg LDA zpg LDX zpg ВРЕМЯ LDA № НАЛОГ LDY абс LDA абс LDX абс
B BCS rel LDA ( инд.), Y LDY zpg, X LDA zpg, X LDX zpg, Y CLV LDA абс, Y TSX LDY абс, X LDA абс, X LDX абс, Y
C CPY # CMP ( инд., X) CPY zpg CMP zpg DEC zpg INY CMP # DEX CPY абс CMP абс DEC абс
D BNE отн. CMP ( инд.), Y CMP zpg, X DEC zpg, X CLD CMP абс, Y CMP абс, X DEC абс, X
E CPX # SBC ( инд., X) CPX zpg SBC zpg INC zpg INX SBC № NOP CPX абс SBC абс INC абс
F BEQ rel SBC ( инд.), Y SBC zpg, X INC zpg, X САС SBC абс, Y SBC абс, X INC абс, X
Пустые коды операций (например, F2) и все коды операций, младшие полубайты которых равны 3, 7, B и F, не определены в наборе команд 6502.
Детальное поведение
Кристалл процессора 6502 с нарисованными NMOS-транзисторами и этикетками, намекающими на функциональность компонентов 6502.

Вход немаскируемого прерывания (NMI) процессора чувствителен к фронту, что означает, что прерывание запускается по заднему фронту сигнала, а не по его уровню. Смысл этой функции заключается в том, что схема прерывания с проводным ИЛИ не поддерживается. Однако это также предотвращает возникновение вложенных прерываний NMI до тех пор, пока оборудование не сделает вход NMI снова неактивным, часто под контролем обработчика прерываний NMI.

Одновременная установка линий аппаратных прерываний NMI и IRQ (маскируемых) приводит к игнорированию IRQ. Однако, если линия IRQ остается утвержденной после обслуживания NMI, процессор немедленно ответит на IRQ, поскольку IRQ чувствителен к уровню. Таким образом, в конструкции 6502 был установлен своего рода встроенный приоритет прерывания.

Флаг B устанавливается при помощи периодической выборки 6502 выходного сигнала детектора фронта NMI и входа IRQ. Низкий уровень сигнала IRQ распознается только в том случае, если IRQ разрешены флагом I. Если таким образом обнаруживается запрос NMI или (маскируемое) IRQ, флаг B устанавливается в ноль и заставляет процессор выполнять следующую команду BRK вместо выполнения следующей инструкции на основе счетчика программ.

Затем инструкция BRK помещает статус процессора в стек, при этом бит флага B устанавливается в ноль. В конце выполнения инструкция BRK сбрасывает значение флага B на единицу. Это единственный способ изменить флаг B. Если инструкция, отличная от инструкции BRK, помещает флаг B в стек как часть состояния процессора, флаг B всегда имеет значение один.

Переход от низкого к высокому на входном выводе SO устанавливает бит состояния переполнения процессора. Это можно использовать для быстрого отклика на внешнее оборудование. Например, драйвер устройства высокоскоростного опроса может опрашивать оборудование один раз за три цикла с помощью BVCинструкции Branch-on-oVerflow-Clear (), которая выполняет переход к самому себе до тех пор, пока переполнение не будет установлено нарастающим фронтом SO. Commodore 1541 и другие Commodore дискеты диски используют эту технику, чтобы определить, когда сериализатор готов передать другие байты данных диска. Аппаратное и программное обеспечение системы должно гарантировать, что SO не произойдет во время арифметической обработки и нарушит вычисления.

Вариации и производные

Существовало множество вариантов оригинальной NMOS 6502.

Подпись
Компания Модель Описание
6502A Чип 1,5 МГц, представленный в Asteroids Deluxe.
6502B Версия 6502 способна работать на максимальной скорости 2 МГц вместо 1. Буква B использовалась в Apple III, BBC Micro и, с тактовой частотой 1,79 МГц, в ранних 8-битных компьютерах Atari.
6502C «Официальный» 6502C был версией оригинального 6502, способной работать на частоте до 4 МГц.

Не путать с SALLY, нестандартным 6502, разработанным для Atari (и иногда называемым ими «6502C»), ни с одноименным 65C02.

SALLY / C014806 / "6502C" Пользовательский вариант 6502, разработанный для Atari, используемый в более поздних 8-битных компьютерах Atari, а также в консолях Atari 5200 и Atari 7800.

Имеет сигнал HALT на контакте 35 и сигнал R / W на контакте 36 (эти контакты не подключены (N / C) на стандартном 6502). При нажатии HALT на низком уровне часы фиксируются, а процессор приостанавливается. Это использовалось для обеспечения прямого доступа к памяти (DMA) видеосхемы.

Хотя в документации Atari иногда упоминается как «6502C», это не то же самое, что «официальный» 6502C, и сам чип никогда не помечается как таковой.

Технология MOS 6503 Уменьшенная возможность адресации памяти (4 КБ) и отсутствие входа RDY в 28-выводном DIP-корпусе (с опущенными выводами фазы 1 (OUT), SYNC, резервными Vss и SO 6502).
Технология MOS 6504 Уменьшенная возможность адресации памяти (8 КБ), без NMI и без входа RDY, в 28-контактном DIP-корпусе (с фазой 1 (OUT), SYNC, резервными выводами Vss и SO 6502 также опущены).
Технология MOS 6505 Уменьшенная возможность адресации памяти (4 КБ) и отсутствие NMI в 28-контактном DIP-корпусе (также опущены контакты фазы 1 (OUT), SYNC, резервные Vss и SO 6502).
Технология MOS 6506 Уменьшенная возможность адресации памяти (4 КБ), без NMI и без входа RDY, но все 3 тактовых вывода 6502 (т. Е. Двухфазный выходной тактовый сигнал) в 28-выводном DIP-корпусе (с SYNC, резервным Vss, и контакты SO 6502 также опущены).
Технология MOS 6507 Уменьшенная возможность адресации памяти (8 КБ) и отсутствие прерываний в 28-выводном DIP-корпусе (также опущены выводы фазы 1 (OUT), SYNC, резервные Vss и SO 6502). Этот чип использовался в игровой системе Atari 2600.
Технология MOS 6508 Имеет встроенный 8-битный порт ввода / вывода и 256 байт внутренней статической ОЗУ.
Технология MOS 6509 Может адресовать до 1 МБ ОЗУ как 16 банков по 64 КБ и использовался в серии Commodore CBM-II.
Технология MOS 6510 Имеет встроенный 6-битный программируемый порт ввода / вывода и использовался в Commodore 64. 8500 фактически является версией HMOS 6510 и заменил ее в более поздних версиях C64.
Технология MOS 6512 6513 6514 6515 Каждая из технологий MOS 6512, 6513, 6514 и 6515 полагается на внешние тактовые импульсы вместо использования внутреннего тактового генератора, такого как 650x (например, 6502). Это было использовано в некоторых проектах, где часы могли работать асимметрично, увеличивая общую производительность процессора.

6512 - это модель 6502 с двухфазным тактовым входом для внешнего тактового генератора вместо встроенного тактового генератора. 6513, 6514 и 6515 аналогичным образом эквивалентны (соответственно) 6503, 6504 и 6505 с тем же входом 2-фазной синхронизации.

6512 использовался в BBC Micro B + 64.

Ricoh 2A03 6502, включая блок обработки звука и не имеющий режима BCD, используемый в Nintendo Entertainment System.
Технология MOS 6591 6592 Система на микросхеме включает в себя полноценный Atari 2600 в 48-контактном DIP-корпусе.
WDC 65C02 КМОП- версия NMOS 6502, разработанная Биллом Меншем из Western Design Center (WDC), отличается сниженным энергопотреблением, поддержкой гораздо более высоких тактовых частот, новыми инструкциями, новыми режимами адресации для некоторых существующих инструкций и исправлением ошибок NMOS, например JMP ($xxFF)ошибка.
WDC 65SC02 Вариант WDC 65C02 без отдельных операций манипулирования битами (RMB, SMB, BBR и BBS). Это ядро, работающее на частоте 4 МГц, использовалось в основной системной ИС Atari Lynx.
CSG (технология MOS) 65CE02 Производная CMOS, разработанная Commodore Semiconductor Group (CSG), ранее называвшаяся MOS Technology.
Rockwell R6511Q R6500 / 11, R6500 / 12, R6500 / 15 "Однокристальные микрокомпьютеры " Усовершенствованные версии процессора на базе 6502, включая отдельные операции манипулирования битами (RMB, SMB, BBR и BBS), 192-байтовое ОЗУ на кристалле с нулевой страницей, UART и т. Д.
Rockwell R65F11 R65F12 Rockwell R65F11 (представленный в 1983 году) и более поздний R65F12 являются улучшенными версиями процессора на базе 6502, также включающими операции индивидуальной обработки битов (RMB, SMB, BBR и BBS), внутрикристаллическое ОЗУ с нулевой страницей, на чипе Forth ПЗУ ядра, UART и т. д.
GTE G65SC102 Программное обеспечение совместимо с 65C02, но имеет немного другую распиновку и схему генератора. BBC Master Turbo включена версия на 4 МГц этого процессора на сопроцессор карте, которая также может быть куплена отдельно и добавляется к Master 128.
Rockwell R65C00 R65C21 R65C29 R65C00, R65C21 и R65C29 имели две улучшенные CMOS 6502 в одной микросхеме, а R65C00 и R65C21 дополнительно содержали 2 КБ ПЗУ с программированием по маске.
CM630 Клон 6502 Восточного блока с частотой 1 МГц, который использовался в Pravetz 8A и 8C, болгарских клонах серии Apple //.
Технология MOS 7501 8501 Варианты 6510 (сам по себе усовершенствованный 6502), представленные в 1984 году. Они увеличили количество контактов порта ввода / вывода с 6 до 7, но опускали контакты для немаскируемого прерывания и вывода часов. Используется в компьютерах Commodore C-16, C-116 и Plus / 4. Основное различие между процессорами 7501 и 8501 заключается в том, что 7501 был изготовлен с использованием процесса HMOS-1, а 8501 - с использованием HMOS-2.
Технология MOS 8500 Представлен в 1985 году как HMOS- версия модели 6510 (которая, в свою очередь, основана на 6502). За исключением модификации процесса, 8500 практически идентичен версии NMOS 6510. Он заменил 6510 в более поздних версиях Commodore 64.
Технология MOS 8502 Разработан MOS Technology и используется в Commodore 128. Основанный на MOS 6510, используемой в Commodore 64, 8502 мог работать с двойной тактовой частотой по сравнению с 6510. Семейство 8502 также включает MOS 7501, 8500 и 8501.
Хадсон Софт HuC6280 Улучшенная версия WDC 65C02 японской видеоигровой компании Hudson Soft. Изготовлено для них Seiko Epson и NEC для SuperGrafx. Наиболее заметным продуктом, использующим HuC6280, является игровая консоль NEC TurboGrafx-16.

16-битные производные

Western Design Center разработал и в настоящее время производит процессор W65C816S, 16-разрядный преемник 65C02 со статическим ядром, со значительно расширенными функциями. W65C816S - это более новый вариант 65C816, который является ядром компьютера Apple II GS и основой процессора Ricoh 5A22, который используется в системе Super Nintendo Entertainment System. W65C816S включает незначительные улучшения по сравнению с 65C816, которые делают новый чип не точной аппаратно-совместимой заменой более раннего. Среди этих улучшений было преобразование в статическое ядро, которое позволяет останавливать тактовую частоту в любой фазе без потери данных регистрами. W65C816S, доступный через дистрибьюторов электроники, с марта 2020 года официально рассчитан на работу на частоте 14 МГц.

Western Design Center также разработал и произвел 65C802, который представлял собой ядро ​​65C816 с 64-килобайтным адресным пространством в корпусе, совместимом с выводами 65 (C) 02. 65C802 может быть дооснащен платой 6502 и будет работать как 65C02 при включении питания, работая в «режиме эмуляции». Как и в случае с 65C816, последовательность из двух инструкций переключит 65C802 в «собственный режим», открывая его 16-битный накопитель и индексные регистры, а также другие расширенные функции 65C816. 65C802 не получил широкого распространения; новые разработки почти всегда строились вокруг 65C816, в результате чего производство 65C802 было прекращено.

Пример кода

Следующий исходный код языка ассемблера 6502 предназначен для подпрограммы с именем, которая копирует строку символов с завершающим нулем из одного места в другое, преобразуя символы верхнего регистра в буквы нижнего регистра. Копируемая строка является «источником», а строка, в которой сохраняется преобразованный источник, является «местом назначения». TOLOWER

 0080 0080 00 04 0082 00 05 0600 0600 A0 00 0602 B1 80 0604 F0 11 0606 C9 41 0608 90 06 060A C9 5B 060C B0 02 060E 09 20 0610 91 82 0612 C8 0613 D0 ED 0615 38 0616 60 0617 91 82 0619 18 061A 60 061B
; TOLOWER: ; ; Convert a null-terminated character string to all lower case. ; Maximum string length is 255 characters, plus the null term- ; inator. ; ; Parameters: ; ; SRC - Source string address ; DST - Destination string address ; ORG $0080 ; SRC.WORD $0400 ;source string pointer DST.WORD $0500 ;destination string pointer ; ORG $0600 ;execution start address ; TOLOWER LDY #$00 ;starting index ; LOOP LDA (SRC),Y ;get from source string BEQ DONE ;end of string ; CMP #'A' ;if lower than UC alphabet... BCC SKIP ;copy unchanged ; CMP #'Z'+1 ;if greater than UC alphabet... BCS SKIP ;copy unchanged ; ORA #%00100000 ;convert to lower case ; SKIP STA (DST),Y ;store to destination string INY ;bump index BNE LOOP ;next character ; ; NOTE: If Y wraps the destination string will be left in an undefined ; state. We set carry to indicate this to the calling function. ; SEC ;report string too long error amp;... RTS ;return to caller ; DONE STA (DST),Y ;terminate destination string CLC ;report conversion completed amp;... RTS ;return to caller ;.END
Ошибки и причуды

У 6502 было несколько ошибок и причуд, которые необходимо было учесть при программировании:

  • Самые ранние версии 6502, такие как поставляемые с некоторыми компьютерами KIM-1, имели серьезную ошибку в инструкции ROR (повернуть правую память или аккумулятор). Операция ROR в этих микросхемах фактически является инструкцией ASL (арифметический сдвиг влево), которая не влияет на бит переноса в регистре состояния. MOS полностью исключила инструкции из документации по микросхемам из-за дефекта, пообещав, что ROR появится на чипах 6502, начиная с 1976 года. Подавляющее большинство существующих на сегодняшний день чипов 6502 не обнаруживают этой ошибки.
  • Семейство NMOS 6502 имеет множество недокументированных инструкций, которые варьируются от одного производителя микросхемы к другому. Декодирование команд 6502 реализовано в массиве аппаратной логики (подобном массиву программируемой логики ), который определен только для 151 из 256 доступных кодов операций. Остальные 105 запускают странные и иногда трудно предсказуемые действия, такие как сбой процессора, последовательное выполнение двух действительных инструкций, выполнение странных сочетаний двух инструкций или просто бездействие. Компания Eastern House Software разработала «Trap65», устройство, которое подключается между процессором и его разъемом для преобразования (перехвата) нереализованных кодов операций в инструкции BRK (программное прерывание). Некоторые программисты использовали эту функцию для расширения набора инструкций 6502, предоставив функциональные возможности для нереализованных кодов операций с помощью специально написанного программного обеспечения, перехваченного в векторе 0xFFFE инструкции BRK. Все неопределенные коды операций были заменены инструкциями NOP в 65C02, расширенной версии CMOS 6502, хотя и с различными размерами байтов и временем выполнения. В 65C802 / 65C816 все 256 кодов операций выполняют определенные операции.
  • 6502 в памяти косвенный переход инструкции, JMP (lt;addressgt;), частично нарушена. Если lt;адресgt; является шестигранной xxFF (т.е. любое слово, заканчивающееся в FF), процессор не будет переходить к адресу, сохраненному в xxFF и, xxFF+1как ожидалось, а скорее один определяется xxFF и XX00 (например, JMP ($10FF)прыгал по адресу хранится в 10FF и 1000, а не в 10FF и 1100). Этот дефект сохранялся во всей линейке NMOS, но был исправлен в производных CMOS.
  • Индексированная адресация NMOS 6502 через границы страниц будет выполнять дополнительное чтение недопустимого адреса. Эта характеристика может вызывать случайные проблемы из-за доступа к оборудованию, которое действует при чтении, например, сброса таймера или флагов IRQ, отправки квитирования ввода-вывода и т. Д. Этот дефект продолжался по всей строке NMOS, но был исправлен в производных CMOS, в который процессор выполняет дополнительное чтение последнего байта инструкции.
  • Инструкции 6502 чтения-изменения-записи выполняют один цикл чтения и два цикла записи. Сначала считанные неизмененные данные записываются обратно, а затем записываются измененные данные. Эта характеристика может вызвать проблемы из-за двойного доступа к оборудованию, которое действует при записи. Эта аномалия продолжалась во всей линейке NMOS, но была исправлена ​​в производных CMOS, в которых процессор выполняет два цикла чтения и один цикл записи. Практика защитного программирования обычно позволяет избежать этой проблемы, не выполняя инструкции чтения / изменения / записи в аппаратных регистрах.
  • Флаги состояния N (отрицательный результат), V (переполнение знакового бита) и Z (нулевой результат) обычно не имеют смысла при выполнении арифметических операций, когда процессор находится в режиме BCD, поскольку эти флаги отражают двоичный, а не BCD результат. Это ограничение было снято в производных CMOS. Следовательно, эту функцию можно использовать для отличия процессора CMOS от версии NMOS.
  • Если при возникновении аппаратного прерывания 6502 находится в режиме BCD, он не вернется в двоичный режим. Эта характеристика может привести к неясным ошибкам в подпрограмме обслуживания прерывания, если ей не удастся сбросить режим BCD перед выполнением любых арифметических операций. Например, Commodore 64 «сек Kernal не правильно обрабатывать этот процессор характеристики, требуя, чтобы IRQs быть отключен или повторно векторным во время BCD математических операций. Эта проблема также была решена в производных CMOS.
  • Набор команд 6502 включает BRK (код операции $ 00), который технически является программным прерыванием (по духу аналогично мнемонике SWI процессоров Motorola 6800 и ARM ). BRK чаще всего используется для прерывания выполнения программы и запуска монитора машинного языка для тестирования и отладки во время разработки программного обеспечения. BRK можно также использовать для маршрутизации выполнения программы с помощью простой таблицы переходов (аналогично тому, как Intel 8086 и производные от них обрабатывают программные прерывания по номеру). Однако, если аппаратное прерывание происходит, когда процессор получает команду BRK, версия процессора NMOS не сможет выполнить BRK и вместо этого продолжит работу, как если бы произошло только аппаратное прерывание. Эта ошибка была исправлена ​​в реализации CMOS процессора.
  • При выполнении инструкций JSR (переход к подпрограмме) и RTS (возврат из подпрограммы) адрес возврата, помещенный в стек JSR, является адресом последнего байта операнда JSR (то есть самого старшего байта адреса подпрограммы), а не адрес следующей инструкции. Это связано с тем, что фактическое копирование (из программного счетчика в стек и затем наоборот) происходит до автоматического увеличения счетчика программы, которое происходит в конце каждой инструкции. Эта характеристика останется незамеченной, если код не проверит адрес возврата, чтобы получить параметры в потоке кода (идиома программирования 6502, задокументированная в Техническом справочном руководстве ProDOS 8). Он и по сей день остается характерной чертой 6502 деривативов.
Смотрите также
Примечания
использованная литература

Цитаты

Библиография

дальнейшее чтение
Даташиты и руководства
Книги
  • 6502 Заявочная книга ; 1-е изд; Родней Закс ; Sybex; 281 страница; 1979; ISBN   978-0895880154. (архив)
  • 6502 Программирование на языке ассемблера ; 2-е изд; Лэнс Левенталь; Осборн / Макгроу-Хилл; 650 страниц; 1986; ISBN   978-0078812163. (архив)
  • 6502 подпрограммы языка ассемблера ; 1-е изд; Лэнс Левенталь и Уинтроп Сэвилл; Осборн / Макгроу-Хилл; 550 страниц; 1982; ISBN   978-0931988592. (архив)
  • 6502 игры ; 1-е изд; Родней Закс; Sybex; 292 страницы; 1980; ISBN   978-0895880222. (архив)
  • 6502 Руководство пользователя ; 1-е изд; Джозеф Карр; Отдыхай; 288 страниц; 1984; ISBN   978-0835970020. (архив)
  • Расширенное программирование 6502 ; 1-е изд; Родней Закс; Джон Уайли и сыновья; 292 страницы; 1982; ISBN   978-0895880895. (архив)
  • Машинный язык для начинающих - Программирование на машинном языке персонального компьютера для компьютеров Atari, VIC, Apple, C64 и PET ; 1-е изд; Ричард Мэнсфилд; Вычислить! Публикации; 350 страниц; 1983; ISBN   978-0942386110. (архив)
  • Программирование 6502 ; 4-е изд; Родней Закс; Sybex; 408 страниц; 1983; ISBN   978-0895881359. (архив)
  • Программирование 65816 - включая 6502, 65C02, 65802 ; 1-е изд; Дэвид Айз и Рон Личти; Прентис Холл; 636 страниц; 1986; ISBN   978-0893037895. (архив)
Справочные карты
  • 6502 Мгновенная справочная карта микропроцессора ; Джеймс Льюис; Micro Logic; 2 страницы; 1980г. (Архив)
внешние ссылки
Симуляторы / Эмуляторы
Доски
ПЛИС
Последняя правка сделана 2023-12-31 10:58:33
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте