vak: (Default)
В прошлую среду Костя организовал для нашей тесной компании посещение музея Digibarn и его хранителя Брюса Дэймера.



Вот такая табличка на входе в дом Брюса.



Перфолента с именем Брюса. Где-то в Австралии всё ещё имеется работающий ленточный перфоратор.



Сейчас Брюс занимается исследованиями в области происхождения жизни на Земле. В прошлом году в журнале Life вышла его статья "A Field Trip to the Archaean in Search of Darwin’s Warm Little Pond" (PDF). В ролике ниже он излагает общую идею для студентов университета Santa Cruz.



А здесь другая придумка Брюса: технология и аппарат для добычи полезных ископаемых на астероидах.

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)
Сегодня на фестивале древних компьютеров выступал Пол Лафтон, автор первой операционной системы для компьютеров Apple. Его пригласил Брюс Дэймер, хранитель частного компьютерного музея Digibarn, по инициативе которого некоторое время назад удалось восстановить и выложить в свободный доступ исходный код Apple DOS. Скачать можно здесь: ZIP 264 кбайт.

Стартовый экран Apple DOS 3.1:



Пол Лафтон:



Прикольно выглядит контракт на разработку:

vak: (Default)
Флопики давно отжили своё. Однако для любителей древних компьютеров и прочей старины есть выход: фирма Gotek производит устройства, заменяющие стандартный дисковод, но в качестве носителя использующие обычную USB-флешку.



Hervé Messinger разработал альтернативную прошивку для этого девайса, и выложил исходные коды на Гитхаб. Так что теперь каждый имеет возможность приспособить флопик для своего любимого устройства, к примеру для Амиги или БК-0010. На видео показан процесс обновления прошивки.

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)
Для долгосрочной архивации купил на Амазоне минимальный комплект: DVD-писалку для M-DISC ($25) и запас болванок ($1.33/шт). Производитель Verbatim обещает срок хранения в несколько сот лет. Поживём - увидим. :)

В отличие от традиционных дисков эти - полупрозрачные на просвет.

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

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



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



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

196819751976197719781979198019841986
vak: (Улыбка)
Намедни в списке рассылки SIMH опубликовали список исторических операционных систем, к которым сохранились исходные тексты:

1. OS/8 - PDP-8 assembly language
2. XVM/DOS-15 - PDP-15 assembly language
3. CAPS-11 - PDP-11 assembly language
4. TSS/8 - PDP-8 assembly language
5. ADSS-9/15 - PDP-9/15 assembly language
6. RSX11C - PDP-11 assembly language
7. XVM/RSX-15 - PDP-15 assembly language
8. IBSYS - IBM 7094 assembly language
9. CTSS - IBM 7094 assembly language
10. OS/32 - Interdata 32b assembly language
11. SDS940 timesharing - SDS 940 assembly language
12. ITS - PDP-10 assembly language

Для любителей поизучать наследие древних.