В мире наступили восьмидесятые. IBM захватывал рынок профессиональных компьютеров своими PC и PC XT — родоначальниками всех современных настольных компьютеров. Джобс одну за другой выпускал новые модели Apple. Commodore 64 и ZX Spectrum гремели по миру. А в это время в советском блоке продолжали выпускаться Ascota 170 — механические компьютеры родом из начала пятидесятых. Почему-то, в рунете (да и в остальном интернете тоже) мало говорят об этих удивительных машинах, едва ли не единственных серийно (больше трёхсот тысяч с 1955 до 1983 годов) выпускавшихся Тьюринг-полных механических компьютерах. Я и сам о них узнал только тогда, когда Аскота случайно попала мне в руки.
Надеюсь, моя статья сможет изменить это.


Моя Аскота закончила считать квадратный корень из 2.

Вообще, я — коллекционер механических счётных машин. К сожалению, машины эти обычно здоровенные, а музея бесконечного размера у меня нет, поэтому брать приходится только самое интересное. Вот и когда Сергей Фролов поинтересовался, нужна ли мне Аскота, я пару минут погуглил и выяснил, что Аскотами назывались весьма скучные и примитивные машинки из ГДР, которые не стоят занимаемого ими места. Что Сергею и сказал. К счастью, Сергей ответил, что речь не просто об Аскоте, а об особо редкой модели 170. Я погуглил ещё раз, и был пленён.

Оказалось, что мне предлагают одну из сложнейших когда либо производившихся механических машин, бухгалтерский счётный автомат, программируемый с помощью «гвоздей», вбиваемых в специальную доску молотком. К сожалению, общение с продавцом на Авито показало, что Аскота некомплектная, поэтому брать её бесполезно. Потом на Авито появилась ещё одна половинка Аскоты (продавец мне больше часа пытался доказать, что она целая, а не половинка), потом вопрос завис на год… А потом мне написал первый продавец, и сказал, что нашёл недостающие части! Здесь заканчивается предыстория и начинается, собственно история.

Конечно, к этому моменту я прочитал, что Аскота-170 — вроде как программируемая машина. Но «программируемая» — понятие растяжимое, и перед покупкой я попытался что-нибудь узнать о её возможностях. К счастью, это оказалось несложно: Аскоты поставлялись в СССР массово, и про них выпускали десятки книг. Одну из них, тоненькую брошюрку про методы применения, я купил на Авито — но понял из неё, увы, немного — в основном, то, что машина постоянно работает в цикле и как-то поддерживает переходы. Не знаю, что бы я делал с этой информацией — но мне в голову пришла идея: на станции метро Библиотека имени Ленина находится Библиотека имени Ленина! Весь двадцатый век туда стекаются обязательные экземпляры выпускавшихся у нас книг, и книги про Аскоты там должны быть. Действительно, в электронном каталоге Ленинки нашлось больше трёх сотен книг с упоминанием Аскоты 170. Больше того, оказалось, что за последние десятилетия режим работы библиотеки сильно смягчился, и сегодня любой желающий может прийти и отфотографировать книги на непрофессиональный фотоаппарат.

На радостях я перефотографировал несколько десятков книг, и примерно понял из них, что Аскота может, и немедленно купил её. А сам взялся за детальное штудирование учебников.



Возможности Аскоты 170


Читать эти книги было непросто: мало того, что они описывали программирование машины, разработанной задолго до появления первого языка высокого уровня, Фортрана. Так они ещё и написаны были в бухгалтерских терминах. В общем, представьте, что вам нужно изучать учебник по 1С: Ассемблер, написанный на старославянском, и вы примерно поймёте масштаб стоявшей передо мной проблемы. Достаточно сказать, что факт наличия условного оператора я смог установить только потому, что специально его искал. А разобраться, как он работает, удалось только после изучения конструкции соответствующих узлов и ряда экспериментов.

Да! У Аскоты есть условные операторы! И команды перехода! И вообще всё, что нужно для работы полноценного компьютера общего назначения!

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

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


Один столбец стопсов. Вертикальный сверху — колонный, остальные — программные.

На практике, таких остановок «надо что-то сделать», то есть шагов программы, может быть около 50 на одну доску. За один шаг может выполняться несколько команд. Например, вот такой код занимает всего один шаг:

if (I>0) 
  {
  print(K);
  I+=K;
  II-=K;
  III-=K;
  goto program2; // После выполнения этого шага начнёт выполняться шаг программы, обозначенный как принадлежащий второй программе.
  if (K!=0) goto forward; // Если K!=0 , то следующим будет выполняться ближайший шаг второй программы, находящийся после метки forward; иначе - ближайший шаг второй программы.
  K=0;
  }

Как видите, машина активно обращается к регистрам; регистры — это ряды шестерёнок в теле машины, так что память программы (доска со стопсами) отделена от памяти данных (рядов шестерёнок регистров). Итого, у машины ~50 шагов командной памяти (~0,3 кБ) и 56 целочисленных регистров по 12 десятичных разрядов (ещё 0.3 кБ).

За один шаг машина может прочитать один регистр, распечатать его содержимое, прибавить или отнять его к нескольким другим регистрам и обнулить. Одновременно выполняется пара вариантов сравнения с нулём и несколько вариантов команд перехода.

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

1. У машины нет команд для умножения и деления.

Как ни странно, это не бага, это фича. Команда умножения есть у большинства более простых бухгалтерских машин, но разработчики Аскоты уже в начале 1950-х понимали, что дни механики сочтены, и вместо медленного и неуклюжего механического умножителя предусмотрели возможность подключения внешнего математического модуля. И действительно, упоминания внешнего механического умножителя для Аскоты встречается в старых учебниках, но ни одной его реальной фотографии (или, тем более, реального экземпляра) не сохранилось. Уже в конце 1950-х вместо него стали использоваться ламповые модули R12 (монстры размером с небольшой шкаф, весом в 200 килограммов и потреблением в полтора киловатта), с 1962 выпускались небольшие (с маленький системный блок) транзисторные умножители, а к моменту схода с конвейера моего экземпляра Аскоты стали использоваться крошечные умножители-делители на микросхемах. В общем, хорошо, что мне достался экземпляр без умножения-деления: обидно было бы получить вместо полностью механического компьютера банальный электронный калькулятор на микросхемах.

2. Машина не умеет смещать число на разряд вправо или влево.

Вообще, организовать умножение, деление и другую хитрую математику можно и программно; собственно, многие современные RISC процессоры так и делают. Могли бы так делать и Аскоты — но увы, для этого нужно сдвигать число на разряд, а такая команда не предусмотрена. Это, на самом деле, очень странно, потому что умножающий модуль, особенно в первое время, был дорогим и редким, а всё, необходимое для организации сдвига, у машины есть. Я даже хочу добавить в свою Аскоту команду сдвига — но об этом в конце статьи.

3. Количество меток перехода ограничено.

В программе могут быть метки backward1, backward2, forward1 и forward2, причём каждая — по несколько раз, шаги программы могут быть помечены как выполняемые по программе 1, по программе 2 и по обеим. Звучит неплохо, но, при программировании достаточно сложного алгоритма хватает этого в обрез.

4. Нет поддержки массивов и непрямой адресации.

У Аскоты много регистров. Только вдумайтесь: есть 50 шагов программы, за каждый шаг можно прочитать (и распечатать) только один регистр — и регистров, при этом, 56! То есть, напрямую адресовать все регистры в автоматическом режиме, без выбора номера регистра с клавиатуры, невозможно в принципе.

Обычно это проблема решается с помощью разных вариантов непрямой адресации — например, сначала вы задаёте номер регистра (ptr=&R00), а затем, в цикле, раз за разом увеличиваете его (ptr++). И, в принципе, у Аскоты для этого всё есть: пятьдесят регистров организованы в виде пяти вращающихся барабанов по десять регистров, и для инкрементной адресации достаточно было добавить команду поворота барабана на один шаг вперёд. Для обсчёта стопок многострочных документов это была бы очень востребованная функция. Но не сделали, почему-то. Единственное объяснение, которое мне пришло в голову — возможно, к началу 1950-х ещё не изобрели инкрементную адресацию. Если кто-нибудь вспомнит более ранний немецкий компьютер с инкрементной адресацией — подскажите, пожалуйста.

Живая Аскота!


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


Аскота (справа) была очень большая


И очень грязная

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

Следующий месяц прошёл в ремонте. Я завесил половину интернета объявлениями о поиске опытного наладчика, нашёл нескольких человек, которые сорок лет назад немного имели с Аскотами дело, но, увы, чинить пришлось самому. Я напечатал на 3D принтере ручку для ручного вращения управляющего вала, научился отключать залипшие счётчики, выгреб из механизма ещё несколько кусков особо злостной еловой коры, нашёл и разработал полдюжины залипших соединений, починил полдюжины отказавших пружин.


Откуда тут кора?!

Я прогуливал работу неделями, с утра до вечера рылся в руководстве по наладке, ища причину очередной неисправности, ловил на лестничной площадке спамеров, за сто рублей помогавших мне временно перевернуть машину кверху ногами… И, наконец, дошёл до момента, когда на машине удалось запустить «Hello world!».


Переключаем Аскоту в режим печатной машинки, и набираем «НЕЛЛО ШОРЛД».

Хм, нет, это слишком просто. Давайте лучше бессмертных кроликов считать.

Предположим, месяц назад у нас не было кроликов, а сегодня мы купили на рынке пару крольчат.

Через месяц они вырастают в пару взрослых кроликов.

Ещё через месяц пара даёт потомство, и мы получаем пару взрослых кроликов и пару крольчат. Итого, две пары.

Ещё через месяц пара взрослых опять даёт потомство, а крольчата прошлой пары подрастают и становятся взрослыми. Итого, три пары, две взрослых и одна дети.

Ещё через месяц две пары взрослых дают две пары потомства, а крольчата прошлого месяца вырастают. Итого, у нас пять пар, все кролики, бывшие у нас месяц назад, взрослые, а все, которые были взрослыми, дали по паре потомства.

И так далее.

Эту задачку в начале XIII века исследовал итальянский математик Фибоначчи, в честь которого получившийся ряд чисел назван рядом Фибоначчи:

0 1 1 1+1=2 1+2=3 2+3=5 3+5=8 5+8=13 8+13=21…

Давайте рассчитаем его на Аскоте. Это просто. Пусть в регистре I у нас находится нечётный член ряда (для начала, первый), в регистре II — чётный (для начала, нулевой). Тогда программа будет выглядеть так:

1: read I; II+=; prn(); //Программа №1: Читаем регистр I, прибавляем его значение к регистру II и распечатываем.

1: read II; I+=; prn(); newline; goto backward1; // Программа №1: Читаем регистр II, прибавляем его значение к регистру I и распечатываем. Затем сдвигаем бумагу на следующую строку и возвращаемся к началу программы.

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

1 0/0 12/4 14/3
1     12/3 14/4 17/4 33/4


Здесь единичка в начале означает колонный стопс типа 1, заставляющий машину остановиться для выполнения этих шагов по программе №1, 0/0 (установленный в ряд №0 стопс типа 0) заставляет машину искать колонные стопсы начиная с этой точки. Стопс в ряду 12 управляют регистром II: 12/3 вызывает чтение регистра, а 12/4 — добавление к нему прочитанного числа. Аналогично, 14/3 вызывает чтение регистра I, а 14/4 — добавление к нему прочитанного. Печать прочитанного числа происходит автоматически, если только не установлен специальный стопс 5/3, отключающий печать. 17/4 проворачивает валик каретки на один шаг, а 33/4 запускает возврат каретки (этот стопс можно не ставить, тогда каретка проскользнёт до конца, и возврат каретки запустится автоматически).

По хорошему, в обе строки надо добавить ещё 15/6R, тогда сразу после окончания шага машина начинает выполнять следующий. Но в первый раз я этого не сделал, и мне пришлось постоянно жать клавишу запуска.


Как ни странно, программа запустилась с первого раза. Я был в восторге!


Но для запуска этой программы нужно сначала записать данные в нужные регистры, а потом результаты выводятся двумя неаккуратными колонками. Давайте лучше сделаем программу, которая будет запрашивать исходные данные, а потом выводить члены ряда и их номера.
Получится вот так:

1: read I; clr; //для начала очищаем все переменные
1: read II; clr;
1: read III; clr;
1: read IV; clr;
1: read K; clr;//останавливаемся и даём пользователю ввести единицу.
1: stop; read kbd; IV+=; K+=; prn(); clr;//записываем единицу в IV (она нужна будет для инкремента) и в K (начнём с первого члена ряда). Заодно печатаем её - она будет запросом для ввода первого члена ряда.
1: stop; read kbd; I+=; prn(); clr; // записали первый член ряда в I.
1: read IV; K+=;
1: read K; prn();// печатаем запрос на ввод второго члена ряда.
1: stop; read kbd; II+=; I+=; prn(); clr; // записали второй член ряда в II. Заодно в I теперь I+II, то есть третий член ряда.
backward1: 12: read IV, K+=; // увеличиваем на единицу номер текущего члена ряда - для начала, он станет равен 3. Обратите внимание, этот шаг выполняется и по программе №1, и по программе №2.
2: read II; I+=; III+=; goto prog1; goto forward; //на первом цикле этот шаг обходим, потому что у него метка программы №2, а не №1. А на втором цикле из II читается четвёртый член, который записывается в пустой III и прибавляется к I (в I был третий, стал пятый). После этого мы снова переходим к программе №1 и прыгаем вперёд, к этапу печати.
1: read I; II+=; III+=; goto prog2; // На первом цикле в I третий член, в II - второй. В сумме, соответственно, получается четвёртый (он оказывается в II). В III записываем текущий I - третий. И переходим к программе №2.
forward1: 12: read III; prn(); clr; // печатаем текущий член ряда - для начала I+II, а там видно будет. Обнуляем III. Обратите внимание, этот и следующий шаги выполняются и по программе №1, и по программе №2.
12: read k; prn(); newline; goto backward1; // Печатаем номер шага, переводим строку, возвращаемся назад.

Я запустил программу, и машину благополучно заклинило, потому что я до этого не пользовался регистром К, а в нём был очередной кусок коры. Нде. Кусок коры убрал, счётчик отключил, машину расклинил. И заработало же!


Я решил, что машина уже окончательно работает, нужно только набить какой-нибудь красивый алгоритм, чтобы похвастаться на Хабре, и можно писать отчёт. Например, Стэнли Френкель, если верить мистеру Фейнману, учил табулятор считать арктангенс. Чем я хуже? То есть понятно, чем хуже, но вдруг?

Увы, подходящих алгоритмов я не нашёл. На Stackowerflow предложили вариант расчёта логарифма, слишком сложный для Аскоты, в Библиотеке имени Ленина нашлись нашлась пара брошюрок с несколькими интересными алгоритмами — но они тоже оказались нам с Аскотой не по зубам. В конце концов, я плюнул на тригонометрию и логарифмы, и решил считать банальный квадратный корень.

Вообще, квадратный корень считается легко. Из формулы суммы членов арифметической прогрессии получается, что сумма первых n нечётных чисел = n^2. Из чего следует

$n=\sqrt{\sum\limits_{i=0}^{n-1}(2i+1)}$


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

Первый вариант программы я написал за вечер. Но из-за количества операций, требуемых при сдвиге вверх, в 50 шагов он не укладывался. Пришлось оптимизировать, вычисляя два разных сдвига одними командами, потом исправлять ошибки, потом отлаживать программу на листе бумаги, опять исправлять ошибки, опять отлаживать… Где-то через неделю дело дошло до ассемблирования, набивки в программную доску и пробного запуска. Не заработало.
Перепроверил, нашёл несколько мелких ошибок. Исправил. Не заработало. Перечитал книжки, выяснил, что неправильно понял одну тонкость программирования. Исправил, не заработало. Перепроверил, нашёл ещё ошибку. Не заработало. Перепроверил, понял, что не исправил мелкую неисправность в машине. Исправил. Не заработало… В общем, ещё неделю я налаживал программу в железе. И отладил, наконец!

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


Что в результате и что дальше?


В результате, во-первых, у меня есть рабочая Аскота-170.

Во-вторых, надеюсь, этой статьёй я сделал её более известной в рунете. Аскоты использовались у нас, минимум, до конца 80-х годов, и их малую известность я могу объяснить только тем, что мало кто понимал, насколько они круты, а владельцы складов не понимали, насколько ценные вещи им попадались. Возможно, статья исправит эту ситуацию.

В-третьих, я создал на своём сайте раздел про Аскоту, в котором выложил руководство по программированию, некоторые советы по наладке механизма, книги, модели для 3D печати, коды программ и так далее. Надеюсь, это тоже послужит популяризации Аскоты, и поможет наладчикам, которым удастся достать её после меня.

В-четвёртых, в ходе работы я старался учитывать потраченное на Аскоту время в табличке. Так вот, получилось, что я потратил под две сотни рабочих часов не считая прокрастинации. Наверное, можно в резюме вписать, да?

С другой стороны, осталась пара нерешённых задач.

Во-первых, я так и не сделал программы для расчета чего-нибудь крутого, вроде тригонометрических функций, рациональных степеней или логарифмов. Как я уже сказал, придумать или найти подходящий алгоритм сам я не смог, но если кто-нибудь из читателей статьи предложит мне (в комментариях, в личке или на почту me[а]alple.net) какой-нибудь подходящий алгоритм (в псевдокоде вроде того, что есть для квадратного корня), я обязательно постараюсь реализовать его в железе, и снять про это видео.

Во-вторых, как я уже говорил, Аскоте очень не хватает команды сдвига на разряд. При этом, у меня такое впечатление, что её собирались сделать, но так и не сделали — никак иначе я не могу объяснить существование регистров III/IV.

про регистры
Выпускались разновидности Аскоты с разным набором регистров. Наибольшее их число, 55 (+1 в клавиатуре) как раз в моей версии. Вот их список:
Регистр клавиатуры, в котором временно хранится введённое на клавиатуре число.
Регистры I и II — универсальные, полностью независимые, управляемые автоматически и с клавиатуры, поддерживающие отрицательные числа и логические операции.
Регистр K — контрольный, для контроля безошибочности работы оператора и машины. По функциям похож на I и II, плюс имеет защиту от случайного сброса. С клавиатуры не управляется, но для контрольного регистра это скорее достоинство.
Накапливающие регистры — те самые, в барабанах по 10 штук. Не работают с отрицательными числами и меньше используются в логических операциях, имеют некоторые технические ограничения взаимного подключения, нормально управляются с клавиатуры и автоматически.
И те самые загадочные регистры III/IV — по возможностям они близки к накапливающим, но с клавиатуры управляются очень-очень плохо.
При этом, регистры III/IV имеют свой собственный механизм подключения, независимый от накапливающих регистров. Собственно, эта система осталась от одной из более примитивных моделей Аскоты, у которой кроме регистров I, II, III, IV и K ничего не было — но зачем их оставили?

Я думаю, что они предполагались именно как регистры сдвига на разряд. Потому что достаточно сцепить их рядом диагональных шестерёнок, и мы получим устройство сдвига: записываем, скажем, в III число, и получаем в IV его же, но сдвинутым на разряд влево.

Я представляю себе это как-то так:


Вот тут вы можете покрутить 3D модель.
А вот тут — посмотреть, как счётчики выглядят вживую.

На картинке — жёлтые шестерёнки — счётчики III и IV (например к красным подключены первый разряд III-1 и второй разряд IV-2). Полупрозрачный клин — детали устройства счётчика.

Красные шестерёнки — та самая отсутствующая система сдвига, поворачивающая шестерёнку III-1 при повороте IV-2, и наоборот. Если собрать такую систему, то для сдвига на разряд влево достаточно будет записать нужное число в IV и прочитать его из III.

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

Было бы здорово, если бы кто-нибудь, умеющий проектировать лучше меня, за разумные средства взялся бы придумать мне такую систему для печати на принтере, или изготовил бы её в железе — с уточнениями и предложениями, опять же, пишите в комментарии, в личку или на почту me[а]alple.net.



Больше подробностей вы можете найти у меня на сайте, в разделе про Аскоту.

Комментарии (74)


  1. WinPooh73
    17.05.2019 15:12
    +4

    Процесс удаления коры из вычислительного механизма должен называться debarking.


    1. DmitrySpb79
      18.05.2019 10:09

      Про кору странно. Но неужели в такой большой машине ни одного настоящего бага не нашлось? Таракана, например :)


      1. sfrolov
        18.05.2019 10:11

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


        1. MTyrz
          18.05.2019 14:26

          Да ладно, в такие укромные, хорошо защищенные полости много кто любит забираться. Те же тараканы, уховертки; не из насекомых, но все равно из членистоногих пауки и мокрицы. Неужели паутины в такой технике не встречали ни разу?


          1. sim2q
            20.05.2019 03:07

            Для тараканов девайс должен нагреваться


            1. MTyrz
              20.05.2019 04:38

              Желательно, но… Если перед линькой ничего более подходящего не найдут, заберутся и туда, как миленькие.


      1. WinPooh73
        18.05.2019 10:12

        Заодно заиграл новыми красками смысл выражения упасть в кору.


      1. APLe Автор
        18.05.2019 11:16

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


  1. saipr
    17.05.2019 15:38
    +2

    Супер!


  1. dlinyj
    17.05.2019 16:42

    Просто восторг! Это безумная увлечённость, так мне нравится!!!


  1. ru_vlad
    17.05.2019 16:44

    Снимаю шляпу!!!
    Упорство и трудолюбие в данном увлечении выше всяких похвал.
    Если не тайна, как домашние к этому относятся? ;)


    1. APLe Автор
      17.05.2019 17:42
      +12

      Спасибо!
      Ну… в конце концов они решили, что, если бы я сидел на героине, быо бы хуже, :–).


      1. ru_vlad
        17.05.2019 17:54
        +3

        Тогда. низкий поклон и им :)


  1. Ermak
    17.05.2019 16:54
    +2

    Знакомая машина, мама на ней работала, а потом появился Robotron 1715, тогда и я подключился :)


  1. BubaVV
    17.05.2019 16:55
    +1

    Сайт автора вызвал ностальгию


    1. igruh
      17.05.2019 17:22
      -1

      Странно, у меня чуть гик-оргазм не случился.


  1. Iwanowsky
    17.05.2019 16:57
    +1

    А почему Сергей Фролов не приобрел Аскоту себе в коллекцию? В его Коллекции-музее
    отечественной цифровой электроники
    тоже ведь есть механические и электромеханические калькуляторы.


    1. APLe Автор
      17.05.2019 17:43
      +1

      Потому что она немецкая. А Сергей то, что выпущено за границей СССР, собирает крайне между делом.


      1. sfrolov
        17.05.2019 18:16
        +3

        Да. Всё охватить очень сложно.


  1. mwambanatanga
    17.05.2019 17:10

    Роботроны уже упомянули. В приснопамятные времена мои родители работали на Машино-Счетной Станции и страшные слова "аскота" и "роботрон" я слышал часто.


  1. Feihoa
    17.05.2019 17:41
    +1

    Вот оно, настоящее программирование!


  1. Peter03
    17.05.2019 17:41
    +1

    Напишите эмулятор — так и отлаживать должно быть полегче.


    1. APLe Автор
      17.05.2019 17:45
      +2

      Ага, была у меня такая мысль. В результате решил, что с моими навыками программирования на бумажке отлаживать быстрее.


      1. tormozedison
        18.05.2019 10:25

        Если достаточно подробно описать систему команд, распределение адресного пространство и устройства ввода-вывода, написать эмулятор сможет любой желающий.


        1. APLe Автор
          18.05.2019 11:20

          У меня на сайте, в разделе про программирование есть описание. Правда, без некоторых бухгалтерских тонкостей, но для программирования алгоритмов достаточно.


  1. vtc
    17.05.2019 17:48

    Это чуде использовали еще в 90-ых…
    Основное назначение — аппаратный ексель…


    1. APLe Автор
      17.05.2019 17:49

      На Ютубе есть видео, на котором ей пользуются в 2006. Уж не знаю, постановочное или нет.


      1. vtc
        17.05.2019 18:31
        +1

        Ну то на ютубе, а это я видел в своей реальной жизни…


  1. Geckelberryfinn
    17.05.2019 18:02
    +1

    А как эта машина использовалась в бухгалтерском счете? Если я правильно понимаю, чтоб подбить дебет с кредитом необходимо вводить массив информации, да еще его аггрегировать по счетам, контрагентам и так далее… Каким образом это можно было сделать? Или же это замена калькулятору?


    1. tormozedison
      18.05.2019 08:48

      Перфосчитыватель же, см. здесь.


    1. APLe Автор
      18.05.2019 11:29

      Замена программируемому калькулятору. Массив вводится вручную (в теории, перфосчитыватели были, но на практике встречались редко), машина его раскладывает по полочкам по программе и печатает результаты. Типа 'в первой графе была зарплата, во второй премия, в третьей и четвёртой штрафы. Считаем 1+2-3-4, если больше нуля, печатаем в пятой графе 'выдать' и добавляем в регистр суммы выдачи, который распечатаем в конце таблицы. Если меньше нуля, печатаем в шестой графе 'удержание со следующего месяца', и тоже добавляем в регистр для конца таблицы.
      Ещё можно каждому работнику id присвоить. Если сумма id таблицы не совпадает с контрольной, значит, мы забыли вбить какого-то работника, и надо вывести сообщение об ошибке.


    1. DenisBlack
      18.05.2019 14:00

      Я помню, такие машины стояли в отделениях Сберкассы, еще в 80-х.
      На печать одновременно вставлялись сберкнижка, карточка клиента и лист дневного отчета оператора. Оператор заносил данные транзакции и запускал программу печати сразу на все документы. А в конце дня — печать итога по работе оператора.


  1. SandroSmith
    17.05.2019 18:03

    3D-моделька сдохла :(


    1. old_gamer
      17.05.2019 18:08
      +2

      На ней же шильдик Роботрон


    1. APLe Автор
      17.05.2019 18:12
      +1

      Упс. Ссылку починить не могу, до ПК только через неделю доберусь. Надеюсь, на картинке всё понятно.

      Из советского блока, ГДР. Прошу прощения, я забыл, что за пределами ретрокомпьютерного сообщества не все знают, что такое 'Роботрон'. Сейчас добавлю в статью.


  1. fdroid
    17.05.2019 20:22
    +2

    Стимпанк, ты ли это?)
    Автор, вы большой молодец, очень интересно было почитать про такую чудесную машинку.


    1. tormozedison
      18.05.2019 08:37

      Можно и на «стим» перевести, сбудется мечта Бэббиджа.


  1. ledinhome
    17.05.2019 23:27
    +1

    +1 за гик-оргазм (или мех-оргазм)
    Вот здесь очень хороший пример мех-видео youtu.be/2CE_zmpHcWQ
    Очень-очень не хватает похожего об этой машине, или даже о её частях.


    1. APLe Автор
      18.05.2019 11:41

      Ох, пожалейте меня! Даже о простейшей переворачивалке кассеты такое видео снять сложнее, чем статью написать, а про Аскоту оно на сутки выйдет – и на год работы.


      1. ledinhome
        18.05.2019 12:24

        Выпустить полноценный фильм и показывать в кинотеатрах :)))
        (Для некоторых категорий на ночных сеансах)


  1. BalinTomsk
    17.05.2019 23:31

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


  1. tronix286
    18.05.2019 07:17
    +3

    АдЪ, конечно. Это вам не проводочки в андруино тыкать… Немного жаль конечно, что оно электрическое. Было бы еще более брутально, если бы у нее был бы педальный привод, типа как в швейных машинках Зингер. Но и так тоже конечно ничего себе механика.


    1. tormozedison
      18.05.2019 08:35

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


      1. sfrolov
        18.05.2019 08:59
        +2

        Или ослик меланхолично ходит по кругу, крутя вал. А в цеху работает десяток машин с ременным приводом.


        1. Uint32
          18.05.2019 11:25

          А в цеху работает десяток машин с ременным приводом.

          Кластер


          1. dimitry78
            18.05.2019 15:08
            +1

            Тогда уж десяток бухгалтеров с ременным ПООЩРЕНИЕМ

            Про статью — круто!


          1. dimitry78
            19.05.2019 00:10
            -1

            есть идея, почему древние таблички не расшифрованы — там тупо опечатки, ну захандрил писец, уехал на тракторе поперек поле пахать, скучно человеку, а бригадир офигевает и пишет: бу бу бу, слонопотам приснился, есть же вариант, про неправильную запись? а потом придумали клинопись — да чувак стилус расписывал, и не себе,

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


          1. Mirn
            21.05.2019 08:26

            такой рабочий кластер ткацких станков есть в ткацком музее Тойоты что в городе Нагоя.
            У них есть программа в виде перфоленты, и обрабатываются ошибки типа нитку зажевало, нитка порвалась.
            Причём экзепшены выбрасываются в виде физического флажка там же где сейчас у станков выставленных в ряд стоит три лампочки: зелёный жёлтый красный (вдоль прохода сверху над станками).
            Вот вместо лампочек флажки.
            Причём при экзепшене станки все останавливались (весь ряд конвеера), а челнок указывал на место сбоя — Механический указатель.
            Естественно всё это работает и прямо при посетителях это показывается.
            Все надписи на японском и с их дизайном механики 19ого века который отличается от викторианского заметно сильно — выглядит очень необычно, не по стим-панковому.
            Так что в японском автопроме потрясающий уровень автоматизации производства родом из середины 19ого века.
            Посетить в том же городе жд музей JR тоже рекомендую — их скоростные жд тоже с 17 века ведут очень интересную историю. (но к хабру история организации и оптимизации логистических перевалочных пунктов не имеет никакого отношения, там была чисто политика и вопрос финансов).
            Посещать с осторожностью: возможна остановка сердце во время гик-оргазма.


            1. mwambanatanga
              21.05.2019 10:00
              +1

              в ткацком музее Тойоты что в городе Нагоя
              ??????????????????????????????????????


      1. red_andr
        18.05.2019 19:05
        +2

        Тем не менее, арифмометры работали на ручном приводе. Причём были и такие, что и на электрическом, и на ручном. Последний, конечно, только если электричества не было. Вот такие кассы, к примеру, стояли в каждом советском магазине:
        image
        Видите отверстие справа? Туда вставлялась ручка для вращения механизма.


        1. sfrolov
          18.05.2019 19:13

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


        1. tormozedison
          18.05.2019 22:58

          Это ручной привод, а не ножной.


  1. tormozedison
    18.05.2019 08:33
    +1

    Пишущая и счётная машина одновременно — это гениально. Разработчику «Слова и дела» А. Гутникову определённо довелось на ней поработать.

    Вот бы где посмотреть на ламповый блок умножения. И перфосчитыватель, такой как здесь на втором фото. Что он может? Программу с перфоленты не ввести, она по-другому задаётся. Значит, данные.


    1. APLe Автор
      18.05.2019 11:46

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


      1. tormozedison
        18.05.2019 23:10

        Спасибо за уточнение, по ссылке нашёл в середине фразу о «перфораторе 470 и перфосчитывателе 472».

        А вот ещё ссылка, а там и «механический перемножитель MM», и «перемножитель R12» (ламповый), подключаемый сразу к двум машинам, и «перемножитель TM20» (транзисторный), и «перемножитель-делитель MD24» (на микросхемах), и ещё разные принадлежности.


    1. APLe Автор
      18.05.2019 17:09

      И да, перфоратор и ламповый умножитель есть в политехническом музее. До ремонта стояли на последнем этаже, вместе с Аскотами.


    1. Zenitchik
      20.05.2019 01:08

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


  1. Javian
    18.05.2019 09:01
    +2

    Каков звук! Может продавать его на iTunes? :)
    На подобие habr.com/ru/news/t/405929
    Выпустить пару треков, потом сольный алгоритмический альбом. Наконец симфонический оркестр с дисководами и принтерами. :D


  1. DmitrySpb79
    18.05.2019 09:59
    +2

    Спасибо, интересно. Даже не знал что такое было. Такие машины бы в техническом музее школьникам показывать, причем не как пыльный экземпляр за стеклом, а в работающем виде (вот почему интересно, в музеях Англии или Германии такое могут а в России нет?).

    Пара мыслей вслух:
    — Все же напишите симулятор — потратите ну максимум неделю, зато потом процесс отладки ускорится в разы. Судя по всему логика в машине простая, уж если с сотней шестеренок и пружин разобрались, пару страниц кода на Питоне напишете без проблем.
    — Менять конструкцию, добавлять регистры наверно не надо — такие машины хороши именно как раритет в первозданном виде
    — Раз машина немецкая, не пробовали на немецком искать? Возможно кто-то из exDDR тоже озадачивался алгоритмами или чем-то подобным.


    1. APLe Автор
      18.05.2019 11:55

      Да, музеи у нас, конечно, печальные, это не только к технике относится – в биологии то же самое, например.
      Ну, может и напишу, и ассемблер заодно – у меня как раз было в планах Питон освоить. Но отладка не то чтобы сильно облегчится – основные проблемы у меня были из-за ошибок вбивания стопсов в доску и непонимания логики работы машины.

      Я хочу себе не раритет, а крутой компьютер!!!111. Но не волнуйтесь, речь, в основном, не об изменении конструкции, а о добавлении нового модуля. Его можно будет снять, и мало кто сможет понять, что что-то когда-то было не так.

      Немцы эту машину восстанавливали, но интересных алгоритмов, вроде, не придумывали. Но искал мало, так как немецкий не знаю.


  1. beduin747
    18.05.2019 10:20
    +2

    Прочитав статью и посмотрев видео про этот компутер понял насколько же круты были тогдашние эникейщики!


  1. DrGluck07
    18.05.2019 13:57

    О маааай, это же «Human Resource Machine» и «7 Billion Humans» в реальном железе! Да ещё и чистая механика.


  1. Jamato
    18.05.2019 13:58

    Так, я на вас подписался и буду ждать статью про умножение. Это железный хардкор.


  1. Azya
    18.05.2019 13:59

    Спасибо за статью, очень интересно! Отсутствие сдвига, конечно, многое усложняет, сам недавно страдал когда игрался с TMS1000.
    Здорово было бы еще увидеть побольше фотографий внутренностей, хотя бы с минимальным описанием, не планируете написать такую статью?


    1. Javian
      18.05.2019 14:24
      +1

      У немцев есть фото внутренних деталей.


    1. APLe Автор
      18.05.2019 17:12
      +1

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


  1. Tyusha
    18.05.2019 14:24

    На одной из фотографий несчастная удручённая женщина в этой квартире с вытяжкой и огнетушителем. Никакой надежды, а тут ещё новая соперница по имени Аскона.


  1. steanlab
    18.05.2019 14:41

    прочитал статью как сказку, прям пережил погружение в другой мир (стимпанк?).
    спасибо Автор.


  1. stalinets
    18.05.2019 14:57

    Может, кто-то когда-то сделает работающую 3D-модель в хорошем физическом движке, с точно отрисованной каждой железочкой и пружинкой.


  1. red_andr
    18.05.2019 19:07

    … машины, разработанной задолго до появления первого языка высокого уровня, Фортрана.

    Ну, не так уж и задолго. Напомню, что Фортран появился в конце 50-х.


    1. APLe Автор
      18.05.2019 20:04

      Ну да, почти десять лет разницы.


  1. alexhott
    19.05.2019 12:11

    Это даже круче телеграфа с его овер 1000 деталей
    назначение конечно абсолютно другое, но тоже механика
    Интересно сколько сейчас будет стоить создание подобного агрегата, делать подобное уже разучились совсем.
    В живую видел только работающую наборную типографскую машину, которая по нажатию клавиш делала отливку с буквами.


    1. ipswitch
      19.05.2019 20:46
      +1

      Линотип! Этаоин Шрдлу!


  1. jar_ohty
    20.05.2019 00:29

    Это ж механический Итаниум!
    Не, серьезно, это ж VLIW, как он есть.