Введение

Модуль расширения оперативной памяти Commodore (REU) – это серия внешних устройств для увеличения объема оперативной памяти. На момент выпуска домашнего компьютера Commodore 128 были анонсированы два REU для этой модели: 1700 (128 КБ) и 1750 (512 КБ) REU. Позже Commodore представила третью модель для Commodore 64: 1764 (256 КБ).

Необходимость в REU возникла, когда руководство Commodore приняло решение не использовать финальную версию специализированного блока управления памятью (MMU), что ограничило объем доступной памяти, несмотря на предварительные обсуждения более широкой адресной карты. Инженеры, посетившие выставку потребительской электроники (CES) в 1985 году, столкнулись с рекламными листовками и билбордами, рекламирующими объем памяти, который больше не поддерживался, и в итоге высшее руководство спросило, куда подключать дополнительную память (до 512 КБ). К выставке CES 1985 года в Чикаго инженеры смогли продемонстрировать вращающийся глобус Земли, показывая возможности прямого доступа к памяти (DMA) новых модулей REU. Аппаратная часть REU была разработана Фрэнком Палией, а специализированная интегральная схема (IC) контроллера расширения памяти (REC) – Виктором Андраде. Фред Боуэн и Терри Райан адаптировали KERNAL и BASIC для Commodore 128, чтобы обеспечить нативную поддержку REU, а Хедли Дэвис написал демонстрацию вращающегося глобуса, которая стала впечатляющим примером анимации в середине 1980-х годов.

Описание оборудования

Хотя C128 мог обращаться к более чем 64 КБ оперативной памяти посредством переключения банков, к памяти внутри REU можно было получить доступ только через операции передачи памяти (STORE/LOAD/SWAP/COMPARE) между основной памятью и памятью REU. Кроме того, встроенный BASIC 7.0 в C128 имел три команды: STASH, FETCH и SWAP, для сохранения и извлечения данных из REU. Официально на C128 поддерживались только модели 1700 и 1750. Модель объемом 256 КБ, 1764, была выпущена одновременно для C64. Между тремя моделями существовали лишь незначительные различия. Оригинальный блок питания C64 не мог обеспечить дополнительную нагрузку, создаваемую 1764, поэтому в комплект был включен блок питания C64 на 2,5 ампера. В 1700 используется шестнадцать микросхем DRAM 4164 64kx1, в 1764 – восемь микросхем DRAM 41256 256kx1, а в 1750 – шестнадцать микросхем DRAM 41256. На практике разница между 1764 и более ранними моделями мало влияла на совместимость, и пользователи успешно использовали 1700 и 1750 с C64, а 1764 с C128, хотя стандартного блока питания C64 было недостаточно для надежной работы с любым из них. Некоторые дилеры разделяли комплекты 1764 и блок питания, чтобы продавать блоки питания пользователям C64 и/или модернизировать 1764 до 512 КБ. Модель REU 1750 можно модифицировать для поддержки до 2 МБ памяти, установив 2 дополнительные микросхемы для переключения банков. В этой модификации существует только один источник программной несовместимости: программное обеспечение, которое не устанавливает биты по адресу $DF06 в одно и то же значение постоянно, или устанавливает биты в банк 512 КБ, который еще не установлен, не будет работать. В конце 1980-х годов возник дефицит микросхем DRAM, поэтому 1750 были редкими и дорогими. Однако модернизировать 1700 или 1764 до 512 КБ было относительно легко. Несколько фирм занимались этим в коммерческих целях, продавая модернизированные устройства или модернизируя устройства, предоставленные клиентами. В начале 1990-х годов в различных онлайн-сервисах появились схемы самостоятельной модификации для увеличения емкости REU до одного мегабайта или более.

Различия моделей

Плата 1700-х годов была идентична плате 1750-х годов, а проводник, обозначенный J1, указывал на размер используемых микросхем. На платах 1750 и 1764 этот проводник был перерезан. Платы 1700 и 1750 имели резистор в позиции R4, который, по словам инженера Commodore Фреда Боуэна, компенсировал незначительные различия во времени в порту расширения на C64 и C128. На плате 1764 этого резистора не было. Боуэн и другие инженеры CBM не рекомендовали использовать плату 1764 с C128, если резистор не был добавлен, или плату 1700/1750 с C64, если резистор не был удален. Наличие платы 1750 можно было проверить, прочитав бит 4 адреса памяти $DF00, который был равен 1 на плате 1750 и 0 на платах 1700 или 1764. Однако эта процедура не позволяла различить плату 1700 от платы 1764. Для решения этой проблемы программисты записывали данные в оперативную память REU, а затем считывали их, чтобы определить объем установленной памяти.

Поддержка программного обеспечения РЭУ

Небольшой процент программного обеспечения использовал РЭУ. Как и другие дополнительные устройства от Commodore, их относительно небольшая установленная база по сравнению с огромным количеством C64 и C128 заставляла разработчиков программного обеспечения не решаться вкладывать много времени и усилий в поддержку РЭУ. Отсутствие коммерческой поддержки привело к тому, что продажи были ниже, чем могли бы быть. Благодаря высокой скорости работы по сравнению с дисководами Commodore или даже коммерчески доступными жесткими дисками, РЭУ получили поддержку в сообществе Commodore BBS. Программы, такие как Color64, требовали РЭУ для минимизации времени загрузки при переключении между разделами BBS. РЭУ поставлялись с программным обеспечением для использования дополнительной памяти в качестве RAM-диска, но совместимость RAM-диска с коммерческим программным обеспечением была различной, поскольку некоторые коммерческие программы сильно зависели от различных особенностей дисковода Commodore 1541. Кроме того, многие коммерческие программы просто перезаписывали область памяти, занимаемую программным обеспечением RAM-диска. Операционная система GEOS имела встроенную поддержку РЭУ в качестве RAM-диска, как и версия CP/M для C128, а некоторые программы копирования дисков использовали РЭУ для обеспечения высокоскоростного копирования с использованием одного дисковода. GEOS и другие программы даже использовали РЭУ для быстрой передачи данных в основной памяти компьютера, сохраняя блок памяти в РЭУ, а затем извлекая его обратно в другое место. При использовании этого метода по шине данных машины перемещались только фактические данные для передачи, в отличие от обычного метода, при котором процессор компьютера выполнял передачу, тратя при этом не менее трех четвертей пропускной способности шины на выборку инструкций и только одну четверть или меньше на полезную нагрузку.