2023-03-31

vak: (Default)
Хочу представить вашему вниманию новый проект: симулятор операционной системы "Дубна". Он позволяет запускать из командной строки задания мониторной системы "Дубна" ровно в виде, как они описаны в книжке Мазного. На выходе получаете распечатку. Это похоже на то, как работает наш старый симулятор dispak. Но не нужно никаких паспортов.

Из всех бэсмовских дисков симулятор dubna использует только ленточку monsys.9. Она по умолчанию подключается на 30 направление (только чтение) и на неё переназначается барабан 21. Так называемый режим физ.обмена.

Пример: фортран

В папке examples есть несколько примеров. К примеру, возьмём простейшую программу на Фортране, файл fortran.dub:
*name фортран
*fortran
program hello
print 1000
stop
1000 format('Hello, World!')
end
*execute
*end file
Запускаем:
$ cd dubna/examples
$ dubna fortran.dub
Read job 'fortran.dub'
Mount image '/Users/vak/.besm6/9' as disk 30
Redirect drum 21 to disk 30
------------------------------------------------------------
3 000 00.00
ЙОКСЕЛ БЭСМ-6/5 ШИФР-12
МОНИТОРНАЯ СИСТЕМА ′Д У Б Н А′ - 20/10/88







Ж ЖЖЖ ЖЖЖЖ ЖЖЖЖЖ ЖЖЖЖ ЖЖЖ Ж Ж
ЖЖЖЖЖ Ж Ж Ж Ж Ж Ж Ж Ж Ж Ж Ж
Ж Ж Ж Ж Ж Ж Ж Ж Ж Ж Ж Ж ЖЖЖЖЖ
Ж Ж Ж Ж Ж Ж Ж Ж Ж Ж Ж Ж Ж Ж
ЖЖЖЖЖ Ж Ж ЖЖЖЖ Ж ЖЖЖЖ Ж Ж Ж Ж
Ж Ж Ж Ж Ж Ж ЖЖЖЖЖ Ж Ж
Ж ЖЖЖ Ж Ж Ж Ж Ж Ж Ж








*NАМЕ ФОРТРАН
*FОRТRАN
3 000 00.00
Ф О Р Т Р А Н
/16.07.73/
РRОGRАМ НЕLLО
РRINТ 1000
2 SТОР
1000 FОRМАТ(′НЕLLО, WОRLD!′)
ЕND



ТАБЛИЦА ОТНОСИТЕЛЬНЫХ АДРЕСОВ

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
000 :00001 00003
*ЕХЕСUТЕ

НЕLLО 01000 IОСОNТ* 01622 FТ*723 Е 01674 ISОТСОS1 Е 04025
РRОGRАМ Е 01000 IОАС* Е 01653 FТ*003 Е 01674 FМRТАРЕ 04045
ВСDWRIТ* 01017 FТ*722 Е 01666 SТОР* 02662 ОСТТDЕС 04774
FТ*621 Е 01017 FТ*642 Е 01666 ЕХIТ Е 02663 LUNМUN С 05027
ВСDЕNС* Е 01023 FТ*002 Е 01666 ВСDВЕG* 02711 JЕRRIО* С 05030
FТ*611 Е 01023 FD*642 Е 01667 FТ2* Е 03216 САRD2 С 05031
FТ*571 Е 01025 FD*722 Е 01667 КОNV1* Е 03231 ISОIСТТR 05056
FТ*561 Е 01030 FС*722 Е 01667 РRINТ8 03325 RЕVСАRD 05113
NЕХТLЕТ* Е 01035 FС*642 Е 01667 ТТРRINТ 03506 *IСНЕСК* С 05140
RК* Е 01077 FС*002 Е 01667 ВСDРUN 03545 *ПЕРФОРА 05146
WSУ* Е 01335 IОЕND* Е 01674 ЕВСDРUN Е 03571 КОД*СDС Е 05147
I/О*ЕRR Е 01575 FТ*643 Е 01674 ISОТСОSУ 03754 СВОБОДНО 05207

НЕLLО, WОRLD!
------------------------------------------------------------
Elapsed time: 0.017 seconds
Simulated: 1365269 instructions
Simulation rate: 82289735 instructions/sec
+2 )

Дальнейшее развитие

Приглашаются желающие развить функционал симулятора. Возможные направления:
  • Сделать нужные экстракоды для динамического подключения лент командой *TAPE.
  • Разобраться, как подключить стандартные библиотеки *LIBRARY:1 и *LIBRARY:2.
  • Сделать ввод-вывод стандартных массивов.
  • Научиться подключать внешние трансляторы: *MADLEN, *BEMSH, Паскаль, другие фортраны.
Работа подразумевает экспериментирование, создание новых примеров, поиск разъяснений в книжке Мазного, копание в исходных текстах Дубны (здесь) и дописывание экстракодов в файле extracode.cpp. Цифровая археология в лучшем виде. 😀