IBM 1401
IBM 1401 — десятковий комп'ютер, розроблений передовою компанією IBM, випущений 5 жовтня 1959. Комп'ютер належить до другого покоління ЕОМ. Версія 1401 була найпоширенішим комп’ютером 60-х років. 8 лютого 1971 року був знятий з виробництва.[1]
Опис
IBM випускала комп'ютери IBM-1401 для комерційних розрахунків[2]. Ця машина могла прочитувати і записувати магнітні стрічки та перфокарти й роздруковувати результат так само швидко, як і IBM-7094, але при цьому коштувала дешевше. Для наукових обчислень вона не підходила але була дуже зручна для ведення ділових записів.[3]
У IBM-1401 не було регістрів та фіксованої довжини слова. Пам'ять складалася з байтів, вміщувала 4 Кбайт по 8 бітів (4 Кбайт). Кожен байт містив символ в 6 бітів, адміністративний біт та біт для вказівки кінця слова. У команди MOVE, наприклад, є початкова адреса та адреса пункту призначення. Ця команда переміщає байти з першої адреси в другу, поки біт кінця слова не прийме значення 1.
Приклад програми:
, 008015,022029,036043,050054,055062,063065,069080 / 333 / M0792502F1.065HELLO WORLD
- Встановити слово-мітку (opcode «,» операнди 008 015)
- Встановити більше слів-міток.
- Очистити сховище - 333-300 (opcode «/» 333 операнда)
- Очистити сховище - інша частина області друку 299-200 (opcode«/» прикутий адрес)
- Переміщення «Hello World» до області друку (код операції «М», операндa 079 та 250)
- Друк рядка (opcode «2»)
- Прогнати сторінку через ПРИНТЕР (код операції «F» модифікатор «1»)
- Halt (opcode операнд 065)
Історія
Щомісячна орендна плата за використання IBM 1401 починалася від 2500 дол. США (на сьогоднішній день близько 20 539 дол. США). Компанія IBM була вражена, отримавши 5200 замовлень за перші п'ять тижнів після виходу моделі 1401. IMB 1401 використовувала багато електроенергії для стабільної роботи. Число покупців в 60-х роках досягло 10 000 (До середини 60-х років майже половина всіх комп'ютерних систем в світі були типу 1401). Продажа моделі 1401 припиналася в 1971 році.
Зазвичай IBM 1401 використовувалася на малих підприємствах для обробки даних. Саме 1401 передавала вхідні дані з периферійних пристроїв (таких як IBM 1402 Card Read-Punch) на стрічку, а потім з стрічки на перфокарту, принтер IBM 1403 або іншій периферійний пристрій. IBM вперше застосувала емуляційний микрокод для 1401 у вигляді схеми постійної пам'яті. Модель котра вийшла після припинення продажі IBM 1401 мала назву IBM 1410.
Архітектура
Кожен буквено-цифровий символ в IBM 1401 був закодований шістьма бітами - B, A, 8,4,2,1. B та A біти були названі зонами-біт. 8,4,2,1 біти були названі цифровими бітами взяті зі шпальти перфокарти IBM 80. IBM називали 1401 в символьному коді BCD, незважаючи на те, що термін описує тільки десяткове кодування. З кожною клітинкою пам'яті були ще два біти, які мають назву C для непарної перевірки та M для парної перевірки знаків слова[4].
Кожна комірка пам'яті мала наступні біти:
CBA 8 4 2 1 М
IBM 1401 був доступний в шести конфігураціях пам'яті: 1400, 2000., 4000, 8000, 12000, або 16000 символів. Адресуватися міг кожен символ, адреса в діапазоні від 0 до 15999.
Деякі операції використовують спеціальні осередки пам'яті (ці місця не були збережені й можуть бути використані для інших цілей).
Формат інструкції для IBM-1401
Opcode
with [A-or-I-or-unit-address [B-address]] [modifier]
word mark
Опкод задається одним символом. Адреси пам'яті ( «I» branch target, «A» і «B» date) та блок-адреси представляють три символи. Модифікатор опкоду також задається одним символом. Довжина інструкції 1, 2, 4, 5, 7 або 8 символів.
Апаратна реалізація
Велика частина логічної схеми в 1401 — діодно-транзисторна логіка (англ. diode-transistor logic, DTL), яку IBM назвав CTDL (Complemented Transistor Diode Logic)[3].
Інші типи IBM схем[5]:
- Alloy (присутня логіка але в основному різні нелогічні функції необхідні для транзисторів ).
- CTRL (присутня регістерно-транзистерна логіка (RTL) ).
- SDTDL (присутня регістерно-діодна логіка).
Ці схеми були побудовані на основі дискретних компонентів (резистори, конденсатори, транзистори) та встановлені на односторонніх паперах епоксидних друкованих плат розміру (2,5 - 4,5) дюйма з золотими гальванічними краями, 16-контактного роз'єму (5.375 - 4,5 дюйма) з двома 16-контактними золотими гальванічними торцевими роз'ємами (подвійної ширини), які IBM називають SMS карти (стандартна модульна система). SMS-карти були вставлені в гніздах на шарнірних стійках, для якої IBM дала назву ворота. Як і більшість машин, на той час, IBM 1401 використовувала пам'ять на магнітних осердях. Діаметр кожного осердя був близько 1 мм в діаметрі, для запису-читання біту використовувалися чотири провідники. Стек з восьми таких площин зберігав шість бітів даних. Системи були широко доступна з двома, трьома або чотирма такими модулями.
Символи та опкоди
IBM 1401 представляє односимвольні операції. У багатьох випадках, особливо для більш загальних інструкцій, символи були такими: A - додати (від add), B - відгалужитись (від branch), S - відняти (від subtract), та інші. Символи можна побачити в таблиці:
BCD символи | Print-A | Print-H | карта | BCD
w/o M |
Операції | Визначення та примітки |
---|---|---|---|---|---|---|
Blank | C | |||||
. | . | . | 12-3-8 | BA8 21 | Halt | |
¤ | ¤ | ) | 12-4-8 | CBA84 | Clear Word Mark | Ромб |
[ | 12-5-8 | BA84 1 | ||||
< | 12-6-8 | BA842 | Менше | |||
12-7-8 | CBA8421 | Мітка групи | ||||
& | & | + | 12 | CBA | ||
$ | $ | $ | 11-3-8 | CB 8 21 | ||
* | * | * | 11-4-8 | B 84 | ||
] | 11-5-8 | CB 84 1 | ||||
; | 11-6-8 | CB 842 | ||||
Δ | 11-7-8 | B 8421 | Дельталі (Зміна режиму) | |||
- | - | - | 11 | B | ||
/ | / | / | 0-1 | C A 1 | Clear Storage | |
, | , | , | 0-3-8 | C A8 21 | Set Word Mark | |
% | % | ( | 0-4-8 | A84 | Divide | Спеціальна функція |
ˠ | 0-5-8 | C A84 1 | слово Separator | |||
\ | 0-6-8 | C A842 | Лівий | |||
⧻ | 0-7-8 | A8421 | Стрічка сегмента | |||
ƀ | ‡ | ‡ | N/A
0 |
A | Не може бути зчитана з карти без без наявності RPQ, читається як 8-2 | |
# | # | = | 3-8 | 8 21 | Modify Address | потрібно більш 4000 символів пам'яті |
@ | @ | ' | 4-8 | C 84 | Multiply | Спеціальна функція |
: | 5-8 | 84 1 | ||||
> | 6-8 | 842 | Більше | |||
√ | 7-8 | C 8421 | Tape Mark | |||
? | & | & | 12-0 | CBA8 2 | Zero and Add | плюс Нуль |
A | A | A | 12-1 | BA 1 | Add | |
B | B | B | 12-2 | BA 2 | Branch or Branch on Indicator | |
C | C | C | 12-3 | CBA 21 | Compare | |
D | D | D | 12-4 | BA 4 | Move Numerical | Біти |
E | E | E | 12-5 | CBA 4 1 | Move Characters and Edit | |
F | F | F | 12-6 | CBA 42 | Control Carriage | Принтер |
G | G | G | 12-7 | BA 421 | ||
H | H | H | 12-8 | BA8 | Store B-Address Register | спеціальна функція |
I | I | I | 12-9 | CBA8 1 | ||
! | - | - | 11-0 | B 8 2 | Zero and Subtract | мінус Нуль |
J | J | J | 11-1 | CB 1 | ||
K | K | K | 11-2 | CB 2 | Select Stacker and other device controls | |
L | L | L | 11-3 | B 21 | Load Characters to Word Mark | |
M | M | M | 11-4 | CB 4 | Move Characters to Word Mark | |
N | N | N | 11-5 | B 4 1 | No Operation | |
O | O | O | 11-6 | B 42 | ||
P | P | P | 11-7 | CB 421 | Move Characters to
Record or Group Mark |
Спеціальна функція |
Q | Q | Q | 11-8 | CB 8 | Store A-Address Register | Спеціальна функція |
R | R | R | 11-9 | B 8 1 | ||
‡ | ‡ | ‡ | 0-2-8 | A8 2 | Record Mark | |
S | S | S | 0-2 | C A 2 | Subtract | |
T | T | T | 0-3 | A 21 | Translate | 1460 |
U | U | U | 0-4 | C A 4 | Control Unit | Лента |
V | V | V | 0-5 | A 4 1 | Branch if Word Mark
and/or Zone |
|
W | W | W | 0-6 | A 42 | Branch if Bit Equal | Спеціальна функція |
X | X | X | 0-7 | C A 421 | Move and Insert Zeros | Спеціальна функція |
Y | Y | Y | 0-8 | C A8 | Move Zone | Лента |
Z | Z | Z | 0-9 | A8 1 | Move Characters and
Suppress Zeros |
|
0 | 0 | 0 | 0 | C 8 2 | ||
1 | 1 | 1 | 1 | 1 | Read a Card | |
2 | 2 | 2 | 2 | 2 | Write a Line | |
3 | 3 | 3 | 3 | C 21 | Write and Read | |
4 | 4 | 4 | 4 | 4 | Punch a Card | |
5 | 5 | 5 | 5 | C 4 1 | Read and Punch | |
6 | 6 | 6 | 6 | C 42 | Write and Punch | |
7 | 7 | 7 | 7 | 421 | Write, Read, and Punch | |
8 | 8 | 8 | 8 | 8 | Start Read Feed | Спеціальна функція |
9 | 9 | 9 | 9 | C 8 1 | Start Punch Feed | Спеціальна функція |
Модифікатори символів за допомоги B-інструкції
BCD Символ | Блок | Призначення |
---|---|---|
Blank | 1401 | знака необхідності в наступному символі |
1 | 1009 | умови |
1011 | операції символу повернення | |
1011 | читач парності індикатор | |
1231 | автоматичний вибір | |
1285 | помилка | |
1412 | контроль перевірки індикатора | |
1418 | пізнє читання | |
1419 | документ для читання | |
1428 | пізно прочитати або змінити режим пізнього читання | |
1445 | помилка принтера | |
7340 | незвичайний кінець | |
7740 | передача до набору з ненормальним станом | |
DDC | помилка передачі | |
2 | 1009 | буфер доступний |
1011 | перфоратор готорвий | |
1011 | читач готовий | |
1231 | повний буфер | |
1285 | кінець рядка | |
1412 | сигнал читача | |
1418 | готові брати участь | |
1419 | документ зчитує (PDS 4) | |
1428 | готові брати участь | |
7340 | hypertape нормальний кінець | |
7740 | передача завершена успішно | |
DDC | передача закінчилася через GMWM | |
3 | 1009 | відбулася безпомилкова передача |
1011 | перфоратор не готовий до прийому даних | |
1231 | готовий читати | |
1285 | читач транспортує | |
1412 | зчитування, перевірте індикатор | |
1418 | документ для зчитування | |
1419 | діє поле | |
1428 | документ після зчитування | |
7340 | блок управління 7641 зайнятий | |
7740 | отримати запит | |
DDC | запит на читання | |
4 | 1009 | поганий індикатор |
1011 | перфоратор не готовий читати | |
1231 | порожній буфер | |
1285 | помічена лінія | |
1412 | сума поле індикатора | |
1419 | процес управління | |
7340 | hypertape увага | |
7740 | 7740 увага | |
DDC | записи | |
5 | 1009 | підтвердження коду помилки |
1011 | перфоратор затягнутий | |
1231 | помилка читання або перевитрата | |
1285 | інформація про заголовок | |
1412 | індикатор на процес контролю | |
1418 | кінцевий документ | |
1419 | рахунковий номер | |
1428 | кінцевий документ | |
1445 | принтер зайнятий | |
6 | 1009 | потрібна увага до програма |
1011 | перфораторна котушка повна | |
1231 | прапорець синхронізації | |
1285 | готовий прочитати рядок | |
1412 | номер індикатора | |
1418 | символ в рядку | |
1419 | поле транзитного номера | |
1428 | символ в рядку | |
1445 | каретка зайнята | |
DDC | написати до процесу | |
7 | 1009 | кінець повідомлення |
1285 | читач готовий | |
1412 | транзитний номер індикатора | |
1418 | порожній транспорт (кінець файлу) | |
1419 | поле серійного номера | |
1428 | порожній транспорт (кінець файлу) | |
1445 | канал каретки 9 | |
DDC | читати прогрес | |
8 | 1009 | кінець файлу |
1285 | кінець файлу | |
1412 | перевірка індикатора | |
1418 | готовий читати | |
1419 | автовибір | |
1428 | готовий читати | |
1448 | канал 12 каретки | |
DDC | система зупинена | |
9 | 1403 | канал стрічки каретки |
0 | 1404 | помилка |
' or @ | 1403 | канал стрічки каретки |
> | 1448 | кінець блоку |
/ | 1401 | невірні порівняння |
S | 1401 | порівняти |
T | 1401 | малі порівняння |
U | 1401 | великі порівняння |
V | 1301 | помилка диска |
1311 | помилка диска | |
1405 | читати чи записувати перевірки на парність | |
W | 1301 | неправильна довжина запису |
1311 | неправильна довжина запису | |
1405 | неправильна довжина запису | |
X | 1301 | нерівний адреса |
1311 | нерівний адреса | |
1405 | нерівний адреса | |
Y | 1301 | стан помилки |
1311 | стан помилки | |
1405 | стан помилки | |
Z | 1401 | арифметичне переповнення |
‡ | 1403 | помилка принтера |
( or % | 1401 | перевірка процесу |
1440 | I/O перевірити та вимкнути | |
\ | 1301 | доступ зайнятий |
1311 | доступ зайнятий | |
J | 1419 | I/O-індикатор каналу зайнятий |
TAU | стрічка зайнята | |
SIO | послідовне введення-виведення | |
K | TAU | кінець запису або мітки стрічки |
L | TAU | помилка стрічки |
N | 1301 | непрацездатність |
1311 | непрацездатність | |
1405 | непрацездатність | |
P | 1403 | принтер зайнятий |
Q | 1407 | запит |
R | 1403 | каретка зайнята |
! | 1402 | помилка перфоратора |
* | 1407 | запит |
+ or & | 1442 | остання карта |
A | 1402 | остання карта SS А |
B | 1401 | SS B |
7340 | відповідь | |
C | 1401 | SS C |
D | 1401 | SS D |
E | 1401 | SS E |
7340 | кінець на відповідь | |
F | 1401 | SS F |
G | 1401 | SS G |
H | 1402 | читач зайнятий |
I | 1402 | перфоратор зайнятий |
? | 1402 | помилка читача |
< | 1448 | попередження |
Програмне забезпечення
Програмне забезпечення IBM для 1401 налічує:
- 1401 Symbolic Programming System assembler.
- Autocoder на магнітну стрічку.
- Autocoder на диску.
- COBOL
- FARGO
- FORTRAN II (потребує память в 8000 символов).
- FORTRAN IV (потребує память в 12000 символов).
- RPG (потребує память в 4000 символов).
Цікаві факти
У жовтні 2006 року ісландський авангардний музикант Йоганн Йоганссон випустив альбом IBM 1401. Для запису альбому, Йоганн переписав його на шістдесят частин струнного оркестра. Концепція заснована на роботі, виконаної в 1964 році його батьком, Йоганном Гуннарссоном (головний інженер з експлуатації одного з перших комп'ютерів країни) та Еліас Давісон (один з перших програмістів країни).
Відео
- Презентація комп'ютера IBM 1401 французькою мовою з англійськими субтитрами YouTube April 20, 2014
Див. також
Примітки
- IBM Archives: 1401 Data Processing System. www-03.ibm.com (амер.). 23 січня 2003. Процитовано 28 квітня 2017.
- Murray, Charles J. (18 січня 1997). The Supermen: The Story of Seymour Cray and the Technical Wizards Behind the Supercomputer (English) (вид. 1 edition). Wiley. ISBN 9780471048855.
- History of PIA - Pakistan International Airlines. www.historyofpia.com. Процитовано 28 квітня 2017.
- The IBM 1401. www.columbia.edu. Процитовано 28 квітня 2017.
- rthelen (18 грудня 2008). 1401-music-Movie. Процитовано 28 квітня 2017.