vak: (Default)
В наши края прилетел Костя Пылаев и привёз в качестве сувенира блок У от БЭСМ-6:



Пытаюсь изобрести способ оживить этот блок. Он требует семь номиналов питания: +40В, +5В, -0.3В, -1.6В, -3.5В, -9В, -60В. Это не считая переменных 6В на вход подвешенного источника питания (ПИП). Простейшая идея, которая приходит в голову: взять несколько простых регулируемых модулей DC-DC и запитать их от пары стандартных ноутбучных блоков питания 20В.

Первый блок питания обеспечивает напряжения +40В, +5В, -0.3В, -1.6В, -3.5В, -9В. Принимаем -9В за условный ноль и настраиваем модули DC-DC на напряжения:
+49В (step up)
+14 В (step down)
+9 В (step down)
+8.7 В (step down)
+7.4 В (step down)
+5.5 В (step down)

Второй блок питания даёт -60В, посредством модуля step up, настроенного на -51V (условный ноль у нас -9В).

В сумме понадобятся пять модулей step down (5 x $3.74) и два модуля step up (2 x $5.24), а также два блока питания от ноутбука (2 x $8.99).
vak: (Default)
Сергей Романенко отсканировал и выложил ценнейшую книжку по языку программирования Рефал. Скачать можно здесь: PDF, DJVU.



Современные реализации Рефала можно отыскать на Гитхабе, к примеру: https://github.com/cmc-msu-ai/refal
vak: (Default)
Вчера произошло знаменательное событие: заработал восстановленный Паскаль-компилятор для БЭСМ-6. Вот сообщение от Леонида Брухиса [personal profile] spamsink в списке рассылки:

"Дорогие товарищи! Многоуважаемые гости!

Сегодня, ровно через 35 с половиной лет после даты имеющейся версии
(и, что знаменательно, в День археолога), достигнуто оживление Паскаль-компилятора
на уровне исходного текста:

РАSСАL СОМРILЕR 15.0 (15.02.82)
8435 LINЕS SТRUСТURЕ 1 305 0 0 11 10349 0 576 185 86
*САLL *РАSСОМ
РАSСАL ВАСК ТО LIFЕ (15.08.2017)
00001 1 0 РRОGRАМ МАIN(ОUТРUТ);
00007 2 2 ВЕGIN
00010 3 2 WRIТЕLN(’ С ДНЕМ АРХЕОЛОГА!’)
00025 4 0 ЕND.
*NО LО
*ЕХЕСUТЕ
С ДНЕМ АРХЕОЛОГА!
КОНЕЦ ЗАДАЧИ
Leo"

Несколько лет назад Лёня высказал "сумасшедшую" идею попробовать воспроизвести исходный текст компилятора, исходя из сохранившегося объектного файла. Сначала детранслируем бинарник в ассемблерный текст, и дальше полуручным методом восстанавливаем элементы языковых конструкций. Процесс небыстрый и крайне трудоёмкий, но вчера он завершился успехом: полученный паскалевский код был откомпилирован (старой версией компилятора от 15.02.82), и полученный компилятор версии 15.08.2017 смог странслировать и выполнить простую программу.

Подробные комментарии от Лёни:

"Технология следующая:

1. Детранслируем объектный модуль почти как это делал DTRAN, но превращая все обращения по регистру 8 в представления литеральных констант (с некоторыми догадками, где числа, а где текст) и рассылки данных - в присваивания.

2. С помощью скрипта на Перле итеративно улучшаем полученный код:
- превращаем обращения по регистру 1 в имена глобальных переменных и переводим их в мнемонические по списку
- переводим метки в мнемонические по списку
- находим границы процедур, их уровень вложенности, количество их параметров и локальных переменных по образцу вызова библиотечной функции сохранения фрейма,
восстанавливаем последовательность заголовков.
- превращаем обращения к памяти, индексированные по регистрам 1-6, в имена локальных переменных и псевдопеременных для результата функции.
- превращаем последовательности команд вида "сравнение/переход" в псевдокоманды выработки условного результата и перехода
(условно, НТЖ+ПО = "равно", ВЧ+ПЕ = "меньше", и т.п.).
- превращаем косвенную адресацию в индексный вид (например, МОД А+СЧ Б = СЧ Б[А])
- превращаем последовательности команд "стековой машины", работающих с сумматором, (т.е. начиная со СЧ и пока виртуальный стек не опустошится командами записи, перехода или вызова процедуры) в инфиксную форму; операции, использующие вызов служебных процедур (например, целочисленное деление или работа с битовыми множествами) тоже распознаются.
- еще много всяких мелочей в процессе, например деоптимизация "УИА куда(13)+ПБ проц" в "ПВ проц(13)+ПБ куда", и пр.
- распознаем границы операторов case

Выражения восстанавливаются практически полностью; например, в результате выполнения скрипта было [minel(l4var5z-intZero)+1..47];

В результате получается последовательность процедур, состоящая из линейных участков, состоящих из операторов присваивания и вызовов процедур, перемежаемая адресными метками и конструкциями вида
if (выражение) goto адрес

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

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

Еще пригодны для декомпиляции программа PASHELP (она тривиальна, но полезна для понимания работы с объектными модулями) и программа PASDD1 - интерактивный отладчик."

Есть ощущение, что бэсмовский Паскаль-компилятор некоторым образом происходит от версии 1974 года для CDC-6000. Сравните:





Исходные тексты восстановленного Паскаль-компилятора можно посмотреть здесь: https://github.com/besm6/pascal-re/blob/master/pascompl.b6

Описание языка Паскаль-Монитор для БЭСМ-6: https://github.com/besm6/besm6.github.io/blob/master/wiki/pascal-monitor.txt
vak: (Default)
Наконец-то нашёл время обработать и выложить отсканированные схемы ЭВМ микро-БЭСМ. Огромное спасибо Татьяне Сапожниковой за присланные материалы.
  • Лист №1, формат A1: A, B, C, D, E, F, G, H
  • Лист №2, формат A1: A, B
  • Лист №3, формат A1: A, B
  • Лист №4, формат A1: A, B
  • Лист №5, формат A1: A, B
  • Лист №6, формат A1: A
  • Лист №7, формат A1: A
  • Лист №8, формат A0: A, B, C, D, E, F
  • Лист №9, рулон формата 3*A0: A, B, C
Весь проект можно скачать целиком по ссылке: micro-besm/archive/master.zip (106 Мбайт).
vak: (Default)
Мише Попову [personal profile] mrupor удалось запустить операционную систему "Дубна" на симуляторе БЭСМ-6. Протокол смотрите ниже.

Мне раньше никогда не приходилось видеть ОС Дубна вживую. На физтехе у нас стоял Диапак, в остальных конторах обычно Диспак. Зато теперь можно доставать из загашника книжку Мазного и изучать "новую старую" система. Самое главное - все исходные тексты ОС Дубна сохранились, так что её можно пытаться пересобирать с нуля.
МУЛЬТИТАЙП  (ВЕРСИЯ ОТ 15/12/87)   ЭВМ-0
РАSS:*****
БУФЕР:*/*
КАК
00.03- Т 0002 24.00- INТRSР
00.09- Т 0004 24.00- МАСRОS

ПУС INТRSР
ЖДИТЕ ОТВЕТА
ПАКЕТ В ФАЙЛЕ ВВОДА: 06
СЛУ INТRSР
СЧЕТ
КАК
00.03- Т 0002 24.00- INТRSР
00.09- Т 0004 24.00- МАСRОS
00.28- Т 0006 24.00- INТRSР

БУФЕР:
РЕЗ 3
00
00.28
ОИЯИ. БЭСМ-6/0 ШИФР-20
МОНИТОРНАЯ СИСТЕМА 'Д У Б Н А' - 20/10/88
ЖЖЖ Ж Ж ЖЖЖЖЖ ЖЖЖЖ ЖЖЖ ЖЖЖЖ
Ж ЖЖ Ж Ж Ж Ж Ж Ж Ж
Ж Ж Ж Ж Ж Ж Ж ЖЖЖ Ж Ж
Ж Ж ЖЖ Ж ЖЖЖЖ Ж Ж Ж
Ж Ж Ж Ж Ж Ж Ж ЖЖЖЖ
Ж Ж Ж Ж Ж Ж Ж Ж Ж
ЖЖЖ Ж Ж Ж Ж Ж ЖЖЖ Ж
*NАМЕ INТRSР
*ТIМЕ:24.00
<ЭКСПРЕСС-ЗАДАЧА>
*NО LОАD
00
00.28
Ф О Р Т Р А Н
/16.07.73/
РRОGRАММА
DIМЕNSIОN М1(9),М2(9),М3(9),М4(9),М5(9)
DАТА М1/54НРRОGRАММА = /
DАТА М2/54НDIМЕNSIОN М1(9),М2(9),М3(9),М4(9),М5(9) = /
DАТА М3/54НРRINТ М4,М1,М2,1,М1,2,М2,3,М3,4,М4,5,М5,М3,М5 = /
DАТА М4/54Н(2(6Х,9А6/)5(6Х,6НDАТА М,I1,4Н/54Н,9А6,1Н//)(6Х,9А6)) = /
DАТА М5/54НЕND = /
РRINТ М4,М1,М2,1,М1,2,М2,3,М3,4,М4,5,М5,М3,М5
ЕND
ТАБЛИЦА ОТНОСИТЕЛЬНЫХ АДРЕСОВ
1 2 3 4 5 6 7 8 9 10 11 12 = 13 14 15 16 17 18 19 20
000 :00001
*ЕХЕСUТЕ
РRОGRАММА
DIМЕNSIОN М1(9),М2(9),М3(9),М4(9),М5(9)
DАТА М1/54НРRОGRАММА /
DАТА М2/54НDIМЕNSIОN М1(9),М2(9),М3(9),М4(9),М5(9) /
DАТА М3/54НРRINТ М4,М1,М2,1,М1,2,М2,3,М3,4,М4,5,М5,М3,М5 /
DАТА М4/54Н(2(6Х,9А6/)5(6Х,6НDАТА М,I1,4Н/54Н,9А6,1Н//)(6Х,9А6)) /
DАТА М5/54НЕND /
РRINТ М4,М1,М2,1,М1,2,М2,3,М3,4,М4,5,М5,М3,М5
ЕND
@ @
АДРЕС РАУ *И15* *И14* *И13* *И12* *И11* *И10* *И9** *И8**
00430 006 53401 00000 00427 03071 02441 01001 00000 02746
*И7** *И6** *И5** *И4** *И3** *И2** *И1**
01142 37015 20324 20232 00000 20220 00011
СВ=00.00.00 КВ=00.00.17 АВ=00.28.23
ДАТА=00/00/00 ЭВМ-0
КОНЕЦ ЗАДАЧИ ТЕРМ. Ш-20 ВЫ/ВВ=0000 ОТДЕЛ=041 - ПОПОВ М.Ю.
*****************ОС ДУБНА 1.04 ОТ 22,03,17 ,1ЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩЩ
**************************************************************
.
vak: (Default)
Приобрёл я на днях древнюю книжечку, описывающую компьютер CDC 1604.



И книжка, и сам компьютер уникальны во многих отношениях. Утверждается, что сия книжка - первый в истории учебник программирования (1964 год). Машина 1604 - первая разработка молодой фирмы CDC (1960 год), и один из первых транзисторных компьютеров вообще. Руководил работой тогда еще молодой и не очень известный инженер Сеймур Крей. Для Крея это был второй проект, после ERA 1103.

Выглядела машина CDC 1604 вполне внушительно:



+2 )

В книжке обнаружилась разрезанная на три части перфокарта, в качестве закладки. Лёня [livejournal.com profile] spamsink провёл расследование и выяснил, что такие карты применялись в то время для автоматизации приёма экзаменов и зачётов. Подробности читайте на StackExchange.




В 1968 году Советский Союз приобрёл машину CDC 1604, к тому времени уже снятую с производства. Компьютер был установлен в Дубне, в Объединённом институте ядерных исследований, рядом с новенькой БЭСМ-6. В поставке с машиной шёл компилятор с Фортрана, причём с исходными текстами. Команда программистов ОИЯИ под руководством Николая Николаевича Говоруна воодушевилась этими текстами и поставила задачу написать такой же компилятор для БЭСМ-6. Заодно пришлось сделать ассемблер, загрузчик, поддержку библиотек, да и всю остальную операционную систему, которая получила логичное название "Дубна". История красочно изложена в статье "Говорун и его команда".

Я собственно и добыл книжку, чтобы разобраться, насколько CDC 1604 повлияла на мониторную систему Дубна. Как выяснилось, не очень. Никаких общих черт между входными языками CDC и мониторной системы Дубна я не обнаружил.
vak: (Default)
Копаясь в исходных текстах операционной системы "Дубна" для БЭСМ-6, я набрёл на любопытную ссылку в комментариях:
          MACRO50:,NAME,
COCTABЛEHA A.И.CAЛTЫKOBЫM (OИЯИ)
C YЧACTИEM Л.Г.KAMИHCKOГO (ИФBЭ)
C BEPCИЯ 15.01.1975
C  KOЭФФИЦИEHTЫ ПOЛИHOMOB BЗЯTЫ
C  KHИГИ 'COMPUTER APPROXIMATIONS'
C  (ABTOPЫ J.F.HART И ДP., ИЗД-BO
C  JOHN WILEY AND SONS,NEW YORK,1968)
Это начало фрагмента, реализующего элементарные функции sqrt(), sin(), cos(), atan(), asin(), log(), exp(). Эта книжка, точнее её репринт 1978 года, до сих пор присутствует на Амазоне, причём по цене аж $96, что для издания 40-летней давности несколько удивительно. Я пошёл и взял книжку в библиотеке. Позже обнаружил её в сети в формате DJVU.

vak: (Default)
Период от конца 1960-х до середины 1970-х.

Настройка БЭСМ-6, Емелин и Анатолий Гусев (остальные не опознаются):



БЭСМ-4 и CDC-1604 (была прототипом для Фортрана-Дубна):



+16 )
vak: (Default)
Спасибо Мише Попову: коллекция документации БЭСМ-6 пополнилась изрядным количеством препринтов из дубненского ОИЯИ.

196819751976197719781979198019841986
vak: (Default)
Вытащил из ЖЖ и переложил в гуглоальбом фотки последней живой ЭВМ БЭСМ-6: https://goo.gl/photos/dVH6g97cpeHF3pwQ6

Краткое описание "жизненного пути" БЭСМ-6/7 зав. номер 345 от Юрия Александровича Морозова:
  1. 1980 г. - изготовлена на заводе "Счетно-аналитических машин" (г. Москва);
  2. 1981 г. - поставлена в в/ч 87286 (г. Сосновый Бор Ленинградской обл.);
  3. 1982 г. - налажена бригадой московского специализированного шеф-монтажного управления;
  4. 1983 г. - введена в качестве центрального вычислительного комплекса в состав вычислительной системы комплексного полномасштабного тренажера "Диана-Барс", разработанного специалистами Научно-исследовательского технологического института (НИТИ) им. А.П. Александрова при участии представителей в/ч 87286;
  5. 1986-2008 г.г. - непрерывное функционирование ЭВМ БЭСМ-6/7 в процессе обучения экипажей атомных подводных лодок с одновременной её доработкой специалистами НИТИ (Ю.А. Морозов, В.И. Иконников, В.В. Маличев), постоянно поддерживавших её функционирование, с целью повышения надежности, сокращения средств и трудозатрат на эксплуатацию, обеспечения работоспособности за пределами установленного срока службы (1998 г.) тренажера.

vak: (Улыбка)
Народ, не найдётся ли у кого этого препринта?

Голубев, Александр Сергеевич.
Генерация мониторной системы "Дубна" для ОС ДИСПАК. - Москва: 1977. - 28 с.
(Институт прикладной математики АН СССР. Препринт; № 69 за 1977 г.)

Дело в том, что обнаружился аутентичный образ диска с МС "Дубна", и можно было бы попытаться её установить ("сгенерить") по инструкции. В то время редкий сисадмин владел сей магией. :)
vak: (Улыбка)
Сижу в центре кремниевой долины и программирую на фортране для БЭСМ-6. На дворе 2016 год, а вот поди ж ты, возникла настоятельная потребность. Нужно извлечь с диска некий бинарный образ и преобразовать в текстовый HEX файл. Надо сказать, Фортран-ГДР отличный инструмент для подобных задач. Мониторная система Дубна, симулятор ОС Диспак, книжки Мазного и Салтыкова-Макаренко под рукой. Решение выглядит так: hexdump.b6

История вопроса следующая. Есть процессор микро-БЭСМ, и для него есть тест системы команд. Тест написан на языке ассемблера, а сам ассемблер имеется в исходных текстах для БЭСМ-6. К ассебмлеру также прилагается линкер. Всё это запускается под мониторной системой "Дубна" на симуляторе ОС Диспак. На самом деле написана эта кросс-система была под ОС Дубна, и пользуется некоторыми её особенностями, поэтому пришлось на скорую руку привинтить несколько дубненских экстракодов к симулятору Диспака. Но это всё мелочи. В конце концов ассемблер с линкером заработали и на диске получился двоичный образ теста, размером около 24 килобайт. Как его извлечь оттуда? Тем более, что хранится он под управлением некой "библиотеки виртуальной памяти", и формат хранения не описан. Но есть API, набор фортрановских вызовов. Не вопрос: пишем програмулину и получаем нужный результат. Теперь можно смело запускать тест на симуляторе Verilog.
vak: (Улыбка)
BESM-6 supercomputer, 1968-1987

Collection:  SCM - Computing & Data Processing
Object Name:  mainframe
Maker:  Moscow Calculating Analytical Machines Plant
Place Made:  Russia
Date Made:  1968-1987
Materials:  metal (unknown); glass; plastic (unidentified); copper (metal)
Measurements:  overall (estimate): 1890 mm x 5040 mm x 1180 mm, 382 kg
E2012.409.2_(0001).jpg

Description:  BESM-6 Supercomputer: Registers Cabinet type BRUS with two glass doors, control panel and desk; Control Unit type UU with two glass doors, control panel and desk; Arithmetic Unit type AU with two glass doors, control panel and desk; Peripheral Control Cabinet, type UVU with two glass doors, control panel and desk; possibly manufactured by Moscow Calculating Analytical Plant Machines, Russia, 1968-1987

Object Number:  2014-10/1

Credit Line:  Purchased from Real Time Associates






+7 )
vak: (Улыбка)
Намедни [livejournal.com profile] spamsink сумел хитромудрым способом обработать изображение тестовой распечатки от АЦПУ-128, и получить довольно качественные картинки отдельных букв.

Поигравшись с утилитой potrace, мне удалось преобразовать буковки в векторный формат SVG:


Крупнее... )
vak: (Улыбка)
http://www.computer-museum.ru/books/autocode_besm_6.pdf

"Транслятор с Автокода назвали БЕМШ — по первым буквам фамилий авторов: Бочковой З.Ф., Езеровой Г.Н., Михелева В.М., Штаркмана В.С.

Автокод является языком символического кодирования, в некотором смысле средством «ручного» программирования в символах. Он рассчитан на специалистов, хорошо знакомых со структурой и системой команд машины. В автокоде введены мнемонические обозначения команд, символическая адресация объектов программы. Предусмотрены различные способы задания данных и констант, распределения памяти. Поддерживается перемещаемость оттранслированных программ, запись их в архив автокодных программ (АРАП), возможность связи на уровне меток нескольких независимо транслированных кусков в одну программу с помощью редактора внешних связей (РВС) и загрузчика (автор обеих программ Л.Б. Морозова). Готовая программа по указанию программиста может быть сохранена, выполнена, записана на внешние носители.

Пока отлаживался БЕМШ, некоторые нетерпеливые математики начали писать программы в кодах машины. Главный инженер В.А Сильвинский повесил в машинном зале плакат: «ПРИВЕТ ПЕРВОМУ МАТЕМАТИКУ!». Таким математиком оказался Радий Петрович Федоренко, который стремился испытать новую машину на своих задачах как можно скорее.

БЕМШ довольно быстро заработал и был подключен к Д-68. Впоследствии он входил в состав математического обеспечения ОС ИПМ, ОС ДИСПАК, Мониторной системы ДУБНА, работавших на БЭСМ-6.

БЕМШ был популярен в Институте, им пользовались многие сотрудники. В частности, программисты, создававшие ОС ИПМ, активно пользовались БЕМШем.

Несколько раз в язык и транслятор добавлялись новые возможности. Но автокод оставался машинно-ориентированным языком нижнего уровня, обеспечивающим перевод «один в один» предложения в символах в машинную команду. Очень скоро был создан язык описания макрокоманд, который являлся языком более высокого уровня по отношению к автокоду. Автором языка МАКРОКОД был В.М. Михелев. Макрогенератор, заменяющий макрокоманду в программе на последовательность автокодных предложений, был позже (в 70-х годах) написан также В.М. Михелевым, подсоединен к БЕМШу и получил имя МАКРО-БЕМШ."

(Из статьи Луховицкой Э.С. и Езеровой Г.Н. "Информатика в ИПМ им.М.В.Келдыша. 1960-е годы")