Это процессор с очень драматической судьбой. Ни один другой процессор в этом с ним сравниться не может. Его появление и внедрение сопровождалось очень большими по размаху и последствиям событиями. Перечислю некоторые из них:
1) ослабление фирмы-гиганта Motorola, возможности которой какое-то время превосходили возможности Intel;
2) уничтожение фирмы MOS Technology;
3) прекращение развития 6502 и его стагнационный выпуск практически без модернизации.
Всё началось с того, что в Motorola по неизвестным вполне причинам отказались поддержать инициативного инженера, Чака Педла, предлагавшего улучшить в целом довольно посредственный процессор 6800, сделать его быстрее и, главное, значительно дешевле. Ему и пришлось покинуть компанию и продолжить свои наработки в небольшой, но перспективной фирме MOS Technology. Он смог уговорить семь других инженеров последовать за ним и только один из них впоследствии вернулся в Motorola. В MOS Technology они вскоре подготовили два процессора 6501 и 6502, сделанных по технологии NMOS. Первый был совместим по разъему с 6800, а в остальном они были идентичны. Команде 6501/6502 удалось успешно внедрить новые технологию производства чипов, что радикально удешевило новые процессоры. В 1975 MOS Technology могла предлагать 6502 за $25, в то время как стартовая цена на Intel 8080 и Motorola 6800 была в 1974 $360. В 1975 Motorola и Intel снизили цены, но они все равно были близки к $100. Специалисты MOS Technology утверждали, что их процессор до 4-х раз быстрее, чем 6800. Мне это кажется сомнительным: 6502 гораздо быстрее может работать с памятью, но второй аккумулятор 6800 очень ускорял многие вычисления. Оценочно могу предположить, что 6502 был в среднем быстрее не более, чем в 2 раза. Как следует из некоторых публикаций уже в 1975 в MOS Technology были планы проводить расширение 6502 до 16-разрядного уровня. Однако, успели только выпустить чуть улучшенный чип в 1976, поддерживающий инструкцию вращения вправо.
MOS 6501 рвет конкурентов: Intel и Motorola уже вычеркнуты!
Но Motorola начала судебный процесс против своих бывших сотрудников – те якобы использовали технологические секреты фирмы. В ходе процесса удалось установить, что один из инженеров, ушедших из Motorola, вынес некоторые конфиденциальные документы по 6800, действуя вопреки установкам своих коллег. Был ли это его собственный поступок или за ним стояли какие-то направляющие силы до сих пор неизвестно. В итоге Motorola вынудила MOS Technology, чьи финансовые возможности были весьма невелики, выплатить значительную сумму в $200000 и к отказаться от производства 6501. Intel в похожей ситуации с Zilog действовала совсем не так. Хотя надо признать, что MOS Technology действовола иногда слишком рисковано, когда пыталась использовать большие деньги, потраченные Motorola на продвижение 6800, в своих целях. Ирония ситуации заключается в том, что, как отмечал лидер команды разработчиков 6502, они с 6501 просто хотели сделать "предупредительный выстрел" и посмотреть, что из этого получится. Цели предлагать использовать 6501 вместо 6800 не было. Реально 6501 никогда и не продавался. Тут ещё можно заметить, что 6501 был всё же не совсем совместим с аппаратурой для 6800, он и 6502, в частности, не поддерживал работу с тремя состояниями выводов и поэтому не мог использоваться напрямую, например, с аппаратурой с прямым доступом к памяти, как 6800.
Мы до сих пор в точности не знаем, почему Motorola выиграла тяжбу с MOS Technologies. Возможно просто у MOS Technologies закончились деньги, их на процесс было потрачено до $800000, а деньги тогда были в несколько раз весомее, чем сейчас. Хотя были и другие факторы. Вроде упомянутого выноса документов. Известно ещё, что, например, чип параллельного интерфейса 6520, производимый в MOS Technology, был точной копией Motorola 6820. Всем, кто ушёл из Motorola, пришлось подписать своё согласие с решением по иску, так как перед началом процесса они подписали бумагу с тем, что они признают любой его результат.
Далее в истории появляется легендарная фирма Commodore и её не менее легендарный основатель Jack Tramiel, в тени которого находилась фигура главного финансиста фирмы, определяющего её политику – человека по имени Irving Gould. Джек получил кредит у Ирвинга и на эти деньги, используя несколько, мягко сказать, недобросовестную тактику, вынудил MOS Technology стать частью Commodore. После чего, возможно и вопреки желанию Трамела, вынужденного уступать Гуду, разработка 6502 практически остановилась и это при том, что ещё в 1976 удалось произвести опытные образцы 6502 с рабочими частотами до 10 МГц, хотя сообщение об этом появилось только спустя многие годы от человека по имени Bill Mensch (он был в команде, покинувшей Motorola), который не раз делал громкие, но по большому счету пустые заявления и сыграл в судьбе 6502 довольно неоднозначную роль. Чак Педдл навсегда был отстранён от разработки процессоров. Работать с 6502 продолжили не только в Commodore, но и в фирме, созданной Биллом Меншем, Western Design Center (WDC). Любопытно, что никто из прежней команды 6502 не работал с ним в дальнейшем. Кстати, это именно Бил Менш разработал упомянутый выше 6820, который превратился в 6520. Возможно если бы развитие 6502 не было остановлено, то он мог бы превратиться в основной процессор для персональных компьютеров. У IBM, например, были планы по созданию своего первого массового ПК на базе 6502. В качестве первого шага в этом направлении там собирались купить компанию Atari, которая одной из первых стала использовать этот процессор.
Но на этом драма вокруг 6502 не закончилась. В 1980 в журнале AIM65 Interactive фирмы Rockwell появилась короткая анонимная статья, о том, что все 6502 несут в себе опасного бага, который получил название JMP (xxFF). Тон статьи предполагает, что-то совершенно из ряда вон выходящее. Впоследствии этот настрой перешёл в позицию фирмы Apple по этому вопросу и стал неким мейнстримом. Хотя никакого "бага", строго говоря, не было. Конечно, специалисту, привыкшему к комфортным процессорам больших систем тех лет, одна из особенностей, вполне уместных и даже полезных среди микропроцессоров, могла показаться чем-то раздражающим, багом. Но на самом деле это, задевшее чьи-то чувства, поведение было описано в официальной документации от 1976 года и в учебниках по программированию, вышедших до появления упомянутой статьи. "Баг" был ликвидирован Билом Меншем, сделавшим 65С02 (CMOS 6502) к 1982. Автор этого материала сам сталкивался несколько раз с проблемой этого "бага". Ничего не зная о нем, писал программы для Коммодоров. Потом одну из них перенес на системы, где использовался набор команд 65С02. Возникла несовместимость, пришлось менять коды, делать условную компиляцию. Код для 65С02 получился более громоздким и медленным. Потом поднимал этот вопрос на форуме 6502.org, где большинство участников из мира Apple. Спросил, может ли кто-нибудь привести пример, когда означенный "баг" рушил программу. Получил только эмоциональные и общие замечание, конкретного примера так и не было предложено. Иронично, что в официальной документации WDC "баг" не называют прямо багом, а скорее какой-то странностью, вывертом.
Баг!!!
В то время как Intel, Motorola и другие сделали уже 16-битные процессоры новых поколений, 6502 был лишь микроскопически улучшен и сделан искусственно частично несовместимым с самим собой. Даже если сравнивать улучшения , сделанные в Motorola 6801 по сравнению с 6800 или в Intel 8085 по сравнению с 8080, то они окажутся гигантскими по сравнению с теми, что были сделаны в 65C02. Кроме того, Intel и Motorola сделали их значительно раньше. В 65C02 был сделан ряд небольших изменений, которые, в частности, привели к изменению в ходе исполнения нескольких инструкций, которые стали медленнее на такт, но при этом в каком-то надуманном академическом смысле они стали более правильными. Речь идёт об упомянутом "баге" и инструкциях десятичной арифметики. Последние были "скорректированы" так, что флаги oVerflow, Negative и Zero стали работать "корректно". Однако, при работе с десятичными числами на 6502 (и других микропроцессорах) знак не поддерживается и соответственно флаги N и V не имеют для них никакого смысла. Только коррекция флага нуля имеет какой-то смысл, но крайне незначительный. Были также добавлены десятки новых инструкций, абсолютное большинство которых лишь занимали кодовое пространство, почти ничего не добавляя к возможностям 6502, что оставляло меньше кодов для возможных дальнейших модернизаций. Но, надо признать, что несколько новых инструкций оказались ожидаемыми и полезными, например, BIT с новыми адресными режимами и JMP (ABX,X)
. И опять надо признать, что новые инструкции позволяют получать чуть-чуть более быстрые и компактные коды. Новая инструкция WAI позволяет реагировать на прерывания совсем без задержек! Кроме того, четыре сравнительно редкие инструкции стали на 65C02 иногда на такт быстрее. Можно ещё добавить, что 65C02 стал занулять флаг десятичного режима при прерывании, что позволяет иногда делать обработчик прерываний на 2 цикла быстрее и на 1 байт короче – это крошечное улучшение хорошо иллюстрирует общий объем улучшений, сделанных в 65C02.
65C02 был лицензирован многим фирмам, в частности, NCR, GTE, Rockwell, Synertek и Sanyo. Он использовался в Apple II, начиная с моделей IIe, хотя многие IIe использовали NMOS 6502. Вариант 65С02 6512 использовался также в поздних моделях BBC Micro. Atari использовала NMOS 6502, хотя там была попытка перехода на CMOS, но из-за обнаруженных проблем, в частности, на 65C02 не шла известная игра Asteroids, от этих попыток отказались. Commodore так и не выпустил компьютера на базе CMOS 6502, хотя в некоторые прототипы его использовали. Фирмы Synertek и Rockwell помимо CMOS 6502 производили и NMOS 6502. Кстати, NMOS 6502 имеет свой набор недокументированных инструкций, природа которых совершенна отлична от "секретных" команд 8085. В 6502 эти инструкции появились как побочный эффект, поэтому большинство из них скорее бесполезны, но несколько, например, загрузка или выгрузка одной командой сразу двух регистров и некоторые другие могут сделать код более быстрым и компактным.
Интересно, что NMOS 6502, совместимого с 65C02, так и не сделали. Хотя в начале 80-х технология CMOS не имела явных преимуществ (кроме пониженного энергопотребления) перед NMOS и её развитием HMOS и при этом была заметно дороже. Стоит конечно заметить, что WDC смогла создать CMOS процессор всего лишь спустя несколько лет после того, как Intel и Motorola сделали CMOS варианты своих процессоров 8085 и 680x. В этом она значительно опередила Zilog, где CMOS вариант Z80 был создан только к 1987 году. Однако, если CMOS 8085 и Z80 сразу нашли широкое употребление в мобильных компьютерах, то низкое энергопотребление 65C02 нашло свое применение в компьютерах сравнительно поздно, могу назвать лишь игровую консоль Atari Lynx, производившуюся с 1989. Стоит ещё заметить, что само по себе внедрение технологии CMOS – это вполне рутинный процесс, через который другие процессоры (x86, 68k, ...) прошли практически незаметно.
Были и другие попытки модернизировать 6502. В 1979 появилась статья, что для компьютеров Atari готовится к производству процессор 6509 (не путать с появившимся позже процессором с таким же названием фирмы Commodore), в котором ожидалось ускорение исполнения команд на 25% и много новых инструкций. Но по неизвестным в точности причинам производство этого процессора так и не состоялось. Commodore проводила лишь микроскопические модернизации. С точки зрения программирования самым интересным является процессор 6509, который пусть и в очень примитивной форме с помощью всего двух специально выделенных для этой цели инструкций и двух байт нулевой страницы позволяет адресовать до 1 МБ памяти. В сверхпопулярных Коммодорах 64 и 128 стояли процессоры 6510/8510, а в менее удачливых серии 264 – 7501/8501. Эти процессоры имели лишь соответственно 6 и 7 встроенных битовых портов ввода-вывода, при этом 7501/8501 не поддерживали немаскируемых прерываний. Кроме того, на этих процессорах реализовали поддержку с логикой трех состояний, что было необходимо для работы с видеоконтроллерами на C64 и C264. Фирмы Rockwell и WDC производили вариант 65C02 со своим расширенным 32 битовыми операциями (похожи на битовые инструкции z80) набором инструкций, однако, насколько мне известно, в компьютерах такие процессоры не использовались и сами эти битовые инструкции имели значение скорее только для использования во встроенных системах. Это расширение, кстати, тоже произвёл Билл Менш. Получается, что Билл работал над 6502, только имея конкретные заказы, и никогда не пытался сам в чем-то этот процессор улучшить.
Последняя сцена драмы с участием 6502 обозначилась в недопущении компьютеров на базе 6502 с частотой 2 МГц на рынок США в первой половине 80-х. Это коснулось иностранца-англичанина BBC Micro, их производившая фирма Acorn сделала большую партию компьютеров для США, но, как оказалось, зря. Сработала какая-то блокировка и компьютеры пришлось срочно переделывать под европейские стандарты. Полуамериканские, но формально канадские компьютеры Commodore CBM II (1982) со стильным Porsche-дизайном, несмотря на некоторые проблемы (в частности, по соответствию стандартам на электрооборудование), были всё же допущены. Однако почему-то Commodore продавала эти компьютеры, как и позднее компьютеры Amiga, в основном за пределами США. Более того, с 1984 Commodore вообще тихо свернула производство своих оригинальных офисных компьютеров и стала вместо них производить свои IBM PC совместимые клоны. Уничтожив, тем самым, идею вертикальной интеграции, ради которой Джек Трамел, с одной стороны, фактически уничтожил инновационную компанию MOS Technology, а с другой, попал в зависимость от Гуда. Как минимум одна из публикаций даже пишет, что Джеку пришлось продать свою душу ради этой идеи! Последним в списке неудачников оказался 100% американский Apple III (1980) – известно, что Стив Джобс, как и менеджмент Apple в целом, сделали много, чтобы этот этот компьютер не состоялся. Джобс требовал явно невыполнимых спецификаций, а менеджмент – нереальных сроков. Удивительно, что по одному из требований менеджмента, Apple III должен был быть только ограниченно совместимым с Apple II! В Apple III Plus, выпущенном в 1983, удалось устранить некоторые недостатки Apple III, но менеджмент Apple тихо закрыл проект в 1984 возможно из-за нежелания иметь конкуренцию с компьютером Macintosh. Только в 1985, когда эпоха 8-битной техники начала уходить, появился Commodore 128, который мог использовать в одном из своих режимов 6502 с тактом на 2 МГц. Но и тут получился скорее анекдот, так как этот режим практически не поддерживался и программ для него практически нет. В этом же году должен был быть выпущен перспективный наколенник Commodore LCD с 65C02 @2MHz. Однако, несмотря на успешную публичную демонстрации проект был почему-то закрыт. Только во второй половине 80-х в США стали производить приставки-ускорители для Apple II, а с 1988 и модель Apple IIc+ c процессором на 4 МГц. Почему так случилось? Возможно потому, что 6502 на 2 или 3 МГц (а такие уже производились в самом начале 80-х) на ряде задач и в особенности с играми могли успешно конкурировать с системами на основе Intel 8088 или Motorola 68000. В 1991 волевым решением корпорация Commodore закрыла интересный, хотя и запоздалый проект С65 на базе процессора 4510 с частотой 3.54 МГц. Чип 4510 был сделан на основе процессора 65CE02, который в свою очередь сделан на основе WDC 65C02. 65CE02 – это самый быстрый 6502, сделанный только в 1988, в нём была проведена наконец упоминавшаяся раннее оптимизация циклов, давшая 25% прирост скорости. Таким образом, процессор в С65 по быстродействию близок к системам с 6502 на 4.5 МГц. Удивительно, но этот самый быстрый 6502 с расширенным набором инструкций (в каких-то деталях это расширение получилось более удачным, чем в 65816) нигде с тех пор так и не нашёл применения.
C128 и Apple III Plus имели блок управления памятью (MMU), что позволяло использовать несколько стеков и нулевых страниц, адресовать более 64 КБ памяти, и др. В C128 MMU был искусственно урезан для работы только со 128 КБ памяти. Для BBC Micro выпускались приставки с 6502 на 3 Мгц (1984) и 4 МГц (1986).
Антиреклама – множественные Porsche PET в апартаментах злодея из Жемчужины Нила (1985) – эра "только Apple" в Голливуде ещё не наступила
Теперь несколько слов о системе команд 6502. Главная особенность этого процессора в том, что его сделали почти максимально быстрым, практически без лишних тактов, которых особенно много в процессорах 8080/8085/z80/8088/68000. Фактически это была идеология появившихся позднее и под прямым влиянием 6502 процессоров архитектуры ARM. Эта же идеология доминирует, начиная с 80486, и среди процессоров Intel. Кроме того, 6502 максимально быстро реагировал на прерывания, что делало его очень полезным в некоторых встроенных системах. У 6502 один аккумулятор и два индексных регистра, кроме того первые 256 байт памяти можно использовать в специальных командах либо как более быструю память, либо как набор 16-разрядных регистров (которые почти идентичны по своей функциональности регистрам BC и DE в 8080/z80) для довольно мощных способов адресации. Некоторые арифметические команды (сдвиги, вращение, инкремент и декремент) можно использовать с памятью непосредственно, не используя регистры. 16-разрядных команд нет – это 100% 8-битный процессор. Поддерживаются все основные флаги кроме характерного архитектуре Intel флага чётности. Есть ещё несколько необычный флаг малополезного 10-го режима, который заменил флаг полупереноса, используемый большинством других процессоров. Процессоры Intel, Zilog и Motorola используют специальные корректирующие инструкции для работы с десятичными числами, а 6502 может переключаться в 10-й режим, что делает его преимущество по скорости с 10-ми числами ещё более значительным, чем с двоичными. Очень впечатляет наличие для 6502 табличного умножения 8-битных операндов с получением 16-битного результата за менее, чем 30 тактов, при размере вспомогательной таблицы в 2048 байт. 6502 использует простейший конвейер инструкций, который позволяет ускорить время исполнения многих инструкций на 1 такт. Медленнее всего у 6502 получаются операции массового копирования памяти – от 14 тактов на байт. Система инструкций 6502 в некоторых частностях необычно асиммeтрична, например, есть инструкция загрузки регистра Y LDY addr,X
, но нет парной ей выгрузки – STY addr,X
. Есть инструкция для сброса флага переполнения, но нет парной ей для его установки. 6502 вместо этой инструкции позволяет делать установку флага переполнения через аппаратный сигнал. Такая работа с флагом переполнения позволяет использовать очень быстрый порт ввода, но для программирования арифметики как установка этого флага, так и его сброс бесполезны. Поэтому в 6510 или 7501/8501 отказались от специального способа установки флага переполнения, но совсем бесполезная теперь инструкция для его сброса осталась!
Самым главным недостатком 6502 считается маленький стек, всего 256 байт. Однако для системы с объемом памяти 64 КБ этого, как показала практика, обычно вполне достаточно. В 6502 мало регистров и поэтому нагрузка на стек меньше, чем, например, у 8080, 6809 или Z80. Кроме того, архитектура 6502 естественно предполагает организацию добавочного стека на нулевой странице – такой стек особенно хорош при работе с указателями, так как адресация типа (zp,X) идеально подходит для таких случаев. Конечно, размер такого добавочного стека очень ограничен и на многих системах не может быть больше нескольких десятков байт. Помимо этого можно организовать стеки любого объема на основе abs,X/Y-адресации. Дополнительные стеки можно использовать только для данных, например, параметров подпрограмм, для хранения адресов возврата альтернативы основному стеку нет.
Поддержка аппаратных прерываний на 6502 реализовано просто и эффективно. Для маскируемых и немаскируемых прерываний в памяти выделяется два фиксированных адреса, куда записываются адреса соответствующих обработчиков. Примерно так же, но ещё проще, позднее сделали самый популярный режим 1 прерываний в Z80. А вот программные прерывания в 6502 сделаны совсем примитивно: они используют адрес для маскируемых прерываний, что требует громоздких дополнительных программных проверок для их различения. Именно для этого среди флагов 6502 присутствует уникальный флаг программного прерывания. Кроме того, у инструкции программных прерываний нет аргумента, хотя такой аргумент можно добавлять ценой усложнения процедуры обработчика. Из-за того, что возможность для обработки программных прерываний значительно замедляет обработку аппаратных, поддержка программных прерываний довольно часто просто не реализуется.
6502 может работать параллельно с другим устройством, например, другим 6502. Такие двухпроцессорные системы встречались крайне редко. В качестве примера таких систем мне известны только несколько весьма редких моделей дисководов Commodore. Вместо второго процессора обычно использовался видеоконтроллер, который использовал общую с 6502 память.
6502 довольно хорош для симуляции других процессоров. Ещё в 70-е был написан симулятор 8080. Мне известны случаи переноса кодов с Z80, PDP-11, 8086 на платформу 6502.
65816 был выпущен WDС в 1983. Это был первый случай, когда был сделан 16-битный процессор, совместимый со своим 8-битным предшественником – для Z80 подобные разработки (Z800, Z180, Z380, eZ80, ...) стали появляться только с 1985. Кроме того, это был один из первых 16-битных процессоров, изготовленных по технологии CMOS! Можно удивиться тому, что WDC 65816 не поддерживает дополнительные битовые инструкции WDC 65C02. Интересно, что спецификации нового процессора Билл Менш получил от Apple. Конечно, это был большой шаг вперёд, но явно запоздалый и с большими архитектурными изъянами. 65816 уже никем не рассматривался как конкурент для основных процессоров Intel или Motorola – это уже был второстепенный аутсайдер, который уже как-то запрограммировано был настроен на дальнейшую потерю позиций. 65816 имел два важных плюса – он был сравнительно дешёв и почти совместим с по-прежнему весьма популярным 6502. В последующие годы Бил Менш даже не пытался как-то улучшить своё детище, сделать оптимизацию циклов, заменить адресацию нулевой страницы расширенной с использованием регистра Z (это было сделано в 65CE02), добавить хотя бы умножение, ... WDC только повышала предельные тактовые частоты, дойдя к середине 90-х до 14 МГц (такой процессор использовался в популярном ускорителе для С64 SuperCPU на частоте 20 МГц). Однако даже сейчас (2020!) WDC предлагает 65816 почему-то только на тех же 14 МГц. 65816 может использовать до 16 МБ памяти, но используемые для этого методы адресации выглядят далёкими от оптимальных. Например, индексные регистры могут быть только 8- или 16-разрядными, стек можно помещать только в первые 64 КБ памяти, только там же можно использовать удобную короткую адресацию установленной страницы (direct page — обобщение zero page), работа с памятью выше более 64 КБ сравнительна неуклюжа, ... 65816 имеет 16-разрядное АЛУ, но 8-разрядную шину данных, поэтому на арифметических операциях он лишь примерно на 50% быстрее чем 6502. 65816 может использовать 4 типа кодов и имеет два основных режима работы (всего режимов 10, в 6502 их было только 2) – это делает программирование и отладку более трудными. Как и на 8088 переходы и вызовы подпрограмм могут быть как короткими, так и длинными. И как и на 8088 работа с массивами, большими 64КБ, весьма громоздка. Тем не менее 65816, по словам Билла Менша, был выпущен в количестве более миллиарда.
Конечно, ряд команд 65816 явно дополняют пробелы в архитектуре 6502, например, команды массового копирования памяти за 7 тактов на байт, а также адресные режимы для работы со стеком. Улучшена работа с программными прерываниями. 65816 использует почти все коды инструкций (255 из 256). Последний неиспользованный код предназначен для длинных будущих инструкций, которые так и не появились. Интересно, что 65816 делался родственниками, самим Биллом и его сестрой. Кстати, упомянутая инструкция для будущих длинных команд называется WDM – это инициалы самого Билла, на котором развитие 6502 остановилось! Несколько заброшенное состояние 65816 в WDM также иллюстрируется фактом наличия в реализации этого процессора на Verilog от WDM ошибок, которые возможно не устранены до сих пор.
Apple IIx, в разработке которого активное участие принимал Стив Возняк, должен был использовать 65816, но наладить производство этого процессора удалось только в 1984 и первые партии 65816 были бракованными, что вызвало чрезмерные задержки и в итоге закрытие всего проекта.
Есть ещё вариант 65816 65802, который использует 16-разрядную шину адреса и совместим по разъему с 6502. Предлагались апгрейды для Apple II на основе этого процессора, но ускорения с таким апгрейдом возможно получить только на специально для него написанных программах.
6502 использовался в большом числе компьютерных систем, самые популярные из которых – это 8-битные Commodore, Atari, Apple, Acorn, NES. Commodore PET, в разработке которого активное участие принимал Чак Педдл, появился в продаже на полгода раньше Apple ][, хотя его массовое производство наладилось только на полгода позже Apple ][. Он и его варианты стали первыми компьютерами, широко использовавшимися в школах США и Канады, – можно только удивляться, почему Commodore так легко сдала свои позиции Apple в этом бизнесе. Также удивительно, что Commodore легко сдала свои неплохие позиции в бизнесе редактирования текстов, где впоследствие Amstrad добилась впечатляющих успехов. Как уже упоминалось выше, по неясным причинам произошел отказ от производства очень перспективной модели Commodore LCD, тем самым был проигнорирован стремительно растущий рынок мобильных устройств. Однако, Commodore VIC-20 стал первым домашним компьютером, продажи которого превзошли миллион штук. Commodore 64 стал самым массовым ПК в истории, их было продано до 17 миллионов штук. Игровые консоли Atari, производимые с 1977 до 1996, были проданы в количестве примерно 35 миллионов! Но это не рекорд, японских игровых консолей NES было продано около 62 миллионов в период с 1983 по 2003. Кстати, в NES использовали вариант 6502 фирмы Ricoh без поддержки десятичного режима. Возможно из-за его почти полной бесполезности, но возможно просто из-за нежелания связываться с патентом MOS Technology на этот режим. Можно наверное утверждать, что для большинства пользователей до конца 80-х дверью в мир цифровых технологий был именно 6502. 6502 использовался в качестве контроллера клавиатуры в компьютере Commodore Amiga, а два 6502 на 10 МГц использовались в высокопроизводительном Apple Macintosh IIfx. Процессор на основе 6502 используется в известной игрушке Томагочи, выпущенной наверное в более сотни миллионов экземпляров. 65816 применялся в довольно популярном компьютере Apple IIgs, а также в редком английском компьютере Acorn Communicator. Игровые консоли Super NES на базе 65816 производились с 1990 по 2003, их было продано около 50 миллионов. 65816 использовался также в некоторых ранних моделях электронных книг.
Интересно, что из трех массовых ПК (так называемая "святая троица"), появившихся в 1977, два были на 6502 и только один на Z80. К сожалению, важнейшие американские производители компьютеров (Apple, Tandy RadioShack, IBM), начиная с 80-х не публиковали информацию о числе произведенных ими ПК.
В 1984 в журнале Byte на фоне картинок с красными знамёнами, Лениным и марширующими солдатами появилась статья о плохой копии компьютера Apple ][, сделанной в СССР. В этой статье приводилась любопытная цена на этот компьютер – $17000 (это абсурдное число, реальная цена первых серийных Агатов в комплекте с монитором и принтером была примерно 4000 руб.) и иронично указывалось на то, что советским производителям придётся сильно (dramatically) понизить цену, если они захотят продать своё изделие на Западе. Это был материал о прототипе Агата, в котором вместо 6502 использовали его аппаратный эмулятор. Агат использовался в основном в школьном образовании. Старшие модели Агатов могли быть почти на 100% совместимы с Apple ][ и имели некоторые довольно полезные расширения. Удивительно, что процессоры для Агатов и болгарских клонов Apple II массово закупались в США – это было исключительный случай, когда процессоры массово закупались, а не клонировались. В Болгарии все-таки удалось наладить небольшое производство своего клона 6502 к середине 80-х. А в СССР удалось сделать клон 65C02 только к концу 80-х. Интересно, что отечественный клон 6502 можно было разгонять до 5 МГц повышением напряжения питания с 5 до 15 вольт – для Агата существовала плата с таким ускорителем.
Можно лишь попытаться фантазировать на тему о том, что бы было, если бы 6502 смог развиваться теми же темпами, что и его конкуренты. Мне кажется, что постепенный перенос памяти нулевой страницы в регистры, улучшение конвейра инструкций и постепенное расширение системы команд с одновременной оптимизацией циклов, позволило бы "терминатору" 6502 оставаться в лидерах по быстродействию до начала 90-х. Введение режима 16, а затем 32 бит позволило бы использовать большие объемы памяти и более быстрые команды. Смогли бы его конкуренты что-то этому противопоставить?
Билл Менш смог обеспечить некоторую поддержку развитию 6502. Однако возможностей одного человека для поддержки конкурентоспособности процессора явно недостаточно. Билл, как превосходный инженер-электронщик, смог обеспечить поддержку исполнения заказов на модернизацию 6502, но обеспечение независимой разработки успешного процессора требовало команды. Кому-то надо было заниматься разработкой модернизации системы инструкций, кому-то разрабатывать новые маркетинговые стратегии и т.п. Кроме того, для разработки были потеряны, как минимум, 1976-78 годы и одному человеку наверстать упущенное было уже не под силу. В каком-то смысле, WDC создала иллюзию благополучия вокруг ситуации с развитием 6502 и это имело для реального развития скорее негативный эффект.
Хотя сам Чак Педдл видел будущее 6502 скорее как дешевого контроллера и конкурента не для Z80, а скорее для микроконтроллеров типа Intel 8048 и процессоров типа 6800, которые обычно использовали только как контроллеры. В 2014 он работал над твердотельным накопителем, в котором использовал 10 штук контроллеров на основе 6502. В начале 80-х он вместе с компаньоном создали компанию, в которой он в 1981 разработал компьютер Victor 9000. В качестве процессора там использовался 8088 – Чак считал, что 6502 для персонального компьютера будет не лучшим выбором.
Интересно, что сам Чак как и некоторые другие ключевые фигуры ИТ США 1970-х и 1980-х пошел работать с высокие технологии с идеей предотвратить отставание от СССР в развитие ИТ. Эта идея была весьма популярна после запуска Спутника. Тут можно ещё упомянуть ключевую для Intel фигуру Билла Давидова (Bill Davidow), которого Чак очень уважал и с которым поддерживал контакт.
Чака не стало в конце 2019. Он учился у Клода Шеннона и первым предложил использовать групповое кодирование при работе с дисками. Хотя запатентовать это у него не получилось, он в конце 70-х и начале 80-х разработал дисководы, которые позволяли использовать до двух раз больше места, чем типовые. Это, в частности, использовалось в некоторых лучших дисководах Commodore и в компьютере Victor. Затем он сделал первый портативный жесткий диск. Этот диск не ломался, если падал на пол! Затем он работал с производством недорогого ОЗУ. После чего он разрабатывал сверхбыстрый твердотельный накопитель, о котором уже упоминалось.
Хочется закончить некоторыми общефилософскими рассуждениями. Почему 6502 был приторможен и лишен гораздо более яркого будущего? Возможно из-за того, что он реально мог очень потеснить крупные фирмы и создать совершенно новую реальность. Но была ли команда 6502 настроена на такое? Скорее нет, они просто хотели сделать лучший процессор. Возможно они сами не поняли насколько удачным был их процессор и что скорость это главное свойство любого процессора. Любопытно, что ведущие производители компьютеров на базе 6502 (Apple, Commodore, Atari) в 80-е явно тормозили развитие систем на базе этого процессора. Ничего подобного не было для других процессоров. Возможно, скрытые регулирующие механизмы таким образом защищали других производителей компьютеров и процессоров.
Уже гораздо позже, в начале 21-го века при помощи навязанных надуманными причинами судебных процессов была разгромлена фирма Lexra, производившая в течении 5 лет различные инновационные процессоры. Эта печальная история, чем-то напоминает то, что случилось с MOS Technology.
Cтатья опубликована на geektimes, а также переведена на английский.