У терминала DEC VT100, проданного в количестве более миллиона штук, был дисплей 80×24 символа
Чем объяснить популярность терминалов 80×24 и 80×25 символов? Недавняя запись в другом блоге подвигла меня на небольшое исследование. Источником строк длиной в 80 символов очевидно являются перфокарты, и об этом пишут довольно часто. Однако что насчёт 24 или 25 строк на экране? Теорий существует много, но я нашёл простой ответ: IBM, а в частности, её доминирование на рынке терминалов. В 1971 году IBM ввела терминал с дисплеем 80×24 символа (модель 3270), и вскоре он стал наиболее продаваемым терминалом, заставив остальные равняться на размер 80×24. Дисплей для IBM PC добавил ещё одну строку, и сделал размер 80×25 стандартом в мире ПК. Влияние этих систем остаётся в силе и десятилетия спустя: строки длиной в 80 символов являются стандартами по сей день, как и терминальные окна 80×24 и 80×25.
В этой статье я обсужу эту историю в деталях, включая некоторые другие системы, сыгравшие в ней ключевую роль. Рынок ЭЛТ-терминалов начался, по сути, с выхода IBM 2260 Display Station в 1965-м, созданной на основе таких занятных технологий, как звуковые линии задержки. Это привело к появлению популярного дисплея IBM 3270, и далее, к распространённым и недорогим терминалам типа DEC VT100. В 1981 году IBM выпустила микрокомпьютер DataMaster. Сейчас он практически забыт, но он сильно повлиял на IBM PC, включая и его дисплей. Также в статье изучается рынок терминалов 1970-х и 1980-х годов; из них становится ясно, что популярность размеров дисплеев определяли рыночные, а не технологические силы.
Некоторые теории касательно размеров 80×24 и 80×25
Аргументы о происхождении размеров терминалов выдвигаются уже несколько десятилетий, но в упомянутой уже статье была представлена детальная и интересная теория. Вкратце, там сказано, что дисплей 80×25 использовался потому, что он был совместим с 80-столбцовыми перфокартами от IBM, хорошо умещался на телеэкране с соотношением сторон 4:3, и помещался в RAM объёмом 2К. Это привело к появлению таких терминалов размера 80×25, как DEC VT100 в 1978-м. Его огромная популярность сделала его стандартом, и породила изобилие терминалов 80×25. Такова, по крайней мере, теория.
80-столбцовые дисплеи и правда произошли от перфокарт, и VT100 действительно стал стандартом, но дальше эта теория разваливается. Самая большая проблема в том, что дисплеи VT100 имели размер 80×24, а не 80×25. Кроме того, в инструкции описано, что у VT100 была память объёмом 3K, из которых 2,3 К использовал экран, а микропроцессор 8080 использовал остальное. Каждая строка хранилась в памяти с тремя дополнительными байтами в конце, использовавшимися в качестве указателей для прокрутки. Поэтому видеопамять терминала не вмещалась в 2К. Наконец, до 1980-х большинство дисплеев имели размер 80×24, а не 80×25.
На сайтах Software Engineering StackExchange и Retrocomputing StackExchange предлагались и другие теории, утверждавшие, что терминалы 80×24 появились по таким техническим причинам, как частота обновления телеэкранов, размеры памяти, типографика, история пишущих машинок, и так далее. Однако у теорий, по которым дисплей 80×24 является неизбежным следствием технологий, есть фундаментальная проблема: в середине 1970-х у терминалов были десятки различных вариантов размера, к примеру, 31×11, 42×24, 50×20, 52×48, 81×38, 100×50 и 133×64. Ясно, что никакие технологические ограничения не заставляли терминалы принимать определённый размер. Наоборот, с улучшением технологий все эти терминалы исчезли, и к началу 1980-х в основном остались терминалы размером 80×24. Это говорит, что ключевым фактором стала стандартизация, а не технологии.
Кратко просуммирую, почему технические факторы не сильно влияли на размер терминала. Телевизоры в США использовали 525 линий развёртки и частоту обновления в 60 Гц, а 40% терминалов использовали другие значения (в 1980-х домашним компьютерам приходилось работать с NTSC-телевизорами со своими ограничениями, поэтому они часто использовали строки длиной в 40 или 64 символа). Частота и полоса пропускания не заставляли делать дисплеи определенного размера, поскольку терминалы выводили символы с различными размерами матриц.
Растровый терминал рисует каждый символ из матрицы точек. В 1975 году чаще всего использовались матрицы 5х7 и 7х9. Часто у матрицы были поля – Apple II использовал матрицу 5х7 с полями, что в итоге составляло поле размером 7х8 точек. Некоторые системы (к примеру, IBM CGA) использовали матрицу 8х8 без полей для поддержки графических символов, изображения которых соприкасались друг с другом. Другие системы применяли более крупные матрицы. IBM Datamaster использовал матрицу 7×9 точек на поле в 10×14 точек, а у Quotron 800 была матрица 16×20. В итоге терминал размером 80×24 символов может потребовать совершенно разного количества пикселей в целом, в зависимости от размера матрицы. В этом состоит недостаток утверждения, что размер терминалов определялся количеством линий развёртки и пропускной способностью.
Хотя стоимость памяти была значительной, объёмы чипов DRAM росли в четыре раза каждые три года, что делало память лишь временным ограничением. Соотношение сторон экрана не было определяющим фактором, поскольку часто пропорции символов не совпадали с пропорциями экрана. Даже на ЭЛТ с пропорциями 4:3 терминалы могли использовать текст других пропорций, оставляя часть экрана пустой. Не были редкостью и особые размеры терминалов – к примеру, экран Datapoint 2200 был необычно вытянутым, чтобы повторять размеры перфокарты. У Teletype Model 40 было необычное соотношение сторон экрана, 2:1. Технология, конечно, влияла на процесс, но она не остановила ранних производителей от создания разных терминалов, от 32×8 до 133×64.
Teletype Model 40
Рост популярности ЭЛТ-терминалов
Теперь нам может помочь небольшая часть истории ЭЛТ-терминалов. Многие читатели знакомы с ASCII-терминалами – такими, как отдельные терминалы DEC VT100, последовательные терминалы, соединяющиеся с ПК, или последовательные порты на платах типа Arduino. Терминалы такого типа происходят от телепринтеров – электромеханических клавиатур/принтеров, появившихся в начале XX века. Более всего из них известен Teletype, пользовавшийся популярностью у газетчиков и компьютерщиков в 1970-х (устройство Linux /dev/tty названо в его честь). Телетайпы обычно выводили строки по 72 символа на бумажном рулоне.
Teletype ASR33 передавал ASCII символы и печатал по 72 символа в строке. С 1963 по 1981 год было произведено сотни тысяч копий этой модели. Слева расположено устройство для чтения перфоленты и перфоратор.
В 1970-х рынок замены ЭЛТ-терминалов был крупным и прибыльным. AT&T представила Teletype Model 40 в 1973 году, и у этого ЭЛТ-терминала дисплей выдавал 80×24 символа. Многие другие компании представили конкурирующие ЭЛТ-терминалы, и «Teletype-совместимые» устройства стали целым сегментом рынка. К 1981 году эти терминалы использовались в разных ролях, а не только в качестве замены телепринтеров, и их название поменялось на «ASCII-терминалы». К 1985 году ЭЛТ-терминалы достигли небывалого успеха, и в США их работало порядка 10 млн штук.
Терминал из линейки IBM 3270, конкретно – модель 3278.
Однако существует параллельный мир терминалов мейнреймов, который может быть незнакомым для многих читателей. В 1965 году IBM представила IBM 2260 Display Terminal, и теми самым «одобрила» ЭЛТ-терминалы, которые до того считались «модной новинкой». Этот терминал доминировал на рынке, пока IBM не заменила его более дешёвым и продвинутым IBM 3270 в 1971. В отличие от асинхронных ASCII-терминалов, передававших отдельные нажатия клавиш, эти терминалы были настроены на блочную работу, по сути обмениваясь с мейнреймом крупными блоками символов. Терминал 3270 был довольно-таки «умным»: пользователь мог заполнять размеченные поля на экране, а потом передавать все данные сразу, нажав клавишу Enter (именно поэтому у современных клавиатур есть клавиша Enter). Отправка блока данных была более эффективным методом по сравнению с отправкой отдельных нажатий, и позволяла мейнреймам поддерживать сотни терминалов разом.
На диаграмме ниже показано состояние рынка терминалов на 1974 года. Управлял им IBM 3270, вытеснивший к этому моменту 2260-ю. Имея 50% рынка, IBM по сути определяла характеристики ЭЛТ-терминала. Замена телепринтеров была большим и влиятельным рынком; Teletype Model 40 был скромной моделью, но с растущей важностью. Хотя вскоре основным игроком станет DEC, в том году он находился в секторе «независимые системы».
Терминал с видеодисплеем IBM 2260
IBM 2260 представили в 1965, и это был один из первых терминалов с видеодисплеем. Видеодисплеи с векторной графикой появились за много лет до этого, ещё в начале 1950-х. Это были векторные терминалы, получавшие картинку при помощи произвольных линий, а не пикселей. И хотя они могли отображать буквы при помощи линий, они были чрезвычайно дороги и использовались для построения графиков.
IBM 2260 выполнял три роли: удалённый ввод данных вместо перфокарт, запросы (просмотр записей в базе данных), и системная консоль. Этот компактный терминал весил 20 кг, а его размер позволял уместить его на месте стандартной пишущей машинки. Посмотрите, какая у него толстая клавиатура: он использовал сложный механизм старого перфоратора от IBM, с рычагами, дисками и электромагнитами.
IBM 2260 Display Station
Вас может удивить, что IBM смогла создать такой компактный терминал при помощи технологий 1965 года. Фокус в том, что это был просто ЭЛТ-дисплей с клавиатурой; вся управляющая логика, генерация символов, хранение и интерфейсы содержались в шкафу 450 кг весом (фото внизу). Терминал с клавиатурой назывался IBM 2260 Display Station, шкаф с логикой — IBM 2848 Display Control, а всю систему целиком люди называли просто 2260-я. В шкафу содержались схемы для управления несколькими терминалами одновременно, вплоть до 24 штук. Он генерировал для них пиксели и отправлял видеосигналы на мониторы, которые могли располагаться на расстоянии до 600 м от него.
IBM 2848 Display Control поддерживал до 24 терминалов. Шкаф был полутора метров в ширину и весил 450 кг.
Одна из наиболее интересных особенностей 2260-й – звуковые линии задержки, использовавшиеся для хранения пикселей. Биты хранились в виде звуковых импульсов, отправляемых в никелевый провод длиной порядка 15 м. Импульсы шли по проводу и выходили с другого его конца ровно через 5,5545 мс. Отправляя импульс (или не отправляя его для обозначения 0) каждые 500 нс, провод мог хранить в себе 11 008 бит. Пара проводов создавала буфер, хранивший пиксели для 480 символов.
Линия задержки выдавала 1 бит каждые 500 нс. Две линии задержки были соединены в буфер, обеспечивая выдачу битов в два раза быстрее: каждые 250 нс. Данные были разделены на 256 «слотов», по одному на вертикальную линию развёртки (слоты были чистой концепцией, поскольку линия задержки подавала просто поток битов). В 240 слотах содержались данные, а 16 были пустыми для горизонтального возврата луча. В каждом слоте хранилось по 86 битов: 7 битов для 12 рядов символов, и два бита чётности (каждая линия развёртки делилась на два дисплея, поэтому слот представлял 6 символов на чётном дисплее и 6 на нечётном). Шесть слотов составляли вертикальный столбец символов: один слот хранил двоично-десятичное значение, а пять – пиксели. Таким образом, в каждом буфере хранились данные для 480 символов для поддержки дисплеев 40х6. Два буфера поддерживали пару дисплеев 40×12, а четыре – пару дисплеев 80×12.
Модуль звуковой задержки для дисплея IBM 2260. В нём содержалось порядка 15 м никелевого провода в катушках.
У звуковых линий задержки было несколько проблем. Во-первых, приходилось постоянно обновлять данные: когда биты выходили с одного конца провода, нужно было отправлять их ему обратно на другой конец. Во-вторых, у линии задержки не было произвольного доступа: для обновления символа приходилось ждать несколько миллисекунд, пока все биты пройдут свой путь. В-третьих, линия задержки была чувствительна к вибрации; в Википедии написано, что даже тяжёлые шаги могли нарушить работу экрана. В-четвёртых, скорость работы линии задержки зависела от изменений температуры; перед использованием ей нужно было разогреваться вплоть до двух часов подряд в шкафу с контролируемой температурой. Учитывая все эти недостатки, вы можете удивиться, почему же эти линии задержки всё же использовались. Главная причина – они были гораздо дешевле памяти на прошитых сердечниках. Последовательная природа линии задержки также хорошо сочеталась с последовательной природой растрового дисплея.
У никелевого провода в катушке были преобразователи на обоих концах (в центре и слева внизу, где к ним подсоединены перекрученные провода). Для подстройки задержки стержень с проводом (слева внизу) сдвигал положение преобразователя на проводе. Металлические коробки на концах проводов – амортизаторы, предотвращающие отражение.
На фото ниже показан экран 2260 Model 2, с 12 строк по 40 символов (у Model 1 было 6 строк по 40 символов, а у Model 3 – 12 строк по 80 символов). Отметьте двойное расстояние между строками; на самом деле управляющий модуль генерировал 24 строки текста, но строки через одну отправлялись на два разных терминала. Очень странный подход, однако он разделял высокую стоимость управляющего железа между двумя терминалами. Ещё одной странной характеристикой 2260-й были вертикальные линии развёртки, в отличие от горизонтальных линий развёртки у большинства видеодисплеев и телевизоров.
Дисплей IBM 2260
Каждый символ обозначался 6-битным кодом EBCDIC, что давало набор из 64 символов (без строчных букв). Ещё одна странная особенность 2260-й – преобразование 6-битных символов в блок пикселей 5х7. Для этого использовалась специальная матрица на магнитных сердечниках, в которой были сердечники только для единичных битов, а для нулевых – не было, поэтому она работала, как память только для чтения. В итоге можно было видеть символы на матрице сердечников. Матрица хранит девять 7-битных слов для каждого из 64 символов: первые пять слов хранят блок пикселей, а оставшиеся четыре – это таблица для преобразования кода символа EBCDIC в ASCII или обратно, или коды для управления принтером.
Линии задержки хранили пиксели, которые нужно было выводить, а ещё они хранили коды EBCDIC для каждого символа. Фокус был в использовании пустой колонки пикселей между символами, обеспечивавшей расстояние между символами по горизонтали. Система использовала его для хранения двоично-десятичного значения символа, но гасила дисплей при показе этой колонки, чтобы это значение не выводилось на экран в виде пикселей. Это позволяло хранить 6-битное значение символа практически нахаляву.
Интересующий нас вопрос состоит в том, почему у 2260-й был дисплей с 12 строками из 80 символов? Длина строки в 80 символов позволяла терминалам занять место 80-столбцовых перфокарт (у моделей с 40 символами в строке карта разбивалась на 2 строчки). Что до 12 строк, это, судя по всему, то количество, которое линии задержки могли обеспечивать без мерцания.
250 нас на пиксель и частота обновления в 30 Гц дают максимум в 133 333 пикселя, которые можно вывести на экран. При символах 6х7 пикселей и строках по 80 символов в строке, на экран можно вывести 39,7 строк. Вертикальное обновление отъедает треть времени из-за взаимодействия с линиями задержки, что даёт нам 26,5 строк. Поскольку 2260 разделяет пиксели межд двумя дисплеями, это даёт по 13,25 строк на дисплее, если не считать горизонтального обновления. Следовательно, железо может поддерживать порядка 12 строк текста (хотя, возможно, сначала IBM решила поддерживать 12 строк, а потом подстроила под это железо).
Фото из инструкции оператора 2260
IBM 2260 пользовалась бешеным успехом, что привело к увеличению популярности ЭЛТ-терминалов. Влияние, оказанное IBM 2260, показано в отчёте по терминалам 1974 года; там перечислено порядка 50 терминалов, совместимых с 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-й, что обеспечило ему популярность.
В отчёте Datapro 1974 года указано, что дисплей системы IBM 2260 стоил от $1270 до $2140, а контроллер – от $15 715 до $86 365. По сравнению, дисплей IBM 3270 стоил от $4 000 до $7 435, а контроллер — от $6 500 до $15 725. Часть электрики переехала из управляющего модуля в сам дисплей, что отразилось на их стоимости.
Терминал IBM 3270. Световое перо использовалось для выбора полей данных вместо мыши. Это более поздняя модель в линейке терминалов, 3278; на фотографии видно 43 строки по 80 символов
Технологии, использованные в 3270-й, были из следующего поколения по сравнению с 2260-й. Электронные лампы и транзисторы были заменены микроэлектронными схемами типа SLT, похожей на интегрированные микросхемы. Вместо звуковых линий задержки использовались 480-битные сдвиговые регистры MOS. Модель 40×12 использовала один банк сдвиговых регистров для хранения 480 символов. В более крупной модели четыре банка сдвиговых регистров (1920 символов) использовались для поддержки дисплея 80×24. Иначе говоря, в 3270-й хранилище работало блоками по 480 символов для совместимости с 2260-й, а использование четырёх блоков давало дисплей 80×24. 480 бит – странный размер, не являющийся степенью двойки; но, в отличие от матричных чипов RAM, у сдвиговых регистров не было адресных битов, их структура была змееподобной, поэтому они могли быть произвольного размера:
Сдвиговый регистр Intel 1405. Он не использовался в IBM 3270, но работал в других терминалах, например, в Datapoint 2200.
IBM обеспечивала всестороннюю поддержку ПО для терминала 3270. Это сильно повлияло на рынок терминалов, поскольку заставляло других изготовителей, желавших участвовать в гонке, производить совместимые терминалы. В частности, из-за этого совместимость с 3270-й и дисплей 80×24 символа стали стандартом де-факто. В 1977 IBM представила 3278-ю, улучшенную версию терминала 3270, поддерживавшую 12, 24, 32 и 43 строки данных. Также там была добавлена строка состояния, «область информации для оператора». Новые размеры в 32 и 43 строки не прижились, но строка статуса стала распространённой возможностью у терминалов конкурентов.
Отчёты по индустрии показывают изменение популярного размера терминала с 1970-х по 1990-е. Хотя в 1970-х (а, может, и раньше) уже были дисплеи размером 80×25, дисплей 80×24 был куда как более распространён. Широчайшее разнообразие размеров терминалов, существовавшее в 1974 году, со временем сократилось, и рынок в итоге остановился на 80×24. К 1979 году самым популярным терминалом была модель DEC VT100, имевшая дисплей 80×24, и проданная в количестве более миллиона экземпляров. Терминалы начали поддерживать размер 132×24 для совместимости с принтерами, печатавшими по 132 символа в строке, в особенности когда более крупные мониторы диагонали 15" начали дешеветь, однако самым популярным размером всё равно оставался 80×24. Даже к 1991 году размер 80×25 встречался очень редко.
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)
Другие популярные в то время компьютеры использовали 24 строки, например, Osborne 1 и Apple II, поэтому мне было интересно, почему IBM PC использовал 25. Чтобы выяснить это, я связался с Дейвом Брэдли и Марком Дином, двумя инженерами, стоявшими у истоков IBM PC. Они объяснили, что IBM PC стал потомком забытого офисного компьютера IBM DataMaster, и многие проектные решения IBM PC вытекают из DataMaster. IBM PC досталась клавиатура от DataMaster, только её отсоединили от основного модуля. На обеих системах использовался BASIC, однако решение заказать интерпретатор BASIC для ПК у крохотной компании Microsoft изменило обе эти компании сильнее, чем кто-либо мог предположить. Обе системы использовали процессоры от Intel, 8-битный 8085 в DataMaster, и 16-битный 8088 в IBM PC. У них были одинаковые контроллер прерываний, контроллер DMA, параллельный порт и чипы таймеров. 62-контактная шина расширения ПК была почти идентичной таковой у DataMaster.
IBM DataMaster System/23 – микрокомпьютер, анонс которого был сделан в 1981 году, всего за месяц до IBM PC
Ниже приведена схема раннего проектного плана IBM PC. Он должен был использовать дисплей 80×24 от DataMaster (который обозначен кодовым именем LOMA), а также размеры 40×16 и 60×16, более подходящие для телевизоров. Также на схеме упомянута цветная графическая система с 280×192 пикселями, такого же разрешения, какое было у Apple II. Но в итоге IBM PC оказался не похожим на этот план.
18 кГц – это частота горизонтального сканирования, используемая картой MDA (18,432 кГц), и дающая большее разрешение, чем 15,750 у NTSC)
Разработчики IBM PC умудрились впихнуть чуть больше пикселей в дисплей, и получить размер 320×200. При использовании матрицы символов 8х8 обновлённый графический режим поддерживал текст 40×25 символов, а графический режим с удвоенным разрешением в 640×200 пикселей поддерживал текст 80×25. Монохромная графическая карточка (MDA) тоже давала размер 80×25. Иначе говоря, IBM PC в итоге стал использовать текстовый дисплей 80×25 потому, что на дисплее хватало пикселей, а также это отличало его от других систем, но эти причины не были главной мотивацией. В частности, разработчики ПК не были ограничены необходимостью обеспечивать совместимость с другими системами от IBM.
Заключение
Многие теории предлагали различные технические причины того, почему размер дисплея 80×24 (или 80×25) является естественным. Думаю, что широкое разнообразие размеров дисплеев в 1970-х доказывает, что искать технологическую мотивацию такого выбора не стоит. Размеры дисплеев просто сошлись к тому, что производила IBM – сначала это были перфокарты, потом терминал IBM 2260, потом IBM 3270, и потом IBM PC. Сначала на размеры терминалов влиял 72-столбцовый Teletype, однако и этот размер исчез в стремлении к совместимости с IBM. В итоге и появилась текущая ситуация с разделением на размеры 80×24 и 80×25.
Автор: Вячеслав Голованов