Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
IBM 1130 с периферийными устройствами, включая перфорацию для считывания бумажной ленты, устройство для чтения / перфорации карт IBM 1442 (сзади) и плоттер IBM 1627 Calcomp.
Консоль IBM 1130

IBM 1130 Computing System, введенная в 1965 году [1] была IBM наименее дорогой «s компьютер в то время. Бинарная 16-битная машина была продана на чувствительные к цене, требовательные к вычислениям технические рынки, такие как образование и инженерия, после десятичной системы IBM 1620 в этом сегменте рынка. Типичные установки включали диск объемом 1 мегабайт, на котором хранилась операционная система, компиляторы и объектные программы, а исходный код программы создавался и поддерживался на перфокартах . Фортран был наиболее распространенным языком программирования, но было доступно несколько других, включая APL .

1130 также использовался как интеллектуальный интерфейс для подключения графического дисплея IBM 2250 или как рабочая станция удаленного ввода заданий (RJE), подключенная к мэйнфрейму System / 360 .

Описание [ править ]

Плата SLT двойной ширины от IBM 1130. Квадратные металлические банки содержат гибридные схемы.

Общий объем производства 1130 оценивается в 10 000 экземпляров. [2] 1130 занимает свое место в истории вычислительной техники, потому что он (и его клоны, произведенные не IBM) дал многим людям первое прямое взаимодействие с компьютером. Его соотношение цены и качества было хорошим, и он, в частности, включал недорогие съемные дисковые накопители с надежным, простым в использовании программным обеспечением, поддерживающим несколько языков высокого уровня. Низкая цена (от около $ 32000 или $ 41000 с диском) [1] и хорошо сбалансированный набор функций включены интерактивным «открыт магазином» программа развития .

В IBM 1130 используется та же упаковка электроники, которая называется Solid Logic Technology (SLT), что и в System / 360 . Он имеет 16-битную двоичную архитектуру, как и более поздние миникомпьютеры, такие как PDP-11 и Data General Nova .

Адресное пространство составляет 15 бит, ограничивая 1130 до 32768 16-битовых слов ( 65536 байт ) памяти. В 1130 используется память с магнитным сердечником , к которой процессор обращается на границах слов, используя режимы прямой, косвенной и индексированной адресации.

Модели [ править ]

IBM реализовала пять моделей центрального процессора 1131, основного компонента обработки IBM 1130. Модели с 1 по 5 описывают время цикла основной памяти, а также способность модели поддерживать дисковое хранилище. Буквы от A до D, добавленные к номеру модели, обозначают объем установленной основной памяти.

Центральный процессор IBM 1131 весит около 760/1050 фунтов (345/477 кг). [3]

Модель 4 была более дешевым продуктом с временем цикла 5,6 мкс. Некоторые покупатели обновлений производительности заметили, что регулировка в полевых условиях для достижения улучшения была на удивление тривиальной.

1132 IBM принтер основан на 1130 процессоре , а не внутренней логикой , чтобы определить , когда огонь печатающих колеса , как они повернуты. Принтеры для Model 4 работают медленнее, но более медленный процессор все равно не успевает за ним. В руководстве по аппаратному обеспечению раскрывается, что, когда Модель 4 обслуживала два прерывания наивысшего уровня ( прерывание столбца устройства чтения карт уровня 0 или прерывание принтера уровня 1), он работал с более коротким временем цикла 3,6 мкс. Некоторые пользователи Model 4 напишут фальшивый драйвер принтера, который не отключает прерывание принтера, чтобы извлечь выгоду из более высокой скорости процессора. Однако в течение этого интервала прерывания нижнего уровня запрещены, даже прерывание конца карты (уровень 4) от устройства чтения карт 1442.

Последующие продукты

IBM 1800 представляет собой вариант IBM 1130 для управления технологических процессов приложений. Он использует аппаратную, а не базовую память для трех индексных регистров и имеет две дополнительные инструкции (CMP и DCM), а также дополнительные возможности прерывания и ввода-вывода . Это преемник IBM 1710 , так как IBM 1130 является преемником IBM 1620 .

IBM 1500 представляет собой многопользовательский система образования основана на либо IBM 1130 или IBM 1800. Он поддерживает до 32 студенческих рабочих станций, каждая из которых с различными аудиовизуальными возможностями.

Кроме них, IBM не производила совместимых систем-преемников 1130. IBM System / 7 - это система управления технологическим процессом и система реального времени, а IBM Series / 1 - 16-разрядный миникомпьютер общего назначения.

Хронология
  • 11 февраля 1965 г. - IBM представляет 1130 (модели 1A, 1B, 2A и 2B). Также анонсирован принтер IBM 1132, самый дешевый онлайн-принтер для компьютеров, когда-либо объявленный IBM в то время.
  • Четвертый квартал 1965 г. - первые поставки клиентам начинаются с завода в Сан-Хосе.
  • 31 марта 1966 г. - IBM представляет образовательную систему IBM 1500.
  • Апрель 1966 г. - корабли IBM 1800. [4] : 497
  • 9 августа 1966 г. - IBM выпускает адаптер синхронной связи 1130, который позволяет подключать небольшую систему 1130 с помощью обычных арендованных телефонных линий к любой модели IBM System / 360 и работать в качестве терминала связи для любой модели IBM System / 360.
  • 17 апреля 1967 г. - объявляется о четырехстороннем расширении 1130 (модели 2C, 2D, 3B, 3C и 3D), включая:
    • В пять раз больше дисковой памяти и в четыре раза больше основной памяти;
    • Дополнительная скорость обработки почти на 40 процентов выше, чем было доступно ранее;
    • Все больше и больше периферийного оборудования, включая оптический считыватель меток;
    • Улучшенный коммерческий программный пакет.
  • Январь 1968 - Начало поставок 1130 моделей 2C, 2D, 3B, 3C и 3D.
  • Июль 1968 г. - завод в Бока-Ратон начинает поставки модели 1130.
  • 22 июля 1971 г. - 1130 Модели 4А и 4В представлены на новом уровне экономики.
  • Сентябрь 1971 г. - Начало поставок 1130 Model 4 первым покупателям.
  • 31 мая 1972 г. - анонсированы модели 1C, 1D, 5B, 5C и 5D.
  • 1973 - Xerox 530 был продан как возможный преемник клиентов IBM 1130. [5] [6] [7] По состоянию на январь 1974 года заказы на Xerox 530 были признаны «обнадеживающими». [8]

Программное обеспечение [ править ]

Чтобы максимизировать скорость и сэкономить место, операционная система и компиляторы полностью написаны на языке ассемблера и используют редкие сегодня методы, включая смешивание кода и данных, а также самомодифицирующийся код .

Большая часть пользовательского программирования выполнялась на Фортране . Компилятор 1130 Fortran может работать на машине, имеющей всего 4096 слов ядра, хотя скомпилированная программа может не поместиться на такой машине. В этом многопроходном компиляторе каждая «фаза» обрабатывает всю исходную программу и делает еще один шаг к машинному коду. Например, первая фаза считывает исходные операторы в память, отбрасывает строки комментариев, удаляет пробелы, за исключением текстовых литералов, объединяет строки продолжения и идентифицирует метки. Компилятор был доступен как в резидентной версии, так и на 8-канальной перфоленте или перфокартах.

Наиболее широко используемой операционной системой для 1130 была Disk Monitor System Version 2 (DM2), представленная в 1967 году. DM2 - это система, ориентированная на выполнение отдельных задач и выполняемую с помощью пакетной обработки . Для этого требуется система с объемом оперативной памяти не менее 4 КБ и одним встроенным дисководом 2310 для размещения системы. Supervisor - крошечный по современным стандартам, содержащий различные системные детали, такие как процедуры прерывания первого уровня, называемые подпрограммами уровня прерывания , а также драйвер диска и процедуры для загрузки интерпретатора управления заданиями.команды и драйвер кардридера. Драйверы устройств для других устройств ввода-вывода, требуемые заданием, включаются как часть загрузки этого задания, что также может включать замену базового драйвера диска более продвинутым драйвером. Во время выполнения задания в памяти находится только резидентный монитор , называемый Skeleton Supervisor . Этому супервизору требуется всего 1020 байт, поэтому первая доступная память задачи начинается с адреса / 01FE (шестнадцатеричный) или слова 510. Когда задание завершилось или было прервано, супервизор загрузил анализатор контрольной записи монитора ( MCRA).), чтобы прочитать управление заданием для следующего. Пока задание выполняется, Супервизор неактивен. Помимо драйверов устройств и обработки прерываний, все процессорное время полностью посвящено работе. Другими программами, распространяемыми как часть операционной системы, были утилита дампа ядра , DUMP , и программа Disk Utility , DUP .

Система программирования карт / бумажных лент была доступна для поддержки систем без диска.

Существует иерархия драйверов устройств: драйверы, оканчивающиеся на Z, предназначены для Fortran, например DISKZ, в то время как программисты на ассемблере могут использовать DISK0, а DISK1 был даже быстрее при чтении нескольких секторов диска. Но DISKZ начинает адресацию своего сектора с первого доступного неиспользуемого сектора, в то время как остальные начинаются с нулевого сектора диска, что упрощает для программиста Fortran, занимающегося ассемблером, непреднамеренную перезапись загрузчика начальной загрузки.

Другие языки программирования, доступные на 1130, включены

  • APL , [9]
  • БАЗОВЫЙ ,
  • КОБОЛ , [10]
  • FORTH ,
  • PL / I (в виде интерпретатора SL / 1 ), [11] и
  • РПГ . [12]

Есть даже компилятор ALGOL , написанный на французском языке, так что "Debut ... Fin;" занять место "Начало ... Конец;". Все сообщения были на французском, так что цель - "Bonne compilation".

Университет Восточного Мичигана разработал компилятор Fortran IV для 1130, известный как Fortran-EMU, в качестве альтернативы компилятору Fortran IV (подмножество), предоставленному IBM. Он добавляет множество функций, включая тип данных LOGICAL, расширенную диагностику и шестибуквенные имена переменных. Компилятор Fortran-EMU распространялся в виде набора перфокарт в формате файла образа диска с удалением всей оставшейся системной области, чтобы предотвратить копирование других модулей, которые обычно находятся на том же диске, например ассемблера или компиляторов.

Государственный университет Оклахомы разработал компилятор ALGOL 68 , написанный на ANSI Fortran 1966 года. [13] [14] [15]

Интерпретатор FOCAL был разработан в Мичиганском университете.

IBM также распространила большую библиотеку программ, как поддерживаемых IBM (Тип I и II), так и неподдерживаемых (Тип III и IV).

Поскольку 1130 год был ориентирован в первую очередь на научный рынок, преобладали научные и инженерные программы:

  • Пакет научных подпрограмм
  • Подпрограммы Draw и Plot
  • Программа распределения нагрузки электроэнергетической системы
  • Множественная регрессия
  • Расчет аварийных токов системы распределения электроэнергии
  • Анализ труб
  • Координатная геометрия COGO
  • Непрерывное моделирование системы (CSMP)
  • Система подпрограмм математической оптимизации линейного программирования
  • Решатель систем проектирования конструкций (СТРЕСС)
  • Статистическая система [16]

1130 также занял свою нишу в качестве машины обработки данных для небольших организаций:

  • Пакет коммерческих подпрограмм 1130
  • Информационная система для студентов
  • CPM / PERT

Также существует специализированное программное обеспечение:

  • Удаленный ввод заданий (RJE) [17]
  • Наборный [18]

Порядок работы [ править ]

Перфокарта, содержащая самозагружающуюся программу 1130, которая копирует колоду карт, помещенную после нее во входной лоток.

Неизменные воспоминания об IBM 1130, возможно, возникли из-за необходимости постоянного вмешательства человека. Обычно он выполнял «задания», указанные в колоде перфокарт . Человек-оператор загружал задания в устройство для чтения карт и разделял их обратно на задания для возврата, возможно, вместе с распечаткой, отправителю. Оператор также должен будет следить за 1130 на предмет обнаружения неисправности или остановки задания и вмешиваться, нажимая INT REQклавишу на клавиатуре, чтобы перейти к началу следующего задания. [19]

Отметка начала работы была перфокартой, которая начиналась с // JOB. Любая карта, с которой начиналась, //была командой супервизору и не могла использоваться в качестве пользовательской программы или данных. Другие команды включены // DUPдля выполнения программы Disk Utility (для удаления файлов или добавления файла во временную область в коллекцию файлов) и // XEQдля выполнения именованной программы с диска. Если пользовательская программа попытается прочитать командную карту, стандартная процедура считывания карт будет сигнализировать об окончании ввода в программу и сохранить содержимое этой карты для Супервизора.

Начальная загрузка программы (IPL)

В отличие от IBM 360, где загрузочное устройство можно выбрать из системной консоли, IBM 1130 может быть «загружен» (IPL'd: начальная загрузка программы) только с внешнего устройства: устройства чтения карт или устройства чтения бумажных лент. [20] [21]

Процедура начальной загрузки считывает одну карту из устройства чтения карт. Загрузочная карта содержит двоичный код [22] для чтения содержимого нулевого сектора дисковода, который, в свою очередь, обрабатывает прерывание «завершение операции» от дисковода и выполняет дополнительные чтения с диска, чтобы подготовить 1130 для первой перфокарты. работа. Весь процесс занимает около секунды.

Процедуры восстановления

Когда IBM 1130 запущен, супервизор все еще находится в памяти и, вероятно, не поврежден, поскольку основная память сохраняет свое состояние без питания. Если оператор приходит к выводу, что программа пользователя остановилась, супервизор может уловить нажатие клавиши, чтобы прервать выполнение программы и перейти к следующей // карте. Супервизор не защищен от модификации плохо написанным заданием, что может потребовать от оператора перезагрузки 1130. Также не было защиты от записи на диск. Если копия системного программного обеспечения на диске была изменена, ее можно восстановить, перезагрузив ее примерно с 4000 перфокарт с двоичным кодом (примерно две коробки).

Организация диска [ править ]

Картридж для диска IBM 2315
2315 совместимый дисковый картридж (размеры 1 3/8 x 15 дюймов)

Дисковод IBM 2310 хранит сектора из 320 слов (640 байт) плюс адрес сектора из одного слова. Цилиндр состоит из двух дорожек на верхней и нижней поверхностях 2315, или одной тарелке на упаковке 1316 диска , используемого в 2311. Каждый цилиндр диска содержал восемь секторов. Сектор был логически разделен монитором на шестнадцать дисковых блоков по 20 слов каждый (40 Б); блок диска был единицей размещения файлов. Система различала системные картриджи , которые содержали монитор и утилиты вместе с пользовательскими данными, и несистемные картриджи , которые содержали только пользовательские данные. Системный картридж содержал идентификатор картриджа и программу холодного запуска.( код начальной загрузки ) в секторе 0, за которым следует область связи и резидентный монитор в секторах один и два. Сектора с третьего по пятый содержали Таблицу эквивалентности местоположения системы (SLET) - каталог всех этапов всех программ мониторинга. Другая контрольная информация заполнила первый трек.

За системной областью следовала фиксированная область, содержащая системные утилиты, подпрограммы дисковых драйверов, компиляторы, поставляемые IBM, и другую управляющую информацию. Эта область была отображена с помощью таблицы эквивалентности фиксированного местоположения (FLET), содержащей формат файла, имя файла и количество блоков на диске. Фиксированная область также содержала Таблицу эквивалентности расположений (LET) в том же формате, что и FLET, отображая следующую пользовательскую область диска. LET и FLET состояли из одной записи для каждого файла на диске, дающей имя файла и информацию о формате, его размер в дисковых блоках и номер его начального блока. [19]

Все файлы на диске были непрерывными дисковыми блоками, поэтому фрагментации не было. Программа, нуждающаяся в рабочем хранилище, может использовать и изменять именованные файлы, но не может расширять их за пределы созданного ими размера. Свободное пространство начинается после последнего названного файла и может быть частично занято временным файлом, что может произвести ассемблер или компилятор. Если файл должен был быть изменен, обычный процесс заключался в использовании // DUPкоманд для его удаления, которые перемещали все последующие файлы обратно, чтобы закрыть пробел, а затем давали это имя временному файлу в качестве новой версии файла. Таким образом, редко изменяемые файлы будут опускаться к началу диска по мере добавления новых файлов или новых версий, а часто изменяемые файлы будут толкаться друг с другом к концу диска.

Дисковое пространство было в дефиците, поэтому исходные файлы программ обычно хранились в виде колоды карточек. Пользователи с более высокими требованиями могли бы иметь собственный диск, содержащий операционную систему, но только свои файлы, и должны были бы заменить системный диск «пула» своим и перезапустить систему, когда подошла их очередь быть оператором. Система со вторым дисководом, который можно было бы полностью посвятить программному обеспечению и данным какого-либо пользователя, обеспечивала большое ощущение простора.

Дисковая утилита (DUP) [ править ]

Программа Disk Utility (DUP) предоставляет команды для передачи программ, подпрограмм и данных. За карточкой «// DUP» следовала одна или несколько карточек: [23]

  • *ХРАНИТЬ
  • * STORECI
  • * СОХРАНЕННЫЕ ДАННЫЕ
  • * STOREDATACI
  • * STOREMOD (становится "STORE", если элемент еще не существует)
  • *СВАЛКА
  • * DUMPDATA
  • * DUMPLET (или ' DUMPFLET ' )
  • *УДАЛИТЬ

Операнды, как это было обычно в то время, приходилось помещать в фиксированные / назначенные столбцы. Помимо имен программ, подпрограмм или файлов, коды / значения могут быть:

  • UA - Зона пользователя
  • FX - фиксированная область (без "экстентов" в соответствии с 360; только непрерывное пространство)
  • WS - рабочее хранилище
  • CD - перфокарта / основное устройство ввода (может быть PT : Paper Tape)
  • PR - Принтер

Программы могут быть преобразованы в более готовый к использованию формат с помощью команды STORECI , которая вызывает Core Image Builder (аналог DM2 для редактора ссылок 360). В качестве альтернативы программа могла проходить этот процесс каждый раз, когда она должна была запускаться, и для редко используемых программ это было предпочтительнее для экономии места на диске.

Периферийные устройства [ править ]

Кардридер / перфоратор IBM 1442
Барабанный плоттер IBM 1627 .

Дисковая память использовалась для хранения операционной системы, объектного кода и данных, но исходный код хранился на перфокартах.

Базовый 1130 поставлялся с приводом IBM 2310, приводимым в действие звуковой катушкой, названным «Ramkit», от подразделения IBM General Products в Сан-Хосе. [4] : 497 Их однопластинные картриджи IBM 2315 размером с коробку для пиццы вмещали 512 000 слов или 1 024 000 байт (меньше, чем 1,44 МБ 3,5 -дюймовой HD-дискеты или даже 1,25- дюймовой HD-дискеты 1,2 МБ).

В пишущей машинке консоли использовался механизм IBM Selectric , что означало, что можно было изменить шрифт, заменив полый элемент шрифта размером с мяч для гольфа. Для APL , мощного языка программирования, ориентированного на массивы и использующего специальную символическую нотацию, был доступен специальный элемент типа . Ряд из 16 тумблеров на консольной пишущей машинке может быть индивидуально протестирован из программ, например, с помощью специального оператора Fortran .IF (SENSE SWITCH i)

Другие доступные периферийные устройства:

  • Принтеры - линейные принтеры IBM 1132 [24] и IBM 1403 [25] [26].
  • Перфорированные-карты - IBM 1442 для чтения карт / пуансон и IBM 2501 для чтения карт
  • Бумажная лента - перфоратор для бумажной ленты IBM 1055, устройство для чтения бумажной ленты IBM 1054 и устройство для чтения бумажной ленты IBM 1134
  • Диск - Дисковый накопитель IBM 2311
  • Магнитная лента. С 1968 года накопители на магнитной ленте IBM 2415 были доступны в виде RPQ . [27]
  • Графика - Графический дисплей IBM 2250 .
  • Color Pen Plotter - ударный плоттер IBM 1627 .
  • Устройство чтения оптических меток - устройство чтения страниц оптических меток IBM 1231 [28]
  • Связь - Адаптер синхронной связи (SCA). IBM 1130 MTCA для адаптера управления несколькими терминалами , анонсированный в 1970 году [29], позволял подключать до четырех терминалов 2741 к IBM 1130 для использования с APL.

Чтобы упростить конструкцию периферийных устройств, они полагались на процессор. Устройство чтения карт не имело буферов памяти, но вместо этого давало ЦП прерывание нулевого уровня (наивысший приоритет) после чтения каждого отдельного столбца карты. Если ЦП не ответил и не сохранил двенадцать бит данных до того, как другое такое прерывание укажет, что следующий столбец был прочитан, данные будут потеряны. Точно так же принтер 1132 полагался на программное обеспечение 1130. Когда буква, такая как Aпоявлялась в позиции, ЦП должен был проанализировать буферизованную строку текста и собрать массив битов, который бы указывал на 1132, какие позиции печати должны быть напечатаны с A. Если бы ЦП не смог ответить до того, как был Aповернут из положения, скорость печати сильно снизилась бы.

Другие периферийные устройства принимали текст в коде устройства, удобном для его оборудования. ЦП должен был преобразовать его в код EBCDIC или из него, в котором ЦП обрабатывал текст.

Обзор набора инструкций [ править ]

Инструкции имели краткий (одно слово) и длинный (два слова) форматы. Большинство инструкций по вычислениям, загрузке и сохранению ссылаются на один регистр (обычно ACC) и ячейку памяти. Ячейка памяти была идентифицирована в кратком формате 8-битным смещением со знаком либо от текущего адреса, либо от одного из индексных регистров; или в длинном формате - полным 15-битным адресом, который можно индексировать и указывать косвенное обращение. К памяти обращались в единицах слов.

1130 изначально поддерживал только двоичные данные с одинарной и двойной точностью (16 и 32 бита), хранящиеся в формате big-endian . Данные с плавающей запятой стандартной и повышенной точности (32 и 48 бит) и десятичные данные поддерживались с помощью подпрограмм.

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

Основные регистры:IAR = регистр адреса инструкцииACC = аккумуляторEXT = регистр расширенийXRx = индексные регистры: x = 1,2,3 Реализовано как слова памяти 1,2,3, а не как аппаратные регистры.Тесты условий:Z Нулевой аккумулятор- Аккумулятор отрицательный+ Аккумулятор положительныйE Аккумулятор дажеC Индикатор переноски выключенO Индикатор переполнения выключен1130 Мнемоника набора команд:LD = загрузить ACC STO = сохранить ACCLDD = двойная загрузка (ACC и EXT) STD = двойная загрузка (ACC и EXT)LDX = Индекс загрузки STX = Индекс магазинаLDS = статус загрузки STS = статус магазинаA = Добавить ACC AD = Добавить двойнойS = вычесть ACC SD = вычесть двойноеM = умножить D = разделитьИ = логическое И ИЛИ = логическое ИЛИXOR = логическое исключающее ИЛИSLA = сдвиг влево ACC SLT = сдвиг влево ACC и EXTSLCA = сдвиг влево и счет ACC SLC = сдвиг влево и счет ACC и EXTSRA = Сдвиг вправо ACC SRT = Сдвиг вправо ACC и EXTRTE = повернуть вправо ACC и EXTBSC = переход или переход по условию (зависит от модификатора) т.е. BP BNP BN BNN BZ BNZ BC BO BODBOSC - условный переход или пропуск (альтернатива для BSC с установленным битом 9) Выход из текущего уровня прерывания.BSI = Branch and Store IARMDX = Изменить индекс и пропустить (увеличить IAR на единицу, если знак изменится или станет нулевым)WAIT = Halt NOP = Нет операции (альтернатива SLA 0)XIO = Выполнить ввод / вывод1800 Мнемоника дополнительных инструкций:CMP = Сравнить ACC DCM = Двойное сравнение ACC и EXTЭквивалентная мнемоникаДисковый ассемблер представил несколько мнемоник, эквивалентных существующиминструкции, призванные прояснить намерения программиста:SKP - Пропустить при условии, эквивалент короткого BSCB - Безусловный переход, эквивалент BSC без указания условийBP - Branch Accumulator Positive, что эквивалентно BSC с указанием условия '+'BNP - Branch Accumulator not PositiveBN - отрицательный ответвление аккумулятораBNN - Аккумулятор ответвления не отрицательныйБЖ - ​​Филиал Аккумулятор НулевойBNZ - Branch Accumulator not ZeroBC - Branch on CarryBO - ветвь при переполненииBOD - Нечетный аккумулятор филиалаMDM - Modify Memory, эквивалент неиндексированного многомерного выражения длинного форматаXCH - Exchange Accumulator and Extension, эквивалент RTE 16Краткий формат инструкции (одно 16-битное слово): 1Биты 0 ... 45678 ...... 5 OP --- FTTDisp ----OP - операцияF - формат 0 = короткийTT - это тегDisp - это смещениеДлинный формат инструкции (два 16-битных слова): 1 1Биты 0 ... 456789 ..... 50 .............. 5 OP --- FTTIMod ---- Адрес ---------OP - операцияF - формат 1 = длинныйTT - это тегЯ косвенный битМод есть модификаторРасчет эффективного адреса (EA): F = 0 | F = 1, I = 0 | F = 1, I = 1 Прямая адресация | Прямая адресация | Косвенная адресация-------------------------------------------------- -----------------TT = 00 | EA = Displ + IAR | EA = Добавить | EA = C / ДобавитьTT = 01 | EA = Displ + XR1 | EA = Добавить + XR1 | EA = C / Добавить + XR1TT = 10 | EA = Displ + XR2 | EA = Добавить + XR2 | EA = C / Добавить + XR2TT = 11 | EA = Displ + XR3 | EA = Добавить + XR3 | EA = C / Добавить + XR3-------------------------------------------------- ----------------- Disp = Содержание поля смещения Добавить = Содержание адресного поля инструкции C = содержимое места, указанного с помощью Add или Add + XR
Зарезервированная память

Самые низкие адреса основной памяти использовались в зависимости от оборудования или по соглашению:

Программирование [ править ]

Подпрограммы [ править ]

1130 не имеет аппаратной поддержки стека . Большинство подпрограмм вызывается с помощью инструкции BSI (Branch and Store IAR). Это помещает значение IAR (обратный адрес) в адрес назначения и передает управление получателю + 1. Подпрограммы возвращаются туда, где они были вызваны в этом случае, используя косвенный переход через это первое слово подпрограммы. Размещение обратного адреса в строке было распространенной техникой компьютеров того времени, таких как Hewlett-Packard HP 2100 [30] и Scientific Data Systems SDS 920 . [31]

Таким образом, подпрограмма с именем SIMPL может быть организована следующим образом (комментарии следуют за операндом инструкции):

SIMPL: DC * - * Это точка входа, изначально заполненная нулем. (что бы ни делала рутина) BI SIMPL Возврат с помощью I ndirect филиала, по адресу найти в месте Симпл. END SIMPL Указывает ассемблеру, что исходный код для процедуры SIMPLE завершен.

Подпрограмма будет называться следующим образом:

 BSI L SIMPL Позвоните на SIMPL. L (длинный) требуется, если расстояние от SIMPL превышает -128 или +127 слов.

Обычно используется псевдооперация CALL.

Как показано, точкой входа подпрограммы является DC *-*псевдооперация ассемблера, которая используется для определения константы (занимающей одно слово памяти) со значением, указанным в выражении. * Обозначает текущий адрес сборки, поэтому * - * приводит к нулю. Запись этого, а не 0, дает визуально отличительную заметку о том, что значимое значение (адрес возврата) будет помещено туда во время выполнения. Точкой входа не обязательно должно быть первое слово подпрограммы. Действительно, предыдущее слово может быть началом инструкции прямого перехода из двух слов, адресное поле которой находится в SIMPL. Тогда возврат может производиться там однословными ветвями:B SIMPL-1

Когда вызывается SIMPL, инструкция BSI заменяется *-*текущим значением IAR, которое является адресом сразу после инструкции BSI. После того, как SIMPL выполняет то, что написано, B I SIMPLпереходит не к SIMPL, а косвенно через него, таким образом продолжая выполнение инструкции, следующей за инструкцией BSI, которая вызвала SIMPL.

Без дополнительных мер по защите обратного адреса рекурсия невозможна: если SIMPL вызывает саму себя или вызывает подпрограмму, которая вызвала его, его исходный адрес возврата перезаписывается. Повторный вход проблематичен по той же причине: подпрограмма обслуживания прерывания должна воздерживаться от вызова любой подпрограммы, которая могла быть прерванным кодом.

Вызывающий SIMPL может передать ему параметры, которые могут быть значениями или адресами значений. Параметры могут быть закодированы в строке (сразу после инструкции BSI) или могут быть помещены в индексные регистры XR1 и XR2. Если параметры помещаются в строку, SIMPL изменяет свой собственный адрес возврата, поэтому его конечная непрямая ветвь возвращается за пределы параметров.

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

Соглашение о кодировании 0 в качестве начального значения в точке входа означает, что если ошибка программирования приводит к возврату SIMPL до того, как он был вызван в первый раз, выполнение переместится в ячейку памяти 0. Как упоминалось выше , обычно указывается местоположение. 0 содержит ответвление к местоположению 0. 1130 застрянет в местоположении 0, и индикаторы IAR на консоли будут полностью темными, что дает понять, что программа потерпела неудачу.

Связь с библиотечными процедурами [ править ]

Для подпрограмм, которые будут вызываться много раз (например, подпрограмм для арифметики с плавающей запятой), важно уменьшить размер каждого вызова до одного слова. Такие «библиотечные подпрограммы» используют протокол LIBF. Он более сложен, чем протокол CALL, описанный в предыдущем разделе, но LIBF скрывает сложность от автора программы на языке ассемблера.

Подпрограммы библиотеки адресуются через индексный регистр XR3. (Подпрограммы Fortran используют индексный регистр XR1 для адресов параметров и адреса возврата, но регистр XR2 не используется.) XR3 указывает на последовательность векторов передачи из трех слов , так что первая запись составляет -128 слов из значения XR3. Программист вызывает библиотечную подпрограмму, используя LIBFпсевдооперацию, которая собирает не прямую BSIподпрограмму, а однословную индексированную инструкцию ветвления ( ), смещение которой (-128, -125 и т. Д.) Идентифицирует начало передачи подпрограммы. вектор.BSI 3 disp

Вектор передачи подготавливается загрузчиком связей, когда он собирает программу. Запись вектора передачи в библиотечную функцию с именем SIMPL принимает следующую форму:

 DC * - * Слово, в котором BSI сохраняет адрес возврата. BL SIMPL Переход к запуску функции библиотеки.

SIMPL знал, где находится его адрес возврата, так это то, что если бы SIMPL был объявлен процедурой LIBF, загрузчик связей изменил бы код SIMPL, поместив адрес записи вектора передачи SIMPL в SIMPL + 2. Подпрограммы LIBF, в отличие от подпрограмм CALL, начинаются не с директивы DC для хранения адреса возврата (он находится в векторе передачи), а с фактического кода, как показано ниже:

SIMPL STX 1 RCVR1 + 1 Сохраните значение XR1 для вызывающего абонента в ближайшем месте. LDX I1 * - * Загрузчик связей изменяет адресное слово, чтобы указать на вектор передачи.

Размещение адреса вектора передачи SIMPL в SIMPL + 2 оставляет место для однословной инструкции по сохранению выбранного индексного регистра, здесь XR1. Затем косвенная инструкция LDX указывает XR1 не на вектор передачи, а через него на адрес возврата или на любые параметры, хранящиеся в строке после BSI. Затем SIMPL выполняет то, для чего было написано, получая доступ к любым встроенным параметрам через XR1 (в этом случае он должен увеличить XR1 для адреса возврата) и возвращает следующее:

 STX 1 RETN + 1 Сохраните XR1, чтобы подготовить его к использованию в качестве обратного адреса.RCVR1 LDX L1 * - * Первая инструкция SIMPL изменила этот адрес. Сейчас же,* восстановить исходную стоимость XR1.RETN BL * - * Эта инструкция была изменена две инструкции назад; возвращаться.
Пример

Предположим, что вызов SIMPL в стиле LIBF был по адресу 100. Тогда адрес возврата будет 101, потому что это инструкция из одного слова. XR3 указывает на группу векторов передачи. Если вектор передачи для SIMPL начинается с адреса 2000, тогда BSI будет скомпонован с таким образом, чтобы XR3 + disp = 2000. Выполнение BSI сохраняет 101 в ячейке 2000 и переходит в ячейку 2001. В 2001 выполняется длинный переход из двух слов. к точке входа в SIMPL, которую загрузчик связей мог бы разместить по адресу 300.BSI 3 dispdisp

Прыжок в длину передает управление SIMPL. После того, как команда 300 сохраняет XR1, команда 301 означает , что загрузчик связи разместил 2000 в ячейке 302. Это не загружает 2000 в XR1; это косвенная инструкция, которая загружает содержимое 2000, то есть 101, адреса возврата для этого вызова SIMPL.LDX I1 2000

В последовательности возврата, показанной выше, когда элемент управления достигает RETN, есть инструкция B L 101, которая возвращается вызывающей стороне. (Если есть один или несколько встроенных параметров в 101, SIMPL будет увеличивать XR1 до 102 или выше, и это будет адресатом Bинструкции.)

Вариации

Если SIMPL принимает параметры, закодированные в строке после инструкции BSI, SIMPL получает к ним доступ с индексированной адресацией от XR1. Первый может быть получен LD 1 0, второй - LD 1 1и так далее. Если второй параметр является адресом фактического параметра, то получает его значение. Перед возвратом SIMPL увеличивает XR1 после n параметров с помощью такой инструкции, чтобы поместить правильное значение в RETN + 1.LD I1 1MDX 1 n

Подпрограмма LIBF, которая отказалась восстанавливать исходное значение XR1, может пропустить вышеуказанные шаги и вернуться с простым пропуском n встроенных параметров. Однако такая подпрограмма не может быть вызвана другими подпрограммами LIBF, поскольку она нарушает использование вызывающим абонентом XR1 для доступа к его собственным параметрам и адресу возврата.B 1 n

Сложность LiBF экономит память для подпрограмм, которые часто называют .: [32] : стр.24 LiBF связь требует одно слова за вызов, плюс три слова для записи вектора переноса и дополнительного кода в самом обычном, в то время как ВЫЗОВЕ связь требует двух слов на вызов, потому что большинство ВЫЗОВОВ будет на адрес за пределами диапазона от -128 до +127 слов однословного кода операции.

Регистр XR3 должен указывать на записи вектора передачи для библиотечных подпрограмм, а не на таблицу диспетчеризации только их адресов, потому что последняя требует, чтобы подпрограммы LIBF вызывались с косвенной инструкцией BSI. Эти инструкции состоят из двух слов, поэтому такая конструкция свела бы на нет экономию размера кода LIBF. Восьмибитовый предел для поля disp кода инструкции из одного слова ограничивает использование подпрограмм LIBF не более чем 85 отдельными записями.

Модификация кода [ править ]

В предыдущих разделах показано, что код и данные перемешаны. В программировании 1130 принято изменять адресные поля инструкций и, фактически, изменять инструкции целиком.

Компилятором Fortran [ править ]

Компилятор Fortran создает самомодифицирующийся код при генерации кода для любых подпрограмм (подпрограмм или функций), имеющих параметры. Компилятор создает таблицу каждого местоположения, в котором подпрограмма ссылается на один из своих параметров, и компилирует в качестве первой инструкции в теле подпрограммы вызов подпрограммы с именем SUBIN, которая использует таблицу для изменения поля адреса каждой ссылки на Параметр должен быть фактическим адресом параметра во время текущего вызова. SUBIN делает эти патчи каждый раз, когда вызывается подпрограмма.

Когда программа Fortran вызывает подпрограмму, адреса любых параметров появляются в строке после вызова. Например, оператор Fortran CALL SIMPL (X) может компилироваться в:

 BSI L SIMPL DC X Адрес X, на котором SIMPL должен работать.

Внутри подпрограммы к параметрам можно получить доступ с помощью косвенной индексированной адресации, как показано выше в разделе « Варианты» , поэтому, учитывая, что XR1 был соответствующим образом подготовлен, целочисленный параметр может быть загружен в аккумулятор с помощью такой инструкции:

 LD I1 0 Загрузить значение первого параметра (смещение 0) в аккумулятор

Компилятор вместо этого использовал прямую адресацию. Когда SUBIN запускается, он получает адрес X и исправляет адресное поле инструкции, чтобы оно стало:

 LD LX Загрузить значение X в аккумулятор

Преимущества СУБИНа следующие:

  • Чтобы получить адрес операнда, для косвенной индексированной инструкции требуется три цикла памяти (индексный регистр находится в памяти), в то время как для инструкции прямого доступа требуется только один.
  • Если SIMPL должен был передать один из своих параметров любой подпрограмме, которая ожидала получить адрес своего параметра (включая все процедуры LIBF для арифметики с плавающей запятой), SUBIN требуется для предоставления фактического адреса исходного параметра.

Недостатками SUBIN являются время, необходимое для запуска, и память, необходимая для таблицы ссылок. Размер этой таблицы - это сумма 5, количества параметров и количества ссылок; если эта сумма превышает 511, компиляция завершится неудачно. Для подпрограмм со многими ссылками на параметр автор подпрограммы может скопировать параметр в локальную переменную.

Автор [ править ]

В то время изменение целых инструкций было обычным делом. Например, хотя в 1130 есть инструкция OR, синтаксис Fortran не дает возможности ее записать. Можно определить целочисленную функцию IOR, позволяющую логическому ИЛИ быть частью выражения Fortran, например:

 M =  3 * IOR ( I , J )  +  5

Компилятор Fortran помещает адреса I и J в строку и ожидает результата в аккумуляторе. Использование IOR (I, J) в выражении Фортрана приводит к компиляции следующих четырех слов:

 BSI L IOR Переход на два слова к началу функции IOR. Однословный встроенный параметр DC IA: адрес I. DC JA однословный встроенный параметр: адрес J.

Фактически, ассемблерная функция IOR вообще не вычисляет I или J. Вместо этого он заменяет четыре вышеупомянутых слова следующим:

 LD LI Загрузить аккумулятор с I (инструкция из двух слов) ИЛИ LJ ИЛИ аккумулятор с J (инструкция из двух слов)

После выполнения этого преобразования он не возвращается после конца блока из четырех слов (который он только что изменил). Вместо этого он переходит к точному адресу, с которого он был первоначально вызван. Инструкции BSI больше нет; теперь есть две инструкции, которые он только что написал. Они объединяют два целых числа с помощью машинной инструкции OR и, при необходимости, оставляют результат в аккумуляторе.

Вызов IOR и преобразование блока из четырех слов происходит не более одного раза за выполнение программы. Если показанная выше строка Fortran выполняется снова, она выполняется быстрее, чем в первый раз. Подобные функции могут быть разработаны для других полезных операций.

Функция, которая самоизменяется, как это делает IOR, не может использоваться в подпрограмме Fortran для любого из параметров этой подпрограммы (хотя ее можно использовать для объединения локальных переменных), поскольку она несовместима с подпрограммой SUBIN, описанной выше. Преобразование IOR своей вызывающей последовательности из четырех слов, показанное выше, перемещает местоположение адреса переменной I. При последующих вызовах подпрограммы Fortran таблица ссылок на параметры будет ошибочной, и SUBIN исправит неправильное слово в в этом случае новый адрес I помещается поверх кода операции ИЛИ.

Повышенная точность [ править ]

1130 FORTRAN предлагал два формата с плавающей запятой: 32-битный формат «стандартной точности» и 40-битный формат «расширенной точности».

Стандартный формат точность содержит 24-битное дополнение до два мантиссы в то время расширенной точность использует 32-битное дополнение до два мантиссы . Последний формат полностью использует 32-битные целочисленные операции процессора. Характеристикой обоих форматов является 8-битовое поле, содержащее степень двойки, смещенную на 128. Арифметические операции с плавающей запятой выполняются программно, а двойная точность вообще не поддерживается. Расширенный формат занимает три 16-битных слова, а лишнее пространство просто игнорируется. [33]

Дополнительная карта компилятора «* EXTENDED PRECISION» сообщает компилятору FORTRAN использовать 40 бит вместо 32 бит для данных с плавающей запятой.

Большие программы на Фортране [ править ]

Данные, которыми нужно манипулировать, и инструкции, которые ими управляют, должны находиться вместе в основной памяти. Ключевым ограничением является объем установленной памяти (от 4096 до 32768 слов). Несмотря на это ограничение, Фортран предоставляет несколько методов для написания больших программ.

ЛОКАЛЬНЫЕ подпрограммы

В Фортране любая подпрограмма может быть обозначена как «ЛОКАЛЬНАЯ» (Load-on-Call). Каждая ЛОКАЛЬНАЯ подпрограмма - это наложение ; он является частью резидентной исполняемой программы на диске, но загружается в оперативную память (если еще не там) во время вызова. Так, например, шесть ЛОКАЛЬНЫХ подпрограмм потребуют столько же основной памяти, сколько самая большая, а не общий объем для всех шести. Однако ни одна из шести не может вызывать другую ни напрямую, ни через промежуточные подпрограммы.

Программы по этапам

Вся программа на Фортране может передать управление следующей фазе с выходом к супервизору с инструкцией загрузить следующую фазу в основную память. Большая программа может быть разделена на три части, компилируемые отдельно, которые называются PART1, PART2 и PART3. Выполнение начинается // XEQ PART1и в подходящей точке PART1 выполнит оператор Fortran CALL LINK(PART2)и так далее. Имя программы-преемника в CALL не может быть переменным, но логика программы может определять, передается ли управление на другую фазу и какой CALL LINKоператор выполняется. Как упоминалось выше , сам компилятор Fortran был написан таким образом, и каждая фаза компиляции выполнялась отдельной программой.

ОБЩЕЕ хранилище данных

Программы, такие как программы на Фортране, располагаются по низким адресам памяти ядра (чуть выше супервизора). Фортран выделяет место по высшим адресам для любых переменных и массивов, объявленных ОБЩИМИ. Если последующая фаза программы содержит соответствующее ОБЩЕЕ объявление, то информация в этой общей области может быть разделена между фазами. Фазы могли без проблем опускать объявление COMMON, при условии, что эти фазы не были настолько большими, чтобы их программный код вторгался в общую область. ОБЩЕЕ хранилище не только разделяет данные между фазами; ОБЩИЕ переменные нижней памяти могут использоваться для передачи данных между основной программой и подпрограммами в рамках одной фазы, хотя данные могут быть потеряны при переходе к следующей фазе.

Примеры программирования [ править ]

Примеры могут быть выполнены в эмуляторе IBM 1130, доступном на IBM 1130.org .

Колода программ на ассемблере [ править ]

В следующем листинге показана колода карточек, которая компилирует и запускает программу ассемблера, которая выводит колоду карточек на линейный принтер.

 // РАБОТА // КАК М *СПИСОК * LCARD.ASM - СПИСОК КАРТ НА ЛИНИЙНЫЙ ПРИНТЕР * * ПРОГРАММА * НОВАЯ СТРАНИЦА НА ПРИНТЕРЕ * ПРОЧИТАЙТЕ КАРТУ * ПРЕОБРАЗОВАТЬ ФОРМАТ * ПЕЧАТЬ ЛИНИИ НА ПРИНТЕРЕ * НАЙТИ А * НАЧАТЬ LIBF PRNT1 НАЙТИ НОВУЮ СТРАНИЦУ НА 1132 КАНАЛ ПРИНТЕРА DC / 3100 1-НОВАЯ СТРАНИЦА * NEXTC LIBF CARD0 ЧИТАТЬ С КАРТОЧИТАРА 1442 DC / 1000 CONTROL ДЛЯ ЧТЕНИЯ DC CBUFF STORE 80 КОЛОНН CINP LIBF CARD0 DC 0 B CINP LOOP ДО тех пор, пока КАРТА НЕ ПРОЧИТАЕТСЯ * ПРЕОБРАЗОВАТЕЛЬНАЯ КАРТА LIBF ZIPCO НА ПРИНТЕР DC / 1100 В РАСПАКОВАНИИ, В УПАКОВКЕ DC CBUFF + 1 ВХОДНОЙ БУФЕР DC PBUFF + 1 ВЫХОДНОЙ БУФЕР СЧЕТЧИК ПЕРСОНАЖЕЙ DC 80 ПОЗВОНИТЬ HLEBC HOLLERITH НА EBCDIC * LIBF PRNT1 ПЕЧАТЬ 80 СИМВОЛОВ КОД КОНТРОЛЯ DC / 2000 ДЛЯ ПЕЧАТИ БУФЕР ДЛЯ ПЕЧАТИ DC PBUFF DC PERR PRINT ERROR POUT LIBF PRNT1 ПРОВЕРЬТЕ ПЕЧАТЬ ЗАВЕРШЕНИЯ DC 0 B ВЫПУСКАТЬ ПЕТЛЬ ДО ЗАВЕРШЕНИЯ * B СЛЕДУЮЩАЯ СЛЕДУЮЩАЯ КАРТА * * ДАННЫЕ * CBUFF DC 80 80 КОЛОНН НА КАРТУ BSS 80 * PBUFF DC 40 40 СЛОВ 80 ХАРАКТЕРОВ BSS 40 * PERR DC 0 BI PERR ЭТО ВОЗВРАЩАЕТСЯ К * ОБРАБОТКА ОШИБОК ПРИНТЕРА * КОТОРЫЙ ПРЕКРАЩАЕТ ПРОГРАММУ * КОНЕЦ НАЧАЛА ПРОГРАММЫ ТОЧКА ВХОДА // XEQ ИСПЫТАТЕЛЬНЫЕ ДАННЫЕ 1 ПРИВЕТ, МИР ИСПЫТАТЕЛЬНЫЕ ДАННЫЕ 2

В этом задании ассемблер оставляет результат своей сборки во временной области системного диска, а команда XEQ выполняет содержимое временной области. Странно выглядящий END STARTимеет два значения: конец исходного кода ассемблера и имя точки входа подпрограммы, имеющей метку START.

Исходный код ассемблера начинается с 21-го столбца карты, а не с первого столбца. В системах без дисковода ассемблер вставлял код в начало только что прочитанной карты (устройство считывания карт было на самом деле устройством считывания-перфорации, а станция перфорации располагалась после станции чтения), а затем считывала следующую карту. Для обработки передних ветвей и т.п. второй проход ассемблера буквально включал в себя второй проход карт через считыватель / перфоратор. Если потребовались изменения исходного кода, программист дублировал карты, чтобы получить колоду с пустыми столбцами 1-20, готовую для следующего прогона через ассемблер.

По соглашению перед буферами указывается количество слов. В DC(Определить константы) компонует количество слов и следующее BSS(блок созданных Symbol) оставляет необходимое количество слов для буфера. Буфер карты требует 80 слов, по одному на каждый столбец карты. Драйвер CARD0 считывает каждый столбец карты буквально, используя 12 из 16 бит в слове буфера, с битом на для каждого отверстия пробитого в соответствующей строке для этого столбца. Образец штрихов обычно описывает текстовый символ с использованием кода Холлерита . Клавиатура консоли также дает входные данные программе в коде Холлерита, что является единственным случаем, когда два устройства используют одинаковую кодировку символов.

Однако подпрограмма принтера работает с текстом в 8-битном формате EBCDIC с двумя символами на слово, для чего требуется буфер на 40 слов. Программа использует библиотечную подпрограмму ZIPCO для выполнения преобразования. Несмотря на внешний вид, оператор CALL HLEBCне выполняется, потому что HLEBC - это не подпрограмма, а таблица преобразования Холлерита в EBCDIC, поставляемая IBM. Оператор CALL предоставляет адрес таблицы в ZIPCO и гарантирует, что связывающий загрузчик включает таблицу в программу, таким образом, это пятый параметр для ZIPCO, хотя он занимает два слова памяти: кодовое слово операции BSI для CALL - это неиспользованные и, следовательно, обычно потраченные впустую, но второе слово расширенияCALL HLEBC- это адрес таблицы HLEBC, необходимой ZIPCO. После преобразования программа отправляет преобразованный вывод, теперь уже в буфере PBUFF, на принтер через драйвер PRNT1. Снова программа повторяется до тех пор, пока драйвер принтера не сообщит о завершении, затем программа считывает следующую карту.

Этот пример не содержит кода, чтобы решить, когда остановиться. Более полная программа будет проверять наличие карточек, которые начинаются с //, что означает начало следующего задания. Чтобы остановить устройство чтения карт как можно скорее, программа может проверить код Холлерита /до того, как преобразовать карту в EBCDIC.

Асинхронный ввод-вывод и производительность [ править ]

Вызов CARD0 для чтения карты инициирует эту операцию и немедленно возвращается вызывающему абоненту, который может продолжить другие действия. Однако программа-пример не пытается перекрыть ввод и вывод с помощью буферов, даже несмотря на то, что у нее есть две отдельные рабочие области; он просто возвращается к CIMP, чтобы проверить заново. После того, как CARD0 обнаруживает прерывание считывателя карт при завершении операции, он возвращает еще одно слово, таким образом пропуская возврат к CIMP и выходя из цикла.

В примерах подпрограмм устройства ввода-вывода не работают на максимальной скорости. Примечательно, что считыватель карт, всего через несколько миллисекунд после сообщения о завершении чтения карты, начнет свою последовательность остановки, после чего новая команда чтения должна будет ждать, чтобы инициировать другой цикл чтения. Считыватель IBM 1442 мог читать 400 карт в минуту на полной скорости, но даже небольшая неуверенность в командах чтения снизила бы его пропускную способность вдвое или даже хуже. Программа Fortran не могла вовремя завершить даже простейшую обработку ввода, и поэтому не могла читать карты на полной скорости. Один общий ФортранDOпетля для чтения карт заставляла двигатель останавливаться и запускаться так часто, что ускорял износ. При буферизации управление считывателем карт могло бы перекрываться с обработкой, и считыватель мог бы работать на полной скорости через большие колоды данных, но память для более сложной программы и для буферов часто была в избытке.

Даже с ассемблером и двойной буферизацией программа для вывода колоды карт из считывающего устройства IBM 2501 (1000 карт в минуту) на линейном принтере не могла успевать, поскольку преобразование шаблонов отверстий для карт в EBCDIC для принтера, выполненное EBPRT была слишком медленной; Вместо этого потребовались более сложные ZIPCO и HLEBC, как в примере.

Образец колоды программы Fortran IV [ править ]

Следующий листинг показывает карта колоды компилирует и запускает Fortran программы и Fortran подпрограмму для IBM 1130 при запуске DM2.

// ЗАДАНИЕ  // ДЛЯ * СПИСОК ИСТОЧНИКОВ ПРОГРАММЫ * ЦЕЛОЕ СЛОВО C ----------------------------------- -------------------- C ВЫЧИСЛИТЕ КРИТИЧЕСКИЕ ЗНАЧЕНИЯ ДЛЯ КВАДРАТИЧЕСКОГО УРАВНЕНИЯ C 0 = A * X ** 2 + B * X + C C ВОЗВРАЩАЕТСЯ ДИСКРИМИНАНТ, КОРНИ, ВЕРТЕКС, ФОКУСНАЯ ДЛИНА, ФОКУСНАЯ ТОЧКА C X1 И X2 ЯВЛЯЮТСЯ КОРНЯМИ C ----------------------------------- -------------------- ПОДПРОГРАММНЫЙ КВАДР ( A , B , C , DISCR , X1 , X2 , VX , VY , FL , FPY ) REAL A , B    , C , DISCR , X1 , X2 , VX , VY , FL , FPYC ДИСКРИМИНАНТ, ВЕРТЕКС, ФОКУСНАЯ ДЛИНА, ФОКУСНАЯ ТОЧКА Y DISCR = B ** 2,0 - 4,0 * A * C VX = - B / ( 2,0 * A ) VY = A * VX ** 2,0 + B * VX + C FL = 1,0 / ( A * 4.0 ) FPY = VY + FL FL = ABS ( FL )                                      C ВЫЧИСЛЕНИЕ КОРНЕЙ НА ОСНОВЕ ДИСКРИМИНАНТНОГО IF ( DISCR ) 110 , 120 , 130   C -VE ДИСКРИМИНАНТ, ДВА КОМПЛЕКСНЫХ КОРНЯ, REAL = X1, IMG = + / - X2 110  X1  =  - B  /  ( 2.0 * A ) X2 = SQRT (- DISCR ) / ( 2.0 * A ) RETURN C НУЛЬ ДИСКРИМИНАНТА, ONE REAL КОРЕНЬ 120 X1 = - B / ( 2.0 * A ) X2 = X1 ВОЗВРАТ                     C + VE ДИСКРИМИНАНТ, ДВА НАСТОЯЩИХ КОРНЯ 130  X1  =  (- B  +  SQRT ( DISCR ))  /  ( 2.0 * A ) X2 = (- B - SQRT ( DISCR )) / ( 2.0 * A ) RETURN C C NEXT STORE SUBROUTINE ON ДИСК ИСПОЛЬЗУЕТСЯ DUP END // DUP * DELETE QUADR * STORE WS UA QUADR // JOB // FOR * LIST SOURCE PROGRAM * IOCS (CARD, 1132 PRINTER) * ONE WORD INTEGERS             C ------------------------------------------------- ------ C ОБРАБОТКА КАРТ ДАННЫХ С A, B, C C ДО А = 0 C ---------------------------- ---------------------------  ИКАРТА ДАННЫХ , IPRT  / 2 , 3 / REAL A , B , C REAL DISCR , XR1 , XR2 , VX , VY , FL , FPY      WRITE ( ИПВТ , 901 ) 901  FORMAT ( '---------------------------------------- -------------- ' )C ПРОЧИТАТЬ ABC, ЕСЛИ A = 0, ТО ВЫЙТИ 100  ЧТЕНИЕ ( ICARD , 801 ) A , B , C 801  ФОРМАТ ( 3 F8 . 3 )C ВЫЙТИ, ЕСЛИ A НУЛЬ, ЕСЛИ ( A ) 110 , 9000 , 110    C PRINT ABC 110  WRITE ( IPRT , 902 ) A , B , C 902  FORMAT ( 'QUADRATIC A =' , F8 . 3 , 'B =' , F8 . 3 , 'C =' , F8 . 3 )С COMPUTE и печатать критические значения ВЫЗОВ QUADR ( A , B , C , DISCR , XR1 , XR2 , VX , В.Ю. , FL , FPY ) WRITE ( ИПВТ , 903 ) DISCR 903 FORMAT ( 'ДИСКРИМИНАНТНЫЙ =' , F9 . 4 ) WRITE ( IPRT , 904 ) VX , VY 904 ФОРМАТ (          'VERTEX X =' , F9 . 4 , 'Y =' , F9 . 4 ) ЗАПИСЬ ( ИПВТ , 905 ) FL 905 FORMAT ( 'Фокусное расстояние =' , F9 . 4 ) WRITE ( ИПВТ , 906 ) VX , FPY 906 FORMAT ( 'КООРДИНАТОР Х =' , F9 . 4 , 'Y =' F9 . 4 )          ЕСЛИ  ( DISCR )  120 , 130 , 140C -VE ДИСКРИМИНАНТ, ДВА КОМПЛЕКСНЫХ КОРНЯ 120  ЗАПИСЬ ( IPRT , 913 )  XR1 ,  XR2 913  ФОРМАТ ( 'КОМПЛЕКСНЫЕ КОРНИ = (' , F9 . 4 , '+/-' , F9 . 4 , 'I)' ) ПЕРЕЙДИТЕ К 200 C НУЛЕВОЙ ДИСКРИМИНАНТ, ОДИН НАСТОЯЩИЙ КОРНЕВОЙ 130 ЗАПИСЬ ( IPRT , 912 ) XR1 912 ФОРМАТ ( 'ROOT X =' , F9 . 4 )           ПЕРЕЙТИ  К  200С + VE дискриминант, два действительных корня 140  WRITE ( ИПВТ , 911 )  XR1 ,  XR2 911  FORMAT ( 'КОРНИ X1 =' , F9 . 4 , 'X2 =' , F9 . 4 ) С --- GO TO 200С КОНЕЦ КВАДА 200  WRITE ( ИПВТ , 901 ) GO TO 100    C КОНЕЦ ПРОГРАММЫ C ДАННЫЕ СЛЕДУЮТ НА XEQ CARD 9000  CALL EXIT  END // XEQ + 001.000 + 000.000 + 000.000 + 001.000 + 002.000 + 003.000 + 002.000 + 002.000 + 000.000 + 002.000 + 000.000-004.000 + 000.500 + 000.000-004.000 + 000.250 + 002.000 -002.000 -004.000 + 000.000-004.000 + 002.730-007.200-003.750 + 000.000 + 000.000 + 000.000   

Пример сеанса APL \ 1130 [ править ]

На следующем изображении показан простой сеанс APL \ 1130. Этот сеанс был выполнен с помощью симулятора 1130, доступного на IBM 1130.org . Вышеупомянутый сеанс показывает вход в систему, добавление целых чисел от 1 до 100, создание таблицы сложения для целых чисел 1..5 и выход.

Конкурирующие системы [ править ]

В том же году, когда был выпущен 1130, Digital Equipment Corporation представила меньший, более дешевый и более продаваемый 12-битный PDP-8 , признанный первым успешным мини-компьютером.

Влияние 1130 г. [ править ]

  • Брайан Атли был менеджером проекта 1130-х годов во время его разработки и внедрения. Брайан сказал на третьей вечеринке 11/30, что до того, как IBM Marketing назвала 1130, она была известна как Small Engineering Computer System или SECS. [34] Первоначальная архитектура была 18-битной, но была изменена на 16-битную из-за влияния разработки System / 360 . Полный диалог его презентации 2005 года доступен на IBM1130.org .
  • Известный разработчик программного обеспечения Грэди Буч впервые познакомился с программированием на IBM 1130: [35]

... Я стучал в двери местного офиса продаж IBM, пока продавец не сжалился надо мной. После того, как мы немного поболтали, он вручил мне [руководство] по Фортрану. Я уверен, что он дал мне его, думая: «Я больше никогда не получу весточку от этого ребенка». Я вернулся на следующей неделе и сказал: «Это действительно круто. Я прочитал все и написал небольшую программу. Где я могу найти компьютер?» Этот парень, к моему удовольствию, нашел у меня время для программирования на IBM 1130 по выходным и поздним вечером. Это был мой первый опыт программирования, и я должен поблагодарить анонимного продавца IBM за начало моей карьеры. Спасибо, IBM.

  • Гуру LISP Гай Стил написал интерпретатор LISP для IBM 1130, когда учился в средней школе ( Бостонская латинская школа , в которой учащиеся использовали IBM 1130). [36] [37] Его код и документация для LISP 1.6, а также краткое изложение текущей работы по его запуску в режиме моделирования доступны на IBM1130.org .
  • Чак Мур хотел назвать свой новый язык «Четвертым», но операционная система IBM 1130 была ограничена пятисимвольными именами, поэтому в итоге он получил название FORTH . [38]
  • Дэн Бриклин , создатель программы VisiCalc , начал программировать, когда изучил и использовал IBM 1130 в рамках Летнего проекта по компьютерам / математике Национального научного фонда для старшеклассников, проведенного в Университете Пенсильвании в 1966 году [39]. ]
  • IBM 1130 с ядром 8 киловордов использовался для первого в мире постоянного исследования Search for Extraterrestrial Intelligence в радиообсерватории Университета штата Огайо . [40]
  • Чарльз Гольдфарб , отец SGML , описывает работу по установке системы набора текста на базе IBM 1130, которая «в конечном итоге изменила мою карьеру», подтолкнув его к универсальной разметке: [41]

Система представляла собой компьютер IBM 1130, машину размером с рабочий стол с 8 КБ оперативной памяти, дисковым накопителем на 512 КБ, устройством чтения бумажных лент Teletype CX и перфоратором для бумажных лент BRPE, а также фотомеханическим наборным устройством Photon 713. Это задание было моим первым опытом управления базой данных машиночитаемых документов: я научился аккуратно скатывать перфоленту, чтобы ее можно было аккуратно хранить в цилиндрических корзинах для макулатуры.
Тем временем, хотя я не знал об этом, корни обобщенной разметки закладывались. Исторически электронные рукописи содержали управляющие коды или макросы, которые заставляли документ форматироваться определенным образом («конкретное кодирование»). Напротив, универсальное кодирование, начавшееся в конце 1960-х годов, использует описательные теги (например, «заголовок», а не «формат-17 ").

  • Алан Кей использовал IBM 1130 на ранних этапах работы с графическим пользовательским интерфейсом для своей докторской степени. докторскую диссертацию в 1969 году. [42]
  • Центральная техническая средняя школа Хатчинсона («Hutch Tech») в Буффало, штат Нью-Йорк, использовала IBM 1130 в первой в стране четырехлетней программе по информатике для старших классов средней школы в 1969 году. Роберт Сантучи был руководителем программы по информатике и преподавал классы программирования и индуктивной логики . [43]
  • Инженер из IBM был нанят Signetics и включил ряд архитектурных особенностей IBM 1130 в однокристальный процессор Signetics 2650 . [44]

1130-е годы сегодня [ править ]

Известно, что из примерно 10 000 произведенных систем на 2021 год существуют следующие:

  • ACONIT в Гренобле, Франция, имеет полную систему 1130. [45]
  • В Музее истории компьютеров ( Маунтин-Вью, Калифорния ) есть система 1130. [46]
  • COSECANS ( Базель, Швейцария ). [47]
  • Национальный музей вычислительной техники (TNMOC) (Блетчли-Парк, Великобритания) имеет полную систему 1130. [48] [49]
  • Университет Штутгарта (Германия) имеет функциональную систему 1130. [50]
  • Карл Клаунч в настоящее время восстанавливает систему 1130. [51]

Апокриф [ править ]

Рассуждения о том, почему продукту был присвоен номер 1130, основывались на следующих возможностях:

  • Поскольку 1130 был маленькой научной машиной, число было выбрано умножением 360 (как в IBM 360 ) на π .
  • Это 11:30 было временем дня, когда планировщики продукта зашли в тупик, не решая, как называть продукт.
  • Что 1130 был 11-м компьютерным проектом IBM, и в нем было 30 инструкций.

Другие предполагали, что существование IBM 1130 объясняет, почему в семействе машин PDP-11 никогда не появлялся компьютер с обозначением «11/30» . [52]

См. Также [ править ]

  • Мэйнфрейм IBM
  • Список продуктов IBM

Ссылки [ править ]

  1. ^ a b Фрэнсис, CG (11 февраля 1965 г.). «IBM представляет мощный маленький компьютер» . Директор по информации (пресс-релиз). Уайт-Плейнс, Нью-Йорк : International Business Machines (IBM). Архивировано из оригинала на 2019-07-05.
  2. Атли, Брайан (январь 2005 г.). «Приглашенный спикер: Брайан Атли» (MP3) (Интервью) . Проверено 2 января 2012 .
  3. ^ 760 фунтов: модели 1A, 1B, 2A, 2B, 4A и 4B
    1050 фунтов: модели 1C, 1D, 2C, 2D, 3B, 3C, 3D, 5B, 5C и 5D
    • «Документы IBM 1130» . www.bitsavers.org . fe / GA26-5914-8_1130_Installation_Manual_Physical_Planning_Dec71.pdf , стр. 10-11.
  4. ^ а б Эмерсон В. Пью; Лайл Р. Джонсон; Джон Х. Палмер (1991). Системы IBM 360 и ранние 370 . MIT Press. ISBN 978-0-262-16123-7.
  5. ^ "Новый миникомпьютер Xerox" . Нью-Йорк Таймс . 29 января 1973 г.
  6. ^ «Xerox 530 поддерживает COBOL» . ComputerWorld . 26 декабря 1973 г.
  7. ^ "Ранг Xerox 530 Computer" (PDF) . computerhistory.org . Проверено 23 сентября 2014 года .
  8. ^ "Xerox 530 заказы" обнадеживают " " .
  9. Ларри Брид (август 2006 г.). «Как мы попали в APL \ 1130» . Вектор (Британская ассоциация APL) . 22 (3). ISSN 0955-1433 . Архивировано из оригинала на 2008-05-12 . Проверено 11 марта 2007 . 
  10. ^ для которого был компилятор IBM
  11. ^ SL / 1: существуют ссылки на студенческий язык / один, студенческий язык / 1 и язык подмножества / 1
  12. ^ программный продукт IBM
  13. ^ Хедрик, GE; Робертсон, Алан, "Компилятор подмножества Алгола 68 штата Оклахома". 1975 г. Международная конференция по Алголу 68. Стиллуотер, Оклахома-сити, 10–12 июня 1975 г.
  14. ^ Хенрик, GE, «инструкция ALGOL68 в университете штата Оклахома» , ACM SIGCSE бюллетень - Специальный выпуск восьмой технический симпозиум по информатике образования Главная, Том 9 Выпуск 3, август 1977, ACM НьюЙорк, штат НьюЙорк, США
  15. ^ МакДжонс, Пол, "Реализации и диалекты Алгола 68" , Группа сохранения программного обеспечения , Музей истории компьютеров
  16. ^ Корпорация IBM (1967). Статистическая система 1130 (1130-CA-06X) Руководство пользователя (PDF) . Проверено 8 февраля 2015 года .
  17. ^ Корпорация IBM (1968). Логическое руководство программы рабочей станции удаленного ввода заданий IBM 1130 (PDF) . Проверено 8 февраля 2015 года .
  18. ^ Корпорация IBM (1967). Система набора текста IBM 1130 (RPQ) (PDF) . Проверено 8 февраля 2015 года .
  19. ^ a b Корпорация IBM (май 1972 г.). Система IBM 1130 Disk Monitor, версия 2, Руководство программиста и оператора (PDF) . Проверено 6 февраля 2015 года .
  20. ^ "Этот артефакт" . Проверено 21 февраля 2017 .
  21. ^ Цитата: « Наш 1130 имеет картридж диска 2315, 1/2 миллиона слов с правой стороны, за дверцей. Считыватель бумажной ленты, вероятно, в первую очередь использовался для загрузки, вместо большой карты 1442 со скоростью 300 карт / мин. читатель ".
  22. ^ Системная справочная библиотека IBM 1130 Функциональные характеристики (PDF) . На странице 136 функциональных характеристик, рисунок 40, показано, как каждое из 12 отверстий на перфокарте заполняет 16 бит слова памяти при выполнении IPL (начальной загрузки программы) с использованием «режима загрузки чтения».
  23. ^ "Монитор программ" .
  24. ^ Модель 1 при 80 строк в минуту, Модель 2 при 40 л / мин
  25. ^ выбор из 340 линий в минуту, модель 6, 600 л / мин, модель 7
  26. ^ "Системная справочная библиотека Операционные процедуры IBM 1130" (PDF) . BitSavers .
  27. ^ Описание настраиваемой функции IBM 1130 - Канал вложений Номер запроса на получение 831552, форма A26-1579-0 (PDF) . Системная справочная библиотека IBM (первое издание). Сан-Хосе, Калифорния: IBM Corporation. Октябрь 1968 . Проверено 10 августа 2009 .
  28. ^ "IBM 1231 Optical Mark Page Reader" .
  29. ^ Корпорация IBM. «Архивы IBM: хронология DPD (страница 4)» . Проверено 10 августа 2011 .
  30. Hewlett-Packard (декабрь 1971 г.). Справочное руководство по компьютеру 2100A (PDF) . п. 18 . Проверено 5 августа 2016 года .
  31. ^ Научные системы данных. Справочное руководство по компьютеру 920 (PDF) . п. 17 . Проверено 5 августа 2016 года .
  32. ^ Корпорация IBM (1968). Язык ассемблера IBM 1130 (PDF) . Проверено 6 февраля 2015 года .
  33. ^ Библиотека подпрограмм IBM 1130, 9-е изд (PDF) . Корпорация IBM. 1974. стр. 93.
  34. ^ Атли, Брайан (2006-10-30). «Происхождение названия IBM 1130» . Архивировано из оригинала на 2007-10-01 . Проверено 16 января 2007 .
  35. ^ Буч, Грэди (2003-04-03). «Грейди Буч полирует свой хрустальный шар» . IBM . Проверено 16 января 2007 .
  36. ^ Стил, Гай Л. младший (2005-11-24). «Мысли о языковом дизайне - новые задачи требуют новых решений» . Журнал доктора Добба . Проверено 16 января 2006 .
  37. ^ Стил, Гай Л. младший "Признания счастливого хакера" . Архивировано из оригинала на 2007-02-03 . Проверено 16 января 2006 .
  38. ^ Скорее, Элизабет; Колберн, Дональд; Мур, Чарльз (март 1993). «Эволюция форта» . Проверено 16 января 2007 .
  39. ^ Bricklin, Дэн (2002-08-23). «Воспоминания во время посещения района залива и Музея компьютерной истории» . Проверено 16 января 2007 .
  40. Диксон, Боб (13 августа 2005). «SETI в 1970-е годы» . Большое ухо . Проверено 16 января 2007 .
  41. Перейти ↑ Goldfarb, Charles (1996). «Корни SGML - личное воспоминание» . Проверено 16 января 2007 .
  42. ^ Кей, Алан С., "Реактивный двигатель" , доктор философии. докторскую диссертацию, Университет штата Юта, 1969. «Процедуры графического отображения, генератор символов и редактор работали в течение года на компьютере IBM 1130 с« домашним »интерфейсом. К сожалению, 1130 изо всех сил старался просто действовать как прославленный буфер дисплея , и ни одна из алгоритмических процедур не была реализована ».
  43. ^ Кох, Уоррен (1972). "Использование компьютеров в обучении в средних школах" (PDF) . Проверено 6 августа 2014 .
  44. ^ "Signetics 2650: IBM на чипе" . CPU Shack. 16 октября 2016 . Проверено 25 октября +2016 .
  45. ^ "IBM 1130" . АКОНИТ (по-французски) . Проверено 11 июля, 2016 .
  46. ^ "Детали артефакта: модель BM 1130" . Музей истории компьютеров . Проверено 11 июля, 2016 .
  47. ^ Висс, Оскар. "Веб-сайт Оскара Э. Висса" . КОСЕКАНЫ (на немецком языке) . Проверено 11 июля, 2016 .
  48. ^ «Восстановление системы IBM 1130 в течение 2011 года» . Национальный музей вычислительной техники . Архивировано из оригинала 4 апреля 2019 года . Проверено 11 июля, 2016 .
  49. ^ "Галерея больших систем: IBM 1130" . Национальный музей вычислительной техники. Архивировано 11 февраля 2020 года . Дата обращения 11 февраля 2020 .
  50. ^ "IBM 1130" . Computermuseum der Fakultät Informatik . Проверено 11 июля, 2016 .
  51. ^ Клаунч, Карл. «Спасение 1130» . Проверено 11 июля, 2016 .
  52. ^ PDP-11/20 и / 15

Внешние ссылки [ править ]

  • Архив IBM: пресс-релизы IBM 1130 , хронология, фотографии, папка с фактами.
  • IBM 1130.org Сайт Норма Алекса и Брайана Книттеля, на котором есть важная информация о модели 1130 и загружаемый симулятор, поддерживающий среды DMS R2V12 и APL.
  • www.ibm1130.net - это сайт Говарда Шубса, посвященный модели 1130.
  • Личный отчет Арнольда Рейнхольда о 1130 году. Текст отсюда был включен в эту статью с разрешения.
  • Набор PDF-файлов, состоящий из отсканированных руководств по IBM 1130
  • Страница Кима Фарника о ретро-вычислениях, в частности о 1130
  • Обсуждение (тогдашнего) вычислительного центра Angle Park, оснащенного IBM 1130
  • Фотографии IBM 1130 Боба Розенблума
  • Материал IBM 1130 в Колумбийском университете, сайт истории вычислений.
  • Коллекция Flickr подробных фотографий, сделанных Питером Воганом IBM 1130 в Национальном музее вычислительной техники.