Jupiter Ace от Jupiter Cantab — британский домашний компьютер, выпущенный в 1982 году. Ace отличался от других микрокомпьютеров того времени тем, что в его среде программирования использовался Forth вместо более популярного BASIC . [1] [2] Эта разница, наряду с ограниченным доступным программным обеспечением и плохим символьным графическим дисплеем, привела к ограниченным продажам, и машина не имела успеха. [3] [4]
Юпитер Кантаб был основан Ричардом Альтвассером и Стивеном Викерсом . [5] Оба были в команде дизайнеров ZX Spectrum : Альтвассер работал над разработкой ZX81 и аппаратным обеспечением Spectrum. Викерс адаптировал и расширил ПЗУ 4K ZX80 до ПЗУ 8K ZX81 и написал большую часть ПЗУ для Spectrum.
Jupiter Ace был назван в честь одного из первых британских компьютеров Pilot ACE [6] и поступил в продажу 22 сентября 1982 года по цене 89,95 фунтов стерлингов . [2]
Продажи широкой публике были медленными. Первоначально компьютер можно было заказать только по почте, [2] и Юпитер Кантаб сообщил, что были производственные трудности, но к январю 1983 года они были преодолены, и устройства уже поступили в магазины. [7]
Использование Forth вместо более обычного выбора BASIC, а также доступность и успех ZX Spectrum, а также ограниченное опубликованное программное обеспечение, плохой корпус и небольшая начальная память - все это препятствовало более широкому признанию рынком. В конце концов Юпитер Кантаб прекратил торговлю к концу октября 1983 года .
Затем в 1984 году бренд был приобретен компанией Boldfield Computing Ltd, которая продала оставшиеся акции по почте за 26 фунтов стерлингов. [8] В 2015 году бренд снова был продан компании Пола Эндрюса Andrews UK Limited. [9]
Продажи машины никогда не были очень большими; Сообщается, что количество Aces, проданных до закрытия Jupiter Cantab, составило около 5000. [4] По состоянию на начало 2000-х годов сохранившиеся машины встречаются редко и часто продаются по высоким ценам как предметы коллекционирования.
Несмотря на то, что Forth был структурированным и мощным, он считался трудным для изучения, и знание BASIC, полученное при знакомстве с другими домашними компьютерами, не оказало практической помощи в его изучении. В обзоре 1982 года говорилось, что «успех Jupiter Ace будет зависеть от признания покупателями машин другого языка микрокомпьютеров». [10]
Кроме того, для машины существовал лишь очень ограниченный набор опубликованного программного обеспечения - либо коммерческие программы, либо программы для ввода текста, напечатанные в журналах для хобби, и они были ограничены небольшим объемом оперативной памяти базовой модели. [3]
Попытки продвижения Ace на образовательном рынке также не увенчались успехом; Ключевыми проблемами были сомнения по поводу того, будет ли Форт использоваться в экзаменационных программах, а также отсутствие поддержки Форта со стороны преподавателей. [11] Учащиеся были больше заинтересованы в изучении широко используемого BASIC, чем в изучении языка, используемого только одной (необычной) машиной со своеобразным синтаксисом RPN . [12]
Наконец, тайловая графика плохо сравнивалась с пиксельной графикой других машин, которые также были цветными, а не монохромными, как у Ace. Это ограничило продажи в основном нишевым рынком энтузиастов технического программирования.
Jupiter Ace часто сравнивают с ZX81 из-за его аналогичного размера, низкой стоимости и схожего форм-фактора . [13] Внутренне его конструкция больше похожа на ZX Spectrum , хотя Ace также имел выделенную видеопамять объемом 2 КБ, что частично позволяло избежать замедления, когда программы обращались к тому же банку (те же чипы), что и видеопамять. Как и в Spectrum, в Ace использовались клавиши из черной проводящей резины , хотя, в отличие от Spectrum, клавиши имели проводящую подушечку, которая прижималась непосредственно к дорожкам на печатной плате, а не использовала мембрану. В результате клавиши часто переставали работать надежно до тех пор, пока их не очистили или не обновили проводящий материал.
Аудиовозможности управлялись процессором с программируемой частотой и продолжительностью. Звук выводился через небольшой встроенный динамик.
Как это было принято в то время, вместо дисководов/ленточных накопителей использовался обычный магнитофон. Точно так же в качестве дисплея был необходим телевизор, но он был только черно-белым, а не цветным, поддерживаемым конкурирующими моделями, такими как Spectrum. Вторичный (недокументированный) боковой разъем на задней панели корпуса обеспечивал доступ к некоторым видеосигналам, предположительно для будущей цветной видеокарты, но ни один официальный продукт, использующий этот разъем, так и не был выпущен.
Jupiter Ace был основан на Zilog Z80, с которым дизайнеры уже имели опыт работы над Sinclair ZX81 и ZX Spectrum.
И графика, и текст могли отображаться одновременно: (1) переопределение плиток символов обеспечивало стандартную графику 256×192, ограниченную 128 доступными (определяемыми) символами 8×8, одновременно с отображением графики 64×48.
Внутренний динамик, управляемый напрямую процессором в однозадачном режиме, с контролем частоты и продолжительности звука в миллисекундах .
Хранение осуществлялось через интерфейс кассета-лента на скорости 1500 бод . Файлы можно было использовать либо для хранения программ Forth (скомпилированный код), либо для хранения необработанных дампов памяти.
У Ace было ПЗУ размером 8 КБ, содержащее ядро Форта и операционную систему, а также предопределенный словарь слов Форта размером около 5 КБ. Оставшиеся 3 КБ ПЗУ поддерживали несколько функций: библиотеку чисел с плавающей запятой и таблицу определений символов, доступ к магнитофону, декомпиляцию и переопределение вновь отредактированных «слов» (т.е. подпрограмм). [14] Часть ПЗУ была написана на машинном коде Z80 , но часть также была закодирована на Форте.
Следующие 8 КБ были встроены в ОЗУ, которое было лишь частично декодировано , при этом 2 КБ видеоОЗУ повторялись дважды, а 1 КБ пользовательского ОЗУ повторялись 4 раза (при этом одна и та же память появлялась по нескольким разным адресам памяти).
Использование зеркала видеопамяти с меньшим адресом выберет приоритет ЦП, что приведет к появлению на экране некоторых мгновенных случайных пикселей, когда видеоподсистема и ЦП обращаются к видеоОЗУ в одном и том же такте . Использование более высокого адреса приведет к кратковременной приостановке работы ЦП из-за помех, что повлияет на синхронизацию программы и сделает этот режим непригодным для операций ввода-вывода. Поскольку видеопамять была частично отделена от основного адреса и шин данных, по большей части видеоподсистема и ЦП могли работать параллельно .
Первые 16 КБ карты памяти использовались для ПЗУ, видео и доступной пользователю ОЗУ, оставляя вторые 16 КБ карты памяти свободными для расширения ОЗУ, а самые верхние 32 КБ не определены.
Один банк размером 1 КБ позволил переопределить большинство из 128 символов ASCII в растровом формате 8×8 пикселей . Другой банк размером 1 КБ хранил полноэкранное отображение 24 строк × 32 столбца символов в черно-белом режиме. Цвет должен был быть достигнут как расширение, но, хотя цветная графическая плата была разработана, [15] ни одна из них никогда не производилась в коммерческих целях.
1 КБ ОЗУ с возможностью установки RAM-Pack на 16 КБ, а позже и на 32 КБ. Компания Boldfield Computing также продавала печатную плату , которая преобразовала краевой разъем в электрическую совместимость с Sinclair ZX81, что позволило использовать пакет ОЗУ ZX81 16 КБ. [16]
Ссылки на Ace RAM иногда включают отдельную видеопамять объемом 2 КБ , которая не была доступна для программирования, что приводило к некоторой путанице. Точно так же иногда утверждается, что из-за эффективности Форта стандартная оперативная память объемом 1 КБ фактически была сопоставима как минимум с 2 КБ в системе BASIC.
Его наиболее отличительной особенностью был выбор Форта, структурированного языка. Поточная компиляция позволяла написанным программам работать почти так же быстро, как многие языки , скомпилированные в собственном коде , загружаемые на более дорогих компьютерах. Форт считался хорошо адаптированным для микрокомпьютеров с их небольшой памятью и относительно низкой производительностью процессоров. [18] Программы на Форте эффективно используют память; по мере того, как они становятся больше, они повторно используют больше ранее определенного кода. [19] Структуры управления могут быть вложенными на любой уровень, ограниченный только доступной памятью. Это позволило реализовать сложные программы, вплоть до рекурсивного программирования . Было заявлено, что Ace's Forth был «в десять раз быстрее, чем Basic» [20] [21] [22] и использовал менее половины памяти (значительный процент стоимости компьютеров низкого уровня того времени) эквивалентной программы, написанной на интерпретируемом языке. БАЗОВЫЙ. [20] Это также позволило легко реализовать процедуры машинного кода , если это необходимо. [23]
Форт Ace был основан в основном на Форт-79, с некоторыми существенными отличиями, [6] : 176, в частности, он добавил проверку синтаксиса для структур управления и определяющих конструкций, а также было добавлено несколько дополнительных слов на основе общих команд BASIC для звука, видео и ленты. В реализации отсутствовали некоторые менее часто используемые слова Форта, которые при необходимости можно было легко реализовать. Проверку ошибок во время выполнения можно отключить, чтобы повысить скорость на 25–50 %. [6] : 171
Его Forth был адаптирован к бездисковому ленточному аппаратному обеспечению домашнего компьютера благодаря возможности сохранять / загружать пользовательские «скомпилированные словари» вместо обычных пронумерованных блоков программирования, используемых в дискетных системах.
Декомпиляция позволила избежать потери оперативной памяти при моделировании отсутствующей блочной системы, используемой как с дисковыми, так и с ленточными драйверами (последние не следует путать с магнитофонами). В качестве замены он включал дополнительный файл данных для необработанных двоичных данных. Эти решения были уникальными для Jupiter Ace.
Чтобы разрешить декомпиляцию, он выделил обычное создание слов определителя и компилятора Forth , заменив пару создания CREATE .. DOES>
, [24] на:
DEFINER .... DOES>
: создание новых определяющих слов, обычно используемых для определения и построения структур данных. Аналогично CREATE..DOES
использованию в стандартном FORTH. [6] : 120 (Пример: добавление структур данных в виде массивов, записей и т. д.).COMPILER .. RUNS>
: Создание новых слов компиляции, которые реже используются для расширения языка словами компилятора, где CREATE..DOES>
это зависит от реализации FORTH. [6] : 136 (Пример: новые структуры управления компилятором как случай, бесконечный цикл,...).Эти две определяющие пары, а не одна, позволяли Ace декомпилировать свои программы, в отличие от обычных Форт- систем. Эта возможность декомпиляции была решением отсутствия более гибкой дисковой системы, используемой Фортом. Не сохраняя исходный код программы на Форте, а компилируя код после редактирования, он полностью избегал эмуляции диска/ленточного накопителя в оперативной памяти, экономя память компьютера . Это также сэкономило время на чтение и запись программ с кассеты. Это решение для использования ленточных накопителей и экономии оперативной памяти было уникальным для Jupiter Ace Forth.
Имена могут быть двусмысленными вне контекста Форта, поскольку все слова компилируются при объявлении. [25]DEFINER
определяет новый класс (как массив), который будет создавать (компилировать) объект массива. [26] Они активны в режиме «Интерпретатор». Сопряжение в этом режиме взаимодействия COMPILER
определяет структуру программирования (обычно пару или тройку) как IF-ELSE-THEN
. [27] Эти «структурированные программы» активны в режиме «компиляции» (который просто создает новое слово Forth). Короче говоря, «режим интерпретации» означает этап выполнения, а «режим компиляции» относится к этапу редактирования.
Уклонение от источников компенсировалось сохранением комментариев, введенных в код, вместе с скомпилированным выводом; традиционная компиляция такие комментарии отбрасывала. Комментарии затем были восстановлены при декомпиляции. В результате того, что «код является источником», измененные слова (отредактированные) потребуют актуализации всего кода с использованием только что отредактированного. Это было сделано с помощью нестандартной REDEFINE
команды.
Хотя скомпилированный Форт и не предназначен специально для этой цели, его можно использовать для расширения ПЗУ встроенной системы. Внешние ПЗУ были разработаны с помощью Ace Forth для использования в качестве управляющих приложений. [28] [29]
Машина могла использовать некоторые надстройки ZX81 благодаря схожему расположению оперативной памяти и внешнему слоту расширения. Jupiter Cantab выпустил пакет ОЗУ объемом 16 КБ, а сторонние компании выпустили аналогичные пакеты ОЗУ, а также другие периферийные устройства и интерфейсы.
Оригинальный номер Jupiter Ace 1 был представлен в 1982 году и поставлялся в вакуумном корпусе. Сообщается, что было произведено 5000 единиц. [37]
Модель Jupiter Ace 4000 была представлена в 1983 году и имела прочный литой корпус. Сообщается, что было произведено 800 единиц. [38] [8]
Существует 51 известная коммерчески выпущенная видеоигра для Jupiter Ace [39].
Другие микрокомпьютеры на базе Форта:
Micro Z80 с частотой 3,25 МГц [...], el Jupiter Ace [...]