stringtranslate.com

ИБМ 1130

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

Консоль IBM 1130

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

IBM 1130 с периферийными устройствами, включая перфоратор для чтения бумажных лент, устройство чтения карт/перфоратор IBM 1442 (сзади) и плоттер IBM 1627 Calcomp.

Описание

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

Общий объем производства модели 1130 оценивается в 10 000 экземпляров. [4] Модель 1130 занимает место в истории компьютеров, потому что она (и ее клоны, не принадлежащие IBM) позволила многим людям впервые напрямую взаимодействовать с компьютером. Соотношение цены и качества было хорошим, и, в частности, он включал в себя недорогой съемный дисковый накопитель с надежным и простым в использовании программным обеспечением, которое могло быть на нескольких языках высокого уровня. Низкая цена (около 32 000 или 41 000 долларов США с дисководом) [3] и хорошо сбалансированный набор функций позволили разработать интерактивную программу «открытого производства» .

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

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

Модели

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

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

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

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

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

IBM 1800 , анонсированный в ноябре 1964 года [6], является предшественником 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-битный миникомпьютер общего назначения, оба имеют архитектуру , отличную от 1130 и друг от друга.

Хронология

Программное обеспечение

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

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

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

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

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

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

Существует даже компилятор АЛГОЛА на французском языке , в котором, например, " Debut ...Fin;" заменяет " Begin ... End;". Все его сообщения написаны на французском языке, поэтому целью является «компиляция Bonne».

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

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

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

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

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

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

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

Контроль заданий

Пакетная работа 1130 управляется управляющими записями в первичном входном потоке (считыватель карт или бумажной ленты). Существует два типа контрольных записей: контрольные записи мониторинга и контрольные записи супервизора. [19]

Мониторинг контрольных записей

Записи управления монитором идентифицируются, после чего //␢в столбцах 4–7 следует «код псевдооперации». «␢» представляет собой один пробел.

Запись JOBможет иметь букву «T» в столбце 8, обозначающую, что любые файлы, добавленные в область пользователя в результате этого задания, должны быть удалены в конце. Столбцы с 11 по 15 могут содержать этикетку картриджа; Прежде чем продолжить, система проверяет, установлен ли указанный картридж.

Запись XEQможет содержать имя запускаемой программы в столбцах с 8 по 12. Если это имя опущено, будет выполнена программа, находящаяся в настоящее время в рабочей памяти. Если в столбце 14 указано «L» и программа имеет формат дисковой системы (не образ ядра), Core Load Builder напечатает карту ядра. Если за этим оператором следует LOCAL NOCAL, или FILESКонтрольные записи супервизора, столбцы 16 и 17 содержат количество этих записей. В столбце 19 дополнительно указывается, какая подпрограмма драйвера диска должна быть связана. «0», «1» или «N» запрашивают DISK1, DISK2 или DISKN, любой другой символ, включая пробел, запрашивает DISKZ, дисковую процедуру FORTRAN.

Контрольные записи супервайзера

Записи Supervisor Control начинаются с символа «*» в столбце 1, за которым сразу следует псевдооперация команды в столбце 2. Это LOCAL, NOCAL, и FILESдля Core Load Builder. Управляющие записи DUP имеют аналогичный формат. Эти записи управляют связыванием программ либо для // XEQоператора, либо для команды DUP *STORECI.

Порядок работы

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

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

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

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

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

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

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

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

Организация диска

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

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

Система различает системные картриджи , содержащие монитор и утилиты, а также пользовательские данные, и несистемные картриджи , содержащие только пользовательские данные. Все картриджи содержат информацию о цилиндре 0, включая таблицу дефектных цилиндров, идентификатор картриджа и программу начальной загрузки ( код начальной загрузки ). На несистемных картриджах программа начальной загрузки просто выводит сообщение об ошибке и ждет, если будет предпринята попытка загрузки с этого картриджа. На системном картридже это программа холодного запуска , за которой следует область связи и резидентный монитор в первом и втором секторах. Секторы с третьего по пятый содержат таблицу эквивалентности местоположений системы (SLET) — каталог всех этапов всех программ мониторинга. Другая управляющая информация заполняет первую дорожку.

Системная область присутствует на системных картриджах. Он содержит программу Disk Monitor и, опционально, компилятор FORTRAN, ассемблер и основной буфер изображения , используемый для связывания перемещаемых программ. Он также содержит каталоги пользовательских файлов — таблицу эквивалентности фиксированного местоположения (FLET) и таблицу эквивалентности местоположения (LET).

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

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

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

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

Пакет дисков или картридж инициализируется для использования на модели 1130 с помощью процедуры инициализации пакета дисков (DIPR). Эта процедура сканирует диск и записывает адреса секторов во все цилиндры, помечает дефектные сектора и записывает идентификатор картриджа в нулевой цилиндр. DIPR — это автономная программа , которая загружается с карточек или бумажной ленты и принимает идентификатор картриджа из системной консоли. [19]

Дисковая утилита (DUP)

Программа Disk Utility (DUP) предоставляет команды для передачи программ, подпрограмм и данных. Он вызывается // DUPкартой управления заданием, за которой следуют одна или несколько карт управления: [24]

Другие команды, в основном предназначенные для использования системным администратором, определяют или расширяют фиксированную область, удаляют компилятор и/или ассемблер FORTRAN из системы и восстанавливают правильные адреса секторов в рабочей памяти, если они были изменены.

Операнды должны быть помещены в фиксированные столбцы. Код исходного устройства указывается в столбцах 13 и 14, а устройство назначения — в столбцах 17 и 18. Эти коды устройств:

При желании имя программы может быть закодировано в столбцах с 21 по 25, а поле счетчика - в столбцах с 27 по 30. Интерпретация этих полей зависит от запрошенной функции DUP.

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

Следующая управляющая карта дает команду DUP взять текущее содержимое рабочей памяти и переместить его в пользовательскую область, назвав ее PROGM. DUP знает размер файла в рабочей памяти. Размер пользовательской области будет увеличен на размер файла, а размер рабочей памяти соответственно уменьшится.

Пример платы управления IBM 1130 DUP

Периферийные устройства

Линейный принтер IBM 1132
Устройство считывания/перфорирования карт IBM 1442
Барабанный плоттер IBM 1627 .

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

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

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

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

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

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

Обзор набора команд

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

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

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

Основные регистры:IAR = Регистр адреса инструкцииАСС = аккумулятор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 = переход или пропуск условия (зависит от модификатора) т.е. БП БНП БН БНН БЗ БНЗ БК БО БОДBOSC — разветвление или пропуск по условию (альтернатива для BSC с установленным битом 9) Выход из текущего уровня прерывания.BSI = IAR филиала и магазинаMDX = Изменить индекс и пропустить (увеличить IAR на единицу, если знак изменится или станет нулевым)WAIT = остановка NOP = нет операций (альтернатива для SLA 0)XIO = выполнение ввода-вывода1800 Мнемоника дополнительных инструкций:CMP = сравнение ACC DCM = двойное сравнение ACC и EXTЭквивалентная мнемоникаАссемблер диска ввел несколько мнемосхем, эквивалентных существующим.инструкции, призванные прояснить намерения программиста:SKP — условие пропуска, эквивалентное короткому BSC.B — Безоговорочное ветвление, эквивалентное BSC без указания условий.BP — положительный аккумулятор ответвления, что эквивалентно BSC, указывающему условие «+».BNP — аккумулятор ответвления не положительныйBN — ветвь аккумулятора отрицательнаяBNN — аккумулятор ветви не отрицательныйBZ - Нулевой аккумулятор филиалаBNZ — Аккумулятор ветви не равен нулюBC — Филиал на КерриBO – ответвление при переполненииBOD — аккумулятор ответвления нечетныйMDM — изменение памяти, эквивалент неиндексированного длинноформатного MDX.XCH — аккумулятор и расширение обмена, эквивалент RTE 16.Формат короткой инструкции (одно 16-битное слово): 1Биты 0...45678......5 ОП---FTTDisp----ОП — это операцияF — формат 0 = короткийТТ — это тегDisp – это перемещениеДлинный формат инструкции (два 16-битных слова): 1 1Биты 0...456789.....50..............5 OP ---FTTIMod ---- Адрес ---------ОП — это операцияF — формат 1 = длинныйТТ — это тегЯ — косвенный битМод есть модификаторРасчет эффективного адреса (EA): Ф = 0 | Ф = 1, я = 0 | Ф = 1, я = 1 Прямая адресация| Прямая адресация| Косвенная адресация-------------------------------------------------- -----------------ТТ = 00 | EA = Displ + IAR | Советник = Добавить | ЕА = С/ДобавитьТТ = 01 | EA = Displ + XR1 | Советник = Добавить + XR1 | EA = C/Add + XR1ТТ = 10 | EA = Displ + XR2 | Советник = Добавить + XR2 | ЕА = C/Add + XR2ТТ = 11 | EA = Displ + XR3 | Советник = Добавить + XR3 | ЕА = C/Add + XR3-------------------------------------------------- ----------------- Disp = Содержимое поля смещения Добавить = Содержимое поля адреса инструкции C = Содержимое местоположения, указанного с помощью «Добавить» или «Добавить + XR».
Зарезервированная память

Использование самых низких адресов основной памяти определяется либо аппаратным обеспечением, либо соглашением:

Программирование

Подпрограммы

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

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

SIMPL: DC *-* Это точка входа, изначально заполненная нулем. (что бы ни делала рутина) BI SIMPL Возврат через прямую ветвь по адресу, найденному в местоположении SIMPL. 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. (Подпрограммы Фортрана используют индексный регистр 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 экономит память для часто вызываемых подпрограмм.: [33] : стр.24  Связь LIBF требует одного слова для каждого вызова, плюс три слова для записи вектора передачи и дополнительного кода в самой подпрограмме, тогда как связь CALL требует двух слов на вызов, поскольку большинство CALL будут адресованы по адресу, находящемуся за пределами диапазона от -128 до +127 слов однословного кода операции.

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

Модификация кода

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

Компилятор Фортрана

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

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

 БСИ Л SIMPL DC X Адрес X, на котором должен работать SIMPL.

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

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

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

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

Преимущества SUBIN заключаются в следующем:

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

Пользователь

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

 М = 3 * ИОР ( I , J ) + 5   

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

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

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

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

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

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

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

Повышенная точность

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

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

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

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

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

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

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

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

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

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

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

Примеры программирования

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

Пример колоды программ на ассемблере

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

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

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

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

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

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

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

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

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

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

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

Пример сеанса APL\1130

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

Конкурирующие системы

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

Влияние 1130 г.

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

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

11:30 сегодня

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

Апокрифы

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

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

Смотрите также

Примечания

  1. ^ для которого существовал компилятор IBM
  2. ^ SL/1: существуют ссылки на Student Language/One, Student Language/1 и Subset Language/1.
  3. ^ программный продукт IBM
  4. ^ Модель 1 при 80 строк в минуту, Модель 2 при 40 строк в минуту.
  5. ^ выбор: 340 строк/мин, модель 6, 600 л/мин, модель 7.

Рекомендации

  1. ^ abc «Галерея больших систем: IBM 1130» . Национальный музей вычислительной техники. Архивировано из оригинала 11 февраля 2020 года . Проверено 11 февраля 2020 г.
  2. ^ ab Руководство по установке IBM 1130, IBM Form GA26-5914, июнь 1966 г., BitSavers
  3. ^ аб Фрэнсис, CG (11 февраля 1965 г.). «IBM представляет мощный маленький компьютер». Директор по информации (Пресс-релиз). Уайт-Плейнс, Нью-Йорк : International Business Machines (IBM). Архивировано из оригинала 5 июля 2019 г.
  4. ^ Атли, Брайан (январь 2005 г.). «Приглашенный докладчик: Брайан Атли» (MP3) (Интервью) . Проверено 2 января 2012 г.
  5. ^ 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.
  6. ^ «Система сбора данных и управления IBM 1800» . Архивы IBM . 23 января 2003 года . Проверено 20 августа 2021 г.
  7. ^ AB Эмерсон В. Пью; Лайл Р. Джонсон; Джон Х. Палмер (1991). Системы IBM 360 и ранние версии 370 . МТИ Пресс. ISBN 978-0-262-16123-7.
  8. ^ «Новый миникомпьютер Xerox». Нью-Йорк Таймс . 29 января 1973 года.
  9. ^ «Xerox 530 поддерживает COBOL» . Компьютерный мир . 26 декабря 1973 года.
  10. ^ «Компьютер Rank Xerox 530» (PDF) . www.computerhistory.org . Проверено 23 сентября 2014 г.
  11. ^ «Xerox 530 заказывает «обнадеживающе»» .
  12. ^ Ларри Брид (август 2006 г.). «Как мы добрались до APL \ 1130». Вектор (Британская ассоциация APL) . 22 (3). ISSN  0955-1433. Архивировано из оригинала 12 мая 2008 г. Проверено 11 марта 2007 г.
  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. ^ ab IBM Corporation (1968). Справочное руководство по системе IBM 1130 Disk Monitor (PDF) . Проверено 31 августа 2021 г.
  20. ^ Корпорация IBM (май 1972 г.). Система IBM 1130 Disk Monitor, версия 2, Руководство программиста и оператора (PDF) . Проверено 6 февраля 2015 г.
  21. ^ "ИБМ 1130" . Проверено 21 февраля 2017 г.
  22. ^ Цитата: « Наш 1130 имеет дисковый картридж на 2315, 1/2 миллиона слов с правой стороны, за дверцей. Устройство чтения бумажной ленты, вероятно, в основном использовалось для загрузки вместо большой карты 1442 со скоростью 300 карт / мин. читатель » .
  23. ^ Функциональные характеристики IBM 1130 (PDF) . Справочная библиотека по системам IBM.На странице 136 Функциональных характеристик, на рисунке 40, показано, как каждое из 12 отверстий на перфокарте заполняет 16 бит слова памяти при выполнении IPL (начальной загрузки программы) в режиме «Чтение в режиме загрузки».
  24. ^ «Программы мониторинга».
  25. ^ Корпорация IBM. «Папка 1130 Facts: вычислительная система IBM 1130». Архивы IBM . Проверено 29 апреля 2023 г.
  26. ^ «Рабочие процедуры IBM 1130» (PDF) . БитСейверы . Справочная библиотека по системам IBM.
  27. ^ Описание специальной функции IBM 1130 — номер RPQ канала подключения 831552, форма A26-1579-0 (PDF) . Справочная библиотека систем IBM (первое издание). Сан-Хосе, Калифорния: Корпорация IBM. Октябрь 1968 года . Проверено 10 августа 2009 г.
  28. ^ "Считыватель страниц оптических меток IBM 1231" .
  29. ^ Корпорация IBM. «Архивы IBM: хронология DPD (стр. 4)» . Проверено 10 августа 2011 г.
  30. ^ Hewlett-Packard (декабрь 1971 г.). Справочное руководство по компьютеру 2100A (PDF) . п. 18 . Проверено 5 августа 2016 г.
  31. ^ «Руководство пользователя PDP-8» . Корпорация цифрового оборудования. Май 1966 года . Проверено 26 апреля 2021 г.
  32. ^ Системы научных данных. Справочное руководство по компьютеру 920 (PDF) . п. 17 . Проверено 5 августа 2016 г.
  33. ^ Корпорация IBM (1968). Язык ассемблера IBM 1130 (PDF) . Проверено 6 февраля 2015 г.
  34. ^ Библиотека подпрограмм IBM 1130, 9-е изд. (PDF) . Корпорация IBM. 1974. с. 93.
  35. ^ Атли, Брайан (30 октября 2006 г.). «Происхождение названия IBM 1130». Архивировано из оригинала 1 октября 2007 г. Проверено 16 января 2007 г.
  36. ^ Буч, Грейди (3 апреля 2003 г.). «Грейди Буч полирует свой хрустальный шар». ИБМ . Проверено 16 января 2007 г.
  37. ^ Стил, Гай Л. младший (24 ноября 2005 г.). «Мысли о языковом дизайне. Новые проблемы требуют новых решений». Журнал доктора Добба . Проверено 16 января 2006 г.
  38. ^ Стил, Гай Л. младший «Исповедь счастливого хакера». Архивировано из оригинала 3 февраля 2007 г. Проверено 16 января 2006 г.
  39. ^ Скорее, Элизабет; Колберн, Дональд; Мур, Чарльз (март 1993 г.). «Эволюция Форта» . Проверено 16 января 2007 г.
  40. ^ Бриклин, Дэн (23 августа 2002 г.). «Воспоминания о посещении района залива и Музея компьютерной истории» . Проверено 16 января 2007 г.
  41. ^ Диксон, Боб (13 августа 2005 г.). «СЕТИ в 1970-е годы». Большое Ухо . Проверено 16 января 2007 г.
  42. ^ Гольдфарб, Чарльз (1996). «Корни SGML — личные воспоминания» . Проверено 16 января 2007 г.
  43. ^ Кей, Алан С., «Реактивный двигатель», доктор философии. диссертация, Университет Юты, 1969 г. «Процедуры графического отображения, генератор символов и редактор работали в течение года на компьютере IBM 1130 с «самодельным» интерфейсом. К сожалению, 1130 старался выполнять роль просто прославленного буфера дисплея. , и ни одна из алгоритмических процедур не была реализована».
  44. ^ Кох, Уоррен (1972). «Использование компьютеров в обучении в средних школах» (PDF) . Проверено 6 августа 2014 г.
  45. ^ «Signetics 2650: IBM на чипе» . ЦП Хижина. 16 октября 2016 г. Проверено 25 октября 2016 г.
  46. ^ "ИБМ 1130" . АКОНИТ (на французском языке) . Проверено 11 июля 2016 г.
  47. ^ «Детали артефакта: модель BM 1130» . Музей истории компьютеров . Проверено 11 июля 2016 г.
  48. ^ Висс, Оскар. «Веб-сайт Оскара Э. Висса». КОСЕКАНЦЫ (на немецком языке) . Проверено 11 июля 2016 г.
  49. ^ «Восстановление системы IBM 1130 в 2011 году» . Национальный музей вычислительной техники . Архивировано из оригинала 4 апреля 2019 года . Проверено 11 июля 2016 г.
  50. ^ "ИБМ 1130" . Компьютерный музей факультета информатики . Проверено 11 июля 2016 г.
  51. ^ Клаунч, Карл. «Спасение 1130» . Проверено 11 июля 2016 г.
  52. ^ ПРП-11/20 и /15

Внешние ссылки