Введение

Система графического отображения

Корпорация IMLAC была американской компанией по производству электроники в Нидхеме, штат Массачусетс, которая в 1970-х годах производила системы графического отображения, в основном PDS 1 и PDS 4. PDS 1 дебютировал в 1970 году. Это была первая недорогая коммерческая реализация системы Sketchpad Ивана Сазерленда – высокоинтерактивной компьютерной графики с возможностью отображения движения. Его цена составляла 8300 долларов США (без учета опций), что эквивалентно стоимости четырех автомобилей Volkswagen Beetle. PDS 1 был функционально схож с гораздо более крупной системой IBM 2250, которая стоила в 30 раз дороже. Это был значительный шаг вперед в развитии компьютерных рабочих станций и современных дисплеев. PDS 1 состояла из монитора CRT, клавиатуры, светового пера и панели управления, размещенных на небольшом столе, при этом основная электронная логика находилась в основании стола. Электроника включала в себя простой 16-битный мини-компьютер, 8 блоков памяти магнитного ядра объемом 16 килобайт каждый и процессор отображения для управления движением электронного луча в CRT. IMLAC – это не аббревиатура, а имя поэта-философа из романа Сэмюэля Джонсона «История Расселаса, принца Абиссинии».

Временная линия продуктов

1968 год: Основана компания Imlac. Их бизнес-план заключался в создании интерактивных графических терминалов для биржевых трейдеров, но этого не произошло. 1970 год: Представлен PDS 1 для общего рынка графики. 1972 год: Представлен PDS 1D. Он был аналогичен PDS 1, но с улучшенными схемами и системной платой. 1973 год: Представлен PDS 1G. 1974 год: Представлен PDS 4. Он работал в два раза быстрее и отображал в два раза больше текста или графики без мерцания. Его графический процессор поддерживал мгновенное интерактивное увеличение с отсечением. В качестве опции предлагался модуль вычислений с плавающей точкой. 1977 год: В США было продано около 700 систем PDS 4. Они производились под заказ, а не серийно. 1978 год: Представлен Dynagraphic 3250. Он был разработан для использования преимущественно с проприетарной графической библиотекой, написанной на Fortran и работающей на более крупных компьютерах, без необходимости программирования внутри терминала. ? ??? : Представлен Dynagraphic 6220. 1979 год: Компания Imlac Corporation была приобретена компанией Hazeltine Corporation, производителем исключительно текстовых терминалов. 1981 год: Представлена Hazeltine Imlac Dynagraphic Series II. Она была разработана для совместимости со стандартом 3D-графической библиотеки SIGGRAPH CORE 1979. Стоимость составляла 9000 долларов США при закупке оптовых партий (OEM). Она имела разрешение 2Kx2K, 192 килобайта оперативной памяти и микропроцессор 8086, все размещенные внутри корпуса монитора. DEC GT40 имела схожую конструкцию и цену с PDS 1D. Ее настольная электроника была более компактной и использовала серийно выпускаемый набор плат PDP 11/05 в качестве локального мини-компьютера. Это автоматически обеспечивало более широкий набор инструментов программирования. Однако и ей, как правило, управляли приложения, работающие на более крупных системах PDP.

Обновленный векторный дисплей

Монитор был 14-дюймовым монохромным векторным дисплеем, постоянно обновляемым из локальной памяти. Его нормальное разрешение составляло 1024 на 1024 адресуемых точек и 2K x 2K в режиме масштабирования мелкого шрифта. Электронный луч ЭЛТ свободно перемещался по координатам X и Y, а также по углу под программным управлением, чтобы рисовать отдельные наклонные линии и символы, подобно движению пера на бумаге при работе с плоттером. Луч пропускал пустые области экрана. Элементы могли быть нарисованы в произвольном порядке. Векторные дисплеи представляли собой устаревшую альтернативу растровым дисплеям. В векторных дисплеях электронный луч ЭЛТ "рисует" только отображаемые линии и кривые. В растровых дисплеях изображение представляет собой сетку пиксельных точек (растровое изображение), и луч ЭЛТ многократно сканирует весь экран по фиксированному горизонтальному рисунку (как в телевизорах), независимо от того, какие точки включены. Растровая графика требует значительно больше памяти, чем векторная. Разрешение 1024x768 в черно-белом цвете уровня XGA требует 96 килобайт видеопамяти для обновления, что в 12 раз больше, чем у базового PDS 1. В 1970 году такой объем оперативной памяти стоил около 8000 долларов. (Сейчас он стоит всего 0,05 цента общей DRAM.) Векторные дисплеи хорошо подходили для отображения графиков данных, редактирования линейных чертежей и CAD-схем, вращения трехмерных каркасных моделей, редактирования текста, верстки печатных страниц и простых игр. Однако они не поддерживали цвета, изображения, залитые области, черный текст на белом фоне или точное соответствие шрифтам профессиональной печати (WYSIWYG). Экран PDS 1 постоянно обновлялся или перерисовывался 40 раз в секунду, чтобы избежать заметного мерцания. Но нерегулярное движение луча было медленнее, чем устойчивое движение на растровых дисплеях. Отклонением луча управляли магнитные катушки, которые противодействовали быстрым изменениям тока. Экран мерцал при заполнении более чем 800 дюймами линий или более чем 1200 символами, поскольку лучу требовалось более 1/40 секунды для повторного прослеживания всего изображения. Конкурирующий, более дешевый графический терминал Tektronix 4010 использовал альтернативную технологию ЭЛТ с накопительным экраном, которая не требовала постоянного обновления и, следовательно, не требовала локальной памяти дисплея компьютера. Светящееся изображение запоминалось непосредственно люминофором ЭЛТ. Но, как и в "Этч-а-Скетче", накопленное изображение можно было изменить или переместить только путем полного стирания экрана и последующей медленной перерисовки всего изображения с использованием данных, отправленных с большого компьютера. Это было гораздо менее интерактивно, чем в PDS 1, и не позволяло отображать анимацию. На других дисплеях того времени шрифты были жестко заданы и не могли быть изменены. Например, операторские консоли CDC 6600 формировали каждую букву сразу, направляя электронный луч ЭЛТ Charactron через металлическую трафаретную маску с отверстием в форме буквы "А" или буквы "Б" и т.д. Но в PDS 1 все формы букв, размеры и интервалы полностью контролировались программным обеспечением. Для каждой желаемой формы буквы "E" существовала своя подпрограмма отображения, которая выполняла последовательность коротких векторных штрихов для этой буквы. Каждое появление буквы на экране вызывало подпрограмму этой буквы из процессора отображения. Эта схема поддерживала произвольные шрифты, расширенные наборы символов и даже курсивные языки с письмом справа налево, такие как арабский. Самые маленькие и быстрые шрифты были некрасивыми, с ромбовидными приближениями округлых петель. Схема подпрограммы отображения также обрабатывала символы электронных схем. Монитор PDS 1 имел прямоугольную форму и был доступен в портретной или альбомной ориентации. Сетка 1K x 1K точек растягивалась на 33% по более длинной стороне, чтобы текст и графика заполняли экран. Все графические программы должны были учитывать неквадратные пиксели. Если система в основном использовалась для графики, монитор можно было установить с нерастянутой сеткой, оставляя концы экрана постоянно неиспользуемыми.

Двойные процессоры

Процессор дисплея PDS 1 и его миникомпьютер работали одновременно, используя одну и ту же память. Инструкции для процессора отображения состояли из 1-байтных коротких инструкций для букв и кривых, 6-байтных длинных векторных инструкций и 2-байтных безусловных переходов. Процессор дисплея не имел стандартных арифметико-логических инструкций (ALU) и никогда не изменял содержимое памяти. Переходы поддерживали вызовы подпрограмм для повторяющихся объектов, таких как буквы и символы. Переходы также поддерживали организацию отображаемых объектов в связанные списки для быстрого редактирования. Координаты XY задавались только целыми числами. Не было поддержки вращения или произвольного масштабирования в реальном времени. Если символ выходил за пределы экрана, луч переносился на противоположную сторону, а не обрезался, что приводило к размытию. Поэтому более высокие уровни приложения должны были выполнять проверку на отсечение, используя отдельные структуры данных. (Эта проблема была решена в более поздних моделях.) Программирование подпрограмм шрифтов осуществлялось на языке ассемблера. Код для рисования линий и общей компоновки генерировался динамически программами, работающими на локальном миникомпьютере или на большом удаленном компьютере. Встроенный миникомпьютер PDS 1 был необходим для быстрого реагирования на взаимодействие пользователя с клавиатурой и световым пером, без задержек, связанных с обращением к удаленному, разделяемому по времени, большому компьютеру за помощью. Основной задачей миникомпьютера было создание и изменение списка отображения по мере необходимости для следующего цикла обновления. Для текста и 2D-линейной графики это было просто и не требовало больших вычислительных ресурсов. Чтобы минимизировать затраты, Imlac разработал собственный простой миникомпьютер с минимальным количеством регистров и логических элементов. Это была машина с одним аккумулятором, аналогичная DEC PDP 8, за исключением использования 16-битных инструкций и данных вместо 12-битных. Отсутствовали инструкции целочисленного умножения/деления, инструкции для работы с плавающей точкой, микропрограммирование, виртуальная адресация и кэш. Единственным способом изменения адреса были косвенные указатели адреса, хранящиеся в памяти. Некоторые ячейки указателей автоматически увеличивались при использовании. Операции со стеком не поддерживались. Программирование этого миникомпьютера осуществлялось на языке ассемблера. Он не был объектно-совместим с другими системами и, следовательно, имел ограниченную поддержку инструментов разработки. В конечном итоге Imlac добавил самодостаточный компилятор Fortran, компиляция в котором занимала до часа из-за ограниченного объема памяти. Некоторые модели PDS имели опциональный дисковод IBM 2310 с картриджами или 8-дюймовый дисковод. Они работали под управлением примитивной дисковой операционной системы, поддерживающей наложение программ. Дисководы были исключены из более поздних продуктов. Электроника PDS 1 была построена на основе интегральных схем TTL серии 7400 с низкой плотностью, содержащих всего дюжину логических элементов или 4 бита регистра на DIP-корпусе. На небольших печатных платах размещалось до 12 чипов. Неглубокий настольный пьедестал содержал три стойки или ряда плат, по 25 плат в каждом ряду, и соединительную шину с проволочными перемычками. Унифицированной шины не было. В документации для клиентов содержались полные принципиальные схемы до уровня логических элементов, чтобы клиенты могли разрабатывать собственные интерфейсные платы. Было возможно увидеть, потрогать и понять каждую деталь работы всей системы. Время цикла основной памяти составляло 2,0 микросекунды для PDS 1 и 1,8 микросекунды для PDS 1D. Логика TTL работала в 10 раз быстрее, с 10 временными импульсами на цикл памяти. Базовая PDS 1 не включала опциональные аппаратные карты для длинных векторов. Вместо этого миникомпьютер генерировал длинную последовательность коротких инструкций дисплея. Программное обеспечение использовало быстрый алгоритм Брезенхема для вычисления промежуточных точек для наклонных линий без выполнения умножения или деления. Аппаратное обеспечение для длинных векторов также требовало только схему сложения/вычитания. Если программа для длинных векторов была ошибочно запущена на базовой машине без этой опции, процессор дисплея мог выйти из-под контроля и потенциально сжечь люминофор монитора или усилители отклонения.

Приложения

PDS 1 и PDS 4 были приобретены в небольшом количестве научно-исследовательскими организациями и многими университетами. На них были разработаны новаторские компьютерные приложения и подготовлено следующее поколение разработчиков графических систем. Гипертекстовая система FRESS обладала расширенными возможностями и удобством использования при работе с системой PDS 1: пользователь мог создавать гиперссылки с помощью светового пера, используя всего несколько нажатий клавиш. Многооконное редактирование в FRESS также было возможно при использовании PDS 1. Системы PDS 1 использовались для разработки сетевого графического протокола Arpanet. Дисплейные системы Imlac включались в состав различных крупных коммерческих продуктов, связанных с визуальным дизайном и специализированным программным обеспечением. Imlac продавала систему верстки и набора газет, основанную на PDS 1, под названием CES. Механическая CAD-система Anvil от MCS использовала более поздние рабочие станции Imlac для интерактивного проектирования механических деталей, которые затем автоматически вырезались из металлической заготовки. Некоторые простые приложения, такие как текстовые редакторы, были полностью написаны на ассемблере Imlac и могли работать практически без участия более мощного компьютера. Хофштадтер написал свою книгу «Гёдель, Эшер, Бах» в редакторе Imlac. Однако для большинства графических приложений требовалась мощная поддержка чисел с плавающей точкой, компиляторы и файловая система. Эти приложения в основном работали на дорогостоящем компьютере с разделением времени, который передавал обработанные графические данные в Imlac, где запускалась небольшая ассемблерная программа, эмулирующая стандартный графический терминал. Типичным применением была визуализация архитектурных чертежей и анимированных обзоров, предварительно созданных в автономном режиме. В течение нескольких лет использование PDS 1 сдерживалось отсутствием стандартной программной библиотеки, поддерживающей анимацию или интерактивное рисование и перемещение объектов. Но по ночам студенты с удовольствием писали большие объемы кода на ассемблере. Сегодня наиболее известными приложениями для PDS 1 являются ранние интерактивные игры. Двухместная Spacewar! была портирована с демонстрационной версии PDP 1. Freeway Crossing, ранняя предшественница популярной аркадной игры Frogger, была создана на PDS 1 в 1971 году в рамках психологического эксперимента. Mazewar, первая многопользовательская онлайн-игра, была разработана на двух системах PDS 1. Позже на станциях PDS 1 или других терминалах, подключенных к хост-компьютеру PDP 10 в MIT, работающему с программой искусственного интеллекта Mazewar, могли играть до 8 игроков. Игры Mazewar между MIT и Стэнфордом создавали значительную нагрузку на ранний Arpanet.

Пиксели заменяют векторные дисплеи

Плотность, ёмкость и цена компьютерной памяти неуклонно и экспоненциально улучшались на протяжении десятилетий, эта инженерная тенденция известна как закон Мура. Ограничения векторных дисплеев с перезаписью или хранением изображения принимались только в то время, когда эти дисплеи были значительно дешевле растровых альтернатив. Растровые графические дисплеи неизбежно стали доминировать, когда цена 128 килобайт перестала иметь значение. Imlac PDS 1 в Xerox PARC впечатлил их своей интерактивностью и графикой, но его некрасивый текст побудил Чака Тэкера разработать экспериментальный растровый компьютер Xerox Alto в 1973 году, за десятилетие до того, как такой объём памяти стал доступен для неисследовательских персональных компьютеров. А Alto положил начало революции графического интерфейса. В 1980-х годах PDS 1 и подобные векторные терминалы были вытеснены (непрограммируемыми) растровыми графическими терминалами, такими как AED767, и легко программируемыми персональными рабочими станциями с растровой графикой, такими как Terak 8510/a UCSD Pascal и высокопроизводительная система PERQ Unix. Затем их заменили массовые Macintosh, ПК с Windows и игровые консоли на основе микропроцессоров. А теперь – единым чипом в смартфонах.

Эмуляция

В 2013 году был написан эмулятор Imlac под названием sImlac. Обновлённую версию этого эмулятора можно получить из репозитория GitHub музея Living Computers: Museum + Labs, расположенного в Сиэтле.