Программа ввода или листинг ввода представляли собой исходный код компьютера, напечатанный в домашнем компьютерном журнале или книге. Он должен был вводиться с клавиатуры читателем и затем сохраняться на кассете или дискете . Результатом была пригодная для использования игра, утилита или прикладная программа.
Программы с возможностью ввода текста были широко распространены в эпоху домашних компьютеров с конца 1970-х до начала 1990-х годов, когда объем оперативной памяти 8-битных систем измерялся килобайтами , а большинство владельцев компьютеров не имели доступа к сетям, таким как системы электронных досок объявлений .
Такие журналы, как Softalk , Compute!, ANALOG Computing и Ahoy!, посвящали большую часть каждого выпуска программам ввода. Журналы могли содержать несколько игр или других программ за малую часть стоимости покупки коммерческого программного обеспечения на сменном носителе , но пользователю приходилось тратить до нескольких часов на ввод каждой из них. Большинство списков были либо на системно-специфическом диалекте BASIC , либо на машинном коде . Программы в машинном коде представляли собой длинные списки десятичных или шестнадцатеричных чисел, часто в форме DATA
операторов на BASIC. [1] Большинство журналов имели программное обеспечение для проверки ошибок, чтобы убедиться, что программа была введена правильно.
Программы ввода не были существенно перенесены на 16-битные компьютеры , такие как Amiga и Atari ST , поскольку и программы, и данные (например, графика) стали намного больше. Стало обычным включать в каждый выпуск журнала 3 1 ⁄ 2 - дюймовую дискету или CD-ROM .
Читатель брал распечатанную копию листинга программы, например, из журнала или книги, садился за компьютер и вручную вводил строки кода. Компьютеры этой эпохи автоматически загружались в среду программирования — даже команды для загрузки и запуска предварительно упакованной программы на самом деле были командами программирования, выполняемыми в прямом режиме . После ввода программы пользователь мог запустить ее, а также сохранить на диске или кассете для будущего использования. Пользователей часто предупреждали о необходимости сохранять программу перед ее запуском, так как ошибки могли привести к сбою, требующему перезагрузки, что сделало бы программу невосстановимой, если бы она не была сохранена. В то время как некоторые программы ввода были короткими, простыми утилитами или демонстрационными программами, многие программы ввода были полностью функциональными играми или прикладным программным обеспечением, иногда конкурирующими с коммерческими пакетами.
Type-in обычно писались на BASIC или в виде комбинации загрузчика BASIC и машинного кода . В последнем случае коды операций и операнды части машинного кода часто просто задавались как операторы DATA в программе BASIC и загружались с помощью цикла POKE , поскольку доступ к ассемблеру имели немногие пользователи . [a] В некоторых случаях предоставлялась специальная программа для числового ввода машинного кода. Программы с компонентом машинного кода иногда включали листинги на языке ассемблера для пользователей, у которых были ассемблеры и которые интересовались внутренней работой программы.
Недостатком ввода с клавиатуры была трудоемкость. Работа, необходимая для ввода текста среднего размера, составляла порядка часов. Если полученная программа не соответствовала вкусу пользователя, вполне возможно, что пользователь тратил больше времени на ввод программы, чем на ее использование. Кроме того, ввод с клавиатуры был подвержен ошибкам, как для пользователей, так и для журналов. Это было особенно верно для частей машинного кода программ BASIC, которые представляли собой не что иное, как строку за строкой данных, например, операторы DATA на языке BASIC. В некоторых случаях, когда версия ASCII, используемая на типе компьютера, для которого была опубликована программа, включала печатаемые символы для каждого значения от 0 до 255, код мог быть напечатан с использованием строк, содержащих глифы, которым сопоставлены значения, или мнемоники, такой как [SHIFT-R], указывающей пользователю, какие клавиши нажимать. В то время как программа BASIC часто останавливалась с ошибкой на неправильном операторе, части машинного кода программы могли давать сбои неотслеживаемыми способами. Это затрудняло правильный ввод программ. [b]
Другие решения существовали для утомительного набора, казалось бы, бесконечных строк кода. Внештатные авторы написали большинство программ ввода журналов и в сопроводительной статье часто предоставляли читателям почтовый адрес для отправки небольшой суммы ( обычно 3 доллара США ) для покупки программы на диске или ленте. К середине 1980-х годов, осознавая этот спрос со стороны читателей, многие издаваемые в США журналы предлагали все вводы каждого выпуска на дополнительном диске, часто с бонусной программой или двумя. Некоторые из этих дисков стали электронными изданиями сами по себе, пережив свой родительский журнал, как это произошло с Loadstar . Некоторые британские журналы иногда предлагали бесплатный гибкий диск , который проигрывался на проигрывателе, подключенном к кассетному входу микрокомпьютера. Были испробованы другие методы ввода, такие как Cauzin Softstrip , но без особого успеха.
Не все вводимые тексты были длинными. Колонка журнала Run «Magic» специализировалась на однострочных программах для Commodore 64. [2] Эти программы часто представляли собой графические демонстрации или иллюстрировали технические особенности архитектуры компьютера; текст, сопровождающий графические демонстрационные программы, избегал явного описания полученного изображения, побуждая читателя ввести его. [3]
Программы ввода текста предшествовали эре домашних компьютеров. Как писал Дэвид Х. Аль в 1983 году:
В 1971 году, будучи менеджером по образовательной продукции в Digital Equipment Corp. , я разослал призыв к играм в образовательные учреждения по всей Северной Америке. Я был ошеломлен ответом. Я выбрал лучшие игры и собрал их в книгу 101 Basic Computer Games . После того, как я составил книгу в свободное время, я убедил нерешительных менеджеров в DEC опубликовать ее. Они были убеждены, что она не будет продаваться. Она, а также ее продолжение More Basic Computer Games были проданы тиражом более полумиллиона экземпляров, доказав, что люди интересуются компьютерными играми. [4]
После ухода Ала из DEC в июле 1974 года он инициировал двухмесячный журнал под названием Creative Computing , работая менеджером по маркетингу в сфере образования в AT&T. Первый выпуск был выпущен в октябре того же года, и к четвертому году над ним работала команда из восьми человек. В журнале были представлены компьютерные игры, и его дебют совпал с представлением Altair 8800 — первого широкодоступного компьютерного комплекта, который был анонсирован в январе 1975 года, по словам Ала. [5]
Большинство ранних компьютерных журналов публиковали программы для ввода текста. Профессиональные и ориентированные на бизнес журналы, такие как Byte и Popular Computing, печатали их реже, часто как тестовую программу для иллюстрации технической темы, освещаемой в журнале, а не как приложение для общего пользования. [6] Ориентированные на потребителя издания, такие как Compute! и Family Computing, выпускали несколько в каждом выпуске. Программы иногда были специфичны для определенного домашнего компьютера, а иногда совместимы с несколькими компьютерами. Журналы, ориентированные на платформы, такие как Compute!'s Gazette ( VIC-20 и Commodore 64 ) и Antic ( компьютеры Atari 8-bit ), поскольку им приходилось печатать только одну версию каждой программы, могли печатать больше, более длинные списки.
Хотя программы ввода обычно были защищены авторским правом, как и многие игры в BASIC Computer Games , авторы часто призывали пользователей изменять их, добавляя возможности или иным образом изменяя их в соответствии со своими потребностями. Многие авторы использовали статью, сопровождающую вводимые программы, чтобы предложить изменения для читателя и программиста. Пользователи иногда отправляли свои изменения обратно в журнал для последующей публикации. [7] Это можно было бы считать предшественником программного обеспечения с открытым исходным кодом , но сегодня большинство лицензий с открытым исходным кодом указывают, что код должен быть доступен в машиночитаемом формате.
Antic заявила в 1985 году, что ее сотрудники «тратят значительную часть своего времени на усердное прочесывание входящих заявок на практические прикладные программы. Мы получаем много программ дисковых каталогов, хранилищ файлов рецептов, мини-текстовых процессоров и других перефразированных версий старых идей». [8] В то время как большинство вводимых текстов были простыми играми или утилитами и, вероятно, удерживали интерес пользователя только на короткое время, некоторые из них были очень амбициозными, соперничая с коммерческим программным обеспечением. Возможно, самым известным примером является вводимый текстовый процессор SpeedScript , опубликованный Compute!'s Gazette и Compute! для нескольких 8-битных компьютеров, начиная с 1984 года. Compute! также опубликовал SpeedScript вместе с некоторыми вспомогательными программами в форме книги. Он сохранил последователей в следующем десятилетии, поскольку пользователи совершенствовали его и добавляли к нему возможности.
Compute! прекратила поддержку программ ввода в мае 1988 года, заявив: «Поскольку компьютеры и программное обеспечение стали более мощными, мы поняли, что невозможно предложить высококачественные программы ввода для всех машин. И мы также понимаем, что вы все меньше склонны вводить эти программы». [9] По мере снижения стоимости кассет и дискет , а также по мере того, как сложность коммерческих программ и технические возможности компьютеров, на которых они работали, постоянно росли, важность ввода в систему снижалась. В Европе стали обычным явлением диски для журнальных обложек , и ввод в систему практически прекратился.
Чтобы предотвратить ошибки при вводе листингов, большинство изданий предоставляли короткие программы для проверки правильности ввода кода. Они были специфичны для журнала или семейства журналов, и для исходных и двоичных данных BASIC обычно использовались разные программы проверки.
Compute! и Compute!'s Gazette печатали краткий список в каждом выпуске для The Automatic Proofreader для проверки программ BASIC, в то время как ANALOG Computing использовал D:CHECK (для диска) и C:CHECK (для кассетной ленты). Для двоичных листингов Compute! предлагал MLX , который был интерактивной программой для ввода данных. ANALOG Computing представлял программы машинного кода какDATA
операторы BASIC, затем добавлял короткую программу для вычисления контрольных сумм. Запуск программы вывел список значений для проверки по тем, которые были напечатаны в журнале. После успешной проверки программа сохранялась как двоичный файл, и код BASIC больше не требовался. Монитор машинного кода MIKBUG для Motorola 6800 конца 1970-х годов включал контрольную сумму в свои шестнадцатеричные листинги программ. [10]