Хабрахабр

[Перевод] IBM, память на линиях задержки и история дисплея 80×24 символа


У терминала DEC VT100, проданного в количестве более миллиона штук, был дисплей 80×24 символа

Недавняя запись в другом блоге подвигла меня на небольшое исследование. Чем объяснить популярность терминалов 80×24 и 80×25 символов? Однако что насчёт 24 или 25 строк на экране? Источником строк длиной в 80 символов очевидно являются перфокарты, и об этом пишут довольно часто. В 1971 году IBM ввела терминал с дисплеем 80×24 символа (модель 3270), и вскоре он стал наиболее продаваемым терминалом, заставив остальные равняться на размер 80×24. Теорий существует много, но я нашёл простой ответ: IBM, а в частности, её доминирование на рынке терминалов. Влияние этих систем остаётся в силе и десятилетия спустя: строки длиной в 80 символов являются стандартами по сей день, как и терминальные окна 80×24 и 80×25.
В этой статье я обсужу эту историю в деталях, включая некоторые другие системы, сыгравшие в ней ключевую роль. Дисплей для IBM PC добавил ещё одну строку, и сделал размер 80×25 стандартом в мире ПК. Это привело к появлению популярного дисплея IBM 3270, и далее, к распространённым и недорогим терминалам типа DEC VT100. Рынок ЭЛТ-терминалов начался, по сути, с выхода IBM 2260 Display Station в 1965-м, созданной на основе таких занятных технологий, как звуковые линии задержки. Сейчас он практически забыт, но он сильно повлиял на IBM PC, включая и его дисплей. В 1981 году IBM выпустила микрокомпьютер DataMaster. Также в статье изучается рынок терминалов 1970-х и 1980-х годов; из них становится ясно, что популярность размеров дисплеев определяли рыночные, а не технологические силы.

Некоторые теории касательно размеров 80×24 и 80×25

Аргументы о происхождении размеров терминалов выдвигаются уже несколько десятилетий, но в упомянутой уже статье была представлена детальная и интересная теория. Вкратце, там сказано, что дисплей 80×25 использовался потому, что он был совместим с 80-столбцовыми перфокартами от IBM, хорошо умещался на телеэкране с соотношением сторон 4:3, и помещался в RAM объёмом 2К. Это привело к появлению таких терминалов размера 80×25, как DEC VT100 в 1978-м. Его огромная популярность сделала его стандартом, и породила изобилие терминалов 80×25. Такова, по крайней мере, теория.

Самая большая проблема в том, что дисплеи VT100 имели размер 80×24, а не 80×25. 80-столбцовые дисплеи и правда произошли от перфокарт, и VT100 действительно стал стандартом, но дальше эта теория разваливается. Каждая строка хранилась в памяти с тремя дополнительными байтами в конце, использовавшимися в качестве указателей для прокрутки. Кроме того, в инструкции описано, что у VT100 была память объёмом 3K, из которых 2,3 К использовал экран, а микропроцессор 8080 использовал остальное. Наконец, до 1980-х большинство дисплеев имели размер 80×24, а не 80×25. Поэтому видеопамять терминала не вмещалась в 2К.

Однако у теорий, по которым дисплей 80×24 является неизбежным следствием технологий, есть фундаментальная проблема: в середине 1970-х у терминалов были десятки различных вариантов размера, к примеру, 31×11, 42×24, 50×20, 52×48, 81×38, 100×50 и 133×64. На сайтах Software Engineering StackExchange и Retrocomputing StackExchange предлагались и другие теории, утверждавшие, что терминалы 80×24 появились по таким техническим причинам, как частота обновления телеэкранов, размеры памяти, типографика, история пишущих машинок, и так далее. Наоборот, с улучшением технологий все эти терминалы исчезли, и к началу 1980-х в основном остались терминалы размером 80×24. Ясно, что никакие технологические ограничения не заставляли терминалы принимать определённый размер. Это говорит, что ключевым фактором стала стандартизация, а не технологии.

Телевизоры в США использовали 525 линий развёртки и частоту обновления в 60 Гц, а 40% терминалов использовали другие значения (в 1980-х домашним компьютерам приходилось работать с NTSC-телевизорами со своими ограничениями, поэтому они часто использовали строки длиной в 40 или 64 символа). Кратко просуммирую, почему технические факторы не сильно влияли на размер терминала. Частота и полоса пропускания не заставляли делать дисплеи определенного размера, поскольку терминалы выводили символы с различными размерами матриц.

В 1975 году чаще всего использовались матрицы 5х7 и 7х9. Растровый терминал рисует каждый символ из матрицы точек. Некоторые системы (к примеру, IBM CGA) использовали матрицу 8х8 без полей для поддержки графических символов, изображения которых соприкасались друг с другом. Часто у матрицы были поля – Apple II использовал матрицу 5х7 с полями, что в итоге составляло поле размером 7х8 точек. IBM Datamaster использовал матрицу 7×9 точек на поле в 10×14 точек, а у Quotron 800 была матрица 16×20. Другие системы применяли более крупные матрицы. В этом состоит недостаток утверждения, что размер терминалов определялся количеством линий развёртки и пропускной способностью. В итоге терминал размером 80×24 символов может потребовать совершенно разного количества пикселей в целом, в зависимости от размера матрицы.

Соотношение сторон экрана не было определяющим фактором, поскольку часто пропорции символов не совпадали с пропорциями экрана. Хотя стоимость памяти была значительной, объёмы чипов DRAM росли в четыре раза каждые три года, что делало память лишь временным ограничением. Не были редкостью и особые размеры терминалов – к примеру, экран Datapoint 2200 был необычно вытянутым, чтобы повторять размеры перфокарты. Даже на ЭЛТ с пропорциями 4:3 терминалы могли использовать текст других пропорций, оставляя часть экрана пустой. Технология, конечно, влияла на процесс, но она не остановила ранних производителей от создания разных терминалов, от 32×8 до 133×64. У Teletype Model 40 было необычное соотношение сторон экрана, 2:1.


Teletype Model 40

Рост популярности ЭЛТ-терминалов

Теперь нам может помочь небольшая часть истории ЭЛТ-терминалов. Многие читатели знакомы с ASCII-терминалами – такими, как отдельные терминалы DEC VT100, последовательные терминалы, соединяющиеся с ПК, или последовательные порты на платах типа Arduino. Терминалы такого типа происходят от телепринтеров – электромеханических клавиатур/принтеров, появившихся в начале XX века. Более всего из них известен Teletype, пользовавшийся популярностью у газетчиков и компьютерщиков в 1970-х (устройство Linux /dev/tty названо в его честь). Телетайпы обычно выводили строки по 72 символа на бумажном рулоне.

С 1963 по 1981 год было произведено сотни тысяч копий этой модели.
Teletype ASR33 передавал ASCII символы и печатал по 72 символа в строке. Слева расположено устройство для чтения перфоленты и перфоратор.

AT&T представила Teletype Model 40 в 1973 году, и у этого ЭЛТ-терминала дисплей выдавал 80×24 символа. В 1970-х рынок замены ЭЛТ-терминалов был крупным и прибыльным. К 1981 году эти терминалы использовались в разных ролях, а не только в качестве замены телепринтеров, и их название поменялось на «ASCII-терминалы». Многие другие компании представили конкурирующие ЭЛТ-терминалы, и «Teletype-совместимые» устройства стали целым сегментом рынка. К 1985 году ЭЛТ-терминалы достигли небывалого успеха, и в США их работало порядка 10 млн штук.


Терминал из линейки IBM 3270, конкретно – модель 3278.

В 1965 году IBM представила IBM 2260 Display Terminal, и теми самым «одобрила» ЭЛТ-терминалы, которые до того считались «модной новинкой». Однако существует параллельный мир терминалов мейнфреймов, который может быть незнакомым для многих читателей. В отличие от асинхронных ASCII-терминалов, передававших отдельные нажатия клавиш, эти терминалы были настроены на блочную работу, по сути обмениваясь с мейнфреймом крупными блоками символов. Этот терминал доминировал на рынке, пока IBM не заменила его более дешёвым и продвинутым IBM 3270 в 1971. Отправка блока данных была более эффективным методом по сравнению с отправкой отдельных нажатий, и позволяла мейнфреймам поддерживать сотни терминалов разом. Терминал 3270 был довольно-таки «умным»: пользователь мог заполнять размеченные поля на экране, а потом передавать все данные сразу, нажав клавишу Enter (именно поэтому у современных клавиатур есть клавиша Enter).

Управлял им IBM 3270, вытеснивший к этому моменту 2260-ю. На диаграмме ниже показано состояние рынка терминалов на 1974 года. Замена телепринтеров была большим и влиятельным рынком; Teletype Model 40 был скромной моделью, но с растущей важностью. Имея 50% рынка, IBM по сути определяла характеристики ЭЛТ-терминала. Хотя вскоре основным игроком станет DEC, в том году он находился в секторе «независимые системы».

Терминал с видеодисплеем IBM 2260

IBM 2260 представили в 1965, и это был один из первых терминалов с видеодисплеем. Видеодисплеи с векторной графикой появились за много лет до этого, ещё в начале 1950-х. Это были векторные терминалы, получавшие картинку при помощи произвольных линий, а не пикселей. И хотя они могли отображать буквы при помощи линий, они были чрезвычайно дороги и использовались для построения графиков.

Этот компактный терминал весил 20 кг, а его размер позволял уместить его на месте стандартной пишущей машинки. IBM 2260 выполнял три роли: удалённый ввод данных вместо перфокарт, запросы (просмотр записей в базе данных), и системная консоль. Посмотрите, какая у него толстая клавиатура: он использовал сложный механизм старого перфоратора от IBM, с рычагами, дисками и электромагнитами.


IBM 2260 Display Station

Фокус в том, что это был просто ЭЛТ-дисплей с клавиатурой; вся управляющая логика, генерация символов, хранение и интерфейсы содержались в шкафу 450 кг весом (фото внизу). Вас может удивить, что IBM смогла создать такой компактный терминал при помощи технологий 1965 года. В шкафу содержались схемы для управления несколькими терминалами одновременно, вплоть до 24 штук. Терминал с клавиатурой назывался IBM 2260 Display Station, шкаф с логикой — IBM 2848 Display Control, а всю систему целиком люди называли просто 2260-я. Он генерировал для них пиксели и отправлял видеосигналы на мониторы, которые могли располагаться на расстоянии до 600 м от него.

Шкаф был полутора метров в ширину и весил 450 кг.
IBM 2848 Display Control поддерживал до 24 терминалов.

Биты хранились в виде звуковых импульсов, отправляемых в никелевый провод длиной порядка 15 м. Одна из наиболее интересных особенностей 2260-й – звуковые линии задержки, использовавшиеся для хранения пикселей. Отправляя импульс (или не отправляя его для обозначения 0) каждые 500 нс, провод мог хранить в себе 11 008 бит. Импульсы шли по проводу и выходили с другого его конца ровно через 5,5545 мс. Пара проводов создавала буфер, хранивший пиксели для 480 символов.

Две линии задержки были соединены в буфер, обеспечивая выдачу битов в два раза быстрее: каждые 250 нс. Линия задержки выдавала 1 бит каждые 500 нс. В 240 слотах содержались данные, а 16 были пустыми для горизонтального возврата луча. Данные были разделены на 256 «слотов», по одному на вертикальную линию развёртки (слоты были чистой концепцией, поскольку линия задержки подавала просто поток битов). Шесть слотов составляли вертикальный столбец символов: один слот хранил двоично-десятичное значение, а пять – пиксели. В каждом слоте хранилось по 86 битов: 7 битов для 12 рядов символов, и два бита чётности (каждая линия развёртки делилась на два дисплея, поэтому слот представлял 6 символов на чётном дисплее и 6 на нечётном). Два буфера поддерживали пару дисплеев 40×12, а четыре – пару дисплеев 80×12. Таким образом, в каждом буфере хранились данные для 480 символов для поддержки дисплеев 40х6.

В нём содержалось порядка 15 м никелевого провода в катушках.
Модуль звуковой задержки для дисплея IBM 2260.

Во-первых, приходилось постоянно обновлять данные: когда биты выходили с одного конца провода, нужно было отправлять их ему обратно на другой конец. У звуковых линий задержки было несколько проблем. В-третьих, линия задержки была чувствительна к вибрации; в Википедии написано, что даже тяжёлые шаги могли нарушить работу экрана. Во-вторых, у линии задержки не было произвольного доступа: для обновления символа приходилось ждать несколько миллисекунд, пока все биты пройдут свой путь. Учитывая все эти недостатки, вы можете удивиться, почему же эти линии задержки всё же использовались. В-четвёртых, скорость работы линии задержки зависела от изменений температуры; перед использованием ей нужно было разогреваться вплоть до двух часов подряд в шкафу с контролируемой температурой. Последовательная природа линии задержки также хорошо сочеталась с последовательной природой растрового дисплея. Главная причина – они были гораздо дешевле памяти на прошитых сердечниках.

Для подстройки задержки стержень с проводом (слева внизу) сдвигал положение преобразователя на проводе.
У никелевого провода в катушке были преобразователи на обоих концах (в центре и слева внизу, где к ним подсоединены перекрученные провода). Металлические коробки на концах проводов – амортизаторы, предотвращающие отражение.

Отметьте двойное расстояние между строками; на самом деле управляющий модуль генерировал 24 строки текста, но строки через одну отправлялись на два разных терминала. На фото ниже показан экран 2260 Model 2, с 12 строк по 40 символов (у Model 1 было 6 строк по 40 символов, а у Model 3 – 12 строк по 80 символов). Ещё одной странной характеристикой 2260-й были вертикальные линии развёртки, в отличие от горизонтальных линий развёртки у большинства видеодисплеев и телевизоров. Очень странный подход, однако он разделял высокую стоимость управляющего железа между двумя терминалами.


Дисплей IBM 2260

Ещё одна странная особенность 2260-й – преобразование 6-битных символов в блок пикселей 5х7. Каждый символ обозначался 6-битным кодом EBCDIC, что давало набор из 64 символов (без строчных букв). В итоге можно было видеть символы на матрице сердечников. Для этого использовалась специальная матрица на магнитных сердечниках, в которой были сердечники только для единичных битов, а для нулевых – не было, поэтому она работала, как память только для чтения. Матрица хранит девять 7-битных слов для каждого из 64 символов: первые пять слов хранят блок пикселей, а оставшиеся четыре – это таблица для преобразования кода символа EBCDIC в ASCII или обратно, или коды для управления принтером.

Фокус был в использовании пустой колонки пикселей между символами, обеспечивавшей расстояние между символами по горизонтали. Линии задержки хранили пиксели, которые нужно было выводить, а ещё они хранили коды EBCDIC для каждого символа. Это позволяло хранить 6-битное значение символа практически нахаляву. Система использовала его для хранения двоично-десятичного значения символа, но гасила дисплей при показе этой колонки, чтобы это значение не выводилось на экран в виде пикселей.

Длина строки в 80 символов позволяла терминалам занять место 80-столбцовых перфокарт (у моделей с 40 символами в строке карта разбивалась на 2 строчки). Интересующий нас вопрос состоит в том, почему у 2260-й был дисплей с 12 строками из 80 символов? Что до 12 строк, это, судя по всему, то количество, которое линии задержки могли обеспечивать без мерцания.

При символах 6х7 пикселей и строках по 80 символов в строке, на экран можно вывести 39,7 строк. 250 нас на пиксель и частота обновления в 30 Гц дают максимум в 133 333 пикселя, которые можно вывести на экран. Поскольку 2260 разделяет пиксели межд двумя дисплеями, это даёт по 13,25 строк на дисплее, если не считать горизонтального обновления. Вертикальное обновление отъедает треть времени из-за взаимодействия с линиями задержки, что даёт нам 26,5 строк. Следовательно, железо может поддерживать порядка 12 строк текста (хотя, возможно, сначала IBM решила поддерживать 12 строк, а потом подстроила под это железо).


Фото из инструкции оператора 2260

Влияние, оказанное IBM 2260, показано в отчёте по терминалам 1974 года; там перечислено порядка 50 терминалов, совместимых с IBM 2260. IBM 2260 пользовалась бешеным успехом, что привело к увеличению популярности ЭЛТ-терминалов. У IBM 2260 не было дисплея 80×24 (хотя внутри себя машина и генерировала матрицу 80×24), но были дисплеи 40×12 и 80×12, что сделало дисплей 80×24 следующим логичным шагом.

Видеодисплей IBM 3270

В 1971 году IBM выпустила видеодисплей IBM 3270, продолживший доминирование на рынке ЭЛТ-терминалов. Он поддерживал дисплей 40×12, чтобы обеспечить возможность плавного перехода с 2260-й, но также поддерживал и более крупный дисплей 80×24. У 3270-й было больше возможностей, чем у 2260-й – защищённые поля ввода, более эффективные модели передачи данных, текст настраиваемой интенсивности. Также он был значительно дешевле 2260-й, что обеспечило ему популярность.

По сравнению, дисплей IBM 3270 стоил от $4 000 до $7 435, а контроллер — от $6 500 до $15 725. В отчёте Datapro 1974 года указано, что дисплей системы IBM 2260 стоил от $1270 до $2140, а контроллер – от $15 715 до $86 365. Часть электрики переехала из управляющего модуля в сам дисплей, что отразилось на их стоимости.

Световое перо использовалось для выбора полей данных вместо мыши.
Терминал IBM 3270. Это более поздняя модель в линейке терминалов, 3278; на фотографии видно 43 строки по 80 символов

Электронные лампы и транзисторы были заменены микроэлектронными схемами типа SLT, похожей на интегрированные микросхемы. Технологии, использованные в 3270-й, были из следующего поколения по сравнению с 2260-й. Модель 40×12 использовала один банк сдвиговых регистров для хранения 480 символов. Вместо звуковых линий задержки использовались 480-битные сдвиговые регистры MOS. Иначе говоря, в 3270-й хранилище работало блоками по 480 символов для совместимости с 2260-й, а использование четырёх блоков давало дисплей 80×24. В более крупной модели четыре банка сдвиговых регистров (1920 символов) использовались для поддержки дисплея 80×24. 480 бит – странный размер, не являющийся степенью двойки; но, в отличие от матричных чипов RAM, у сдвиговых регистров не было адресных битов, их структура была змееподобной, поэтому они могли быть произвольного размера:

Он не использовался в IBM 3270, но работал в других терминалах, например, в Datapoint 2200.
Сдвиговый регистр Intel 1405.

Это сильно повлияло на рынок терминалов, поскольку заставляло других изготовителей, желавших участвовать в гонке, производить совместимые терминалы. IBM обеспечивала всестороннюю поддержку ПО для терминала 3270. В 1977 IBM представила 3278-ю, улучшенную версию терминала 3270, поддерживавшую 12, 24, 32 и 43 строки данных. В частности, из-за этого совместимость с 3270-й и дисплей 80×24 символа стали стандартом де-факто. Новые размеры в 32 и 43 строки не прижились, но строка статуса стала распространённой возможностью у терминалов конкурентов. Также там была добавлена строка состояния, «область информации для оператора».

Хотя в 1970-х (а, может, и раньше) уже были дисплеи размером 80×25, дисплей 80×24 был куда как более распространён. Отчёты по индустрии показывают изменение популярного размера терминала с 1970-х по 1990-е. К 1979 году самым популярным терминалом была модель DEC VT100, имевшая дисплей 80×24, и проданная в количестве более миллиона экземпляров. Широчайшее разнообразие размеров терминалов, существовавшее в 1974 году, со временем сократилось, и рынок в итоге остановился на 80×24. Даже к 1991 году размер 80×25 встречался очень редко. Терминалы начали поддерживать размер 132×24 для совместимости с принтерами, печатавшими по 132 символа в строке, в особенности когда более крупные мониторы диагонали 15" начали дешеветь, однако самым популярным размером всё равно оставался 80×24.

IBM PC и популярность размера 80×25

Учитывая историческую популярность терминалов 80×24, почему же столько современных систем использует окна 80×25? И это тоже произошло благодаря IBM: дисплей 80×25 стал популярным с появлением в 1981 году IBM PC. Стандартная карта дисплея (MDA) выдавала монохромный текст 80×25, а карточка CGA выдавала 40×25 и 80×25 в цвете. Этот размер стал размером по умолчанию для консоли Windows, и типичным размером для окон терминалов на ПК.


IBM PC с дисплеем 80×25, который выводит карточка MDA (Monochrome Display Adapter)

Чтобы выяснить это, я связался с Дейвом Брэдли и Марком Дином, двумя инженерами, стоявшими у истоков IBM PC. Другие популярные в то время компьютеры использовали 24 строки, например, Osborne 1 и Apple II, поэтому мне было интересно, почему IBM PC использовал 25. IBM PC досталась клавиатура от DataMaster, только её отсоединили от основного модуля. Они объяснили, что IBM PC стал потомком забытого офисного компьютера IBM DataMaster, и многие проектные решения IBM PC вытекают из DataMaster. Обе системы использовали процессоры от Intel, 8-битный 8085 в DataMaster, и 16-битный 8088 в IBM PC. На обеих системах использовался BASIC, однако решение заказать интерпретатор BASIC для ПК у крохотной компании Microsoft изменило обе эти компании сильнее, чем кто-либо мог предположить. 62-контактная шина расширения ПК была почти идентичной таковой у DataMaster. У них были одинаковые контроллер прерываний, контроллер DMA, параллельный порт и чипы таймеров.


IBM DataMaster System/23 – микрокомпьютер, анонс которого был сделан в 1981 году, всего за месяц до IBM PC

Он должен был использовать дисплей 80×24 от DataMaster (который обозначен кодовым именем LOMA), а также размеры 40×16 и 60×16, более подходящие для телевизоров. Ниже приведена схема раннего проектного плана IBM PC. Но в итоге IBM PC оказался не похожим на этот план. Также на схеме упомянута цветная графическая система с 280×192 пикселями, такого же разрешения, какое было у Apple II.


18 кГц – это частота горизонтального сканирования, используемая картой MDA (18,432 кГц), и дающая большее разрешение, чем 15,750 у NTSC)

При использовании матрицы символов 8х8 обновлённый графический режим поддерживал текст 40×25 символов, а графический режим с удвоенным разрешением в 640×200 пикселей поддерживал текст 80×25. Разработчики IBM PC умудрились впихнуть чуть больше пикселей в дисплей, и получить размер 320×200. Иначе говоря, IBM PC в итоге стал использовать текстовый дисплей 80×25 потому, что на дисплее хватало пикселей, а также это отличало его от других систем, но эти причины не были главной мотивацией. Монохромная графическая карточка (MDA) тоже давала размер 80×25. В частности, разработчики ПК не были ограничены необходимостью обеспечивать совместимость с другими системами от IBM.

Заключение

Многие теории предлагали различные технические причины того, почему размер дисплея 80×24 (или 80×25) является естественным. Думаю, что широкое разнообразие размеров дисплеев в 1970-х доказывает, что искать технологическую мотивацию такого выбора не стоит. Размеры дисплеев просто сошлись к тому, что производила IBM – сначала это были перфокарты, потом терминал IBM 2260, потом IBM 3270, и потом IBM PC. Сначала на размеры терминалов влиял 72-столбцовый Teletype, однако и этот размер исчез в стремлении к совместимости с IBM. В итоге и появилась текущая ситуация с разделением на размеры 80×24 и 80×25.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть