![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Сижу в центре кремниевой долины и программирую на фортране для БЭСМ-6. На дворе 2016 год, а вот поди ж ты, возникла настоятельная потребность. Нужно извлечь с диска некий бинарный образ и преобразовать в текстовый HEX файл. Надо сказать, Фортран-ГДР отличный инструмент для подобных задач. Мониторная система Дубна, симулятор ОС Диспак, книжки Мазного и Салтыкова-Макаренко под рукой. Решение выглядит так: hexdump.b6
История вопроса следующая. Есть процессор микро-БЭСМ, и для него есть тест системы команд. Тест написан на языке ассемблера, а сам ассемблер имеется в исходных текстах для БЭСМ-6. К ассебмлеру также прилагается линкер. Всё это запускается под мониторной системой "Дубна" на симуляторе ОС Диспак. На самом деле написана эта кросс-система была под ОС Дубна, и пользуется некоторыми её особенностями, поэтому пришлось на скорую руку привинтить несколько дубненских экстракодов к симулятору Диспака. Но это всё мелочи. В конце концов ассемблер с линкером заработали и на диске получился двоичный образ теста, размером около 24 килобайт. Как его извлечь оттуда? Тем более, что хранится он под управлением некой "библиотеки виртуальной памяти", и формат хранения не описан. Но есть API, набор фортрановских вызовов. Не вопрос: пишем програмулину и получаем нужный результат. Теперь можно смело запускать тест на симуляторе Verilog.
История вопроса следующая. Есть процессор микро-БЭСМ, и для него есть тест системы команд. Тест написан на языке ассемблера, а сам ассемблер имеется в исходных текстах для БЭСМ-6. К ассебмлеру также прилагается линкер. Всё это запускается под мониторной системой "Дубна" на симуляторе ОС Диспак. На самом деле написана эта кросс-система была под ОС Дубна, и пользуется некоторыми её особенностями, поэтому пришлось на скорую руку привинтить несколько дубненских экстракодов к симулятору Диспака. Но это всё мелочи. В конце концов ассемблер с линкером заработали и на диске получился двоичный образ теста, размером около 24 килобайт. Как его извлечь оттуда? Тем более, что хранится он под управлением некой "библиотеки виртуальной памяти", и формат хранения не описан. Но есть API, набор фортрановских вызовов. Не вопрос: пишем програмулину и получаем нужный результат. Теперь можно смело запускать тест на симуляторе Verilog.
no subject
Date: 2016-11-26 06:14 (UTC)no subject
Date: 2016-11-26 06:20 (UTC)Для RSX11M/M-PLUS я тоже собрал довольно полную коллекцию всяческого софта. К сожалению не смог найти все пакеты которыми когда-то пользовался, но процентов 80% нашел. Как ни странно не смог найти MIM (Микромир), а штука была очень неплохая. Но на западе MIM был не известен, а советских архивов очень мало.
P.S. Кстати, а не будет ли интересно сделать настоящий веб сайт о БЭСМ-6 работающий на Вашей микро-бэсм?
Я думал сделать нечто подобное под RSX11M (отсюда и идеи портировать TCP стэк), но гонять такую штуку внутри эмулятора как-то не айс, а собирать реальное железо было слишком муторно.
no subject
Date: 2016-11-27 20:32 (UTC)no subject
Date: 2016-11-27 20:38 (UTC)Микромир для PC - это все-таки совсем другая штука, да и не нужен он мне для PC.
no subject
Date: 2016-11-27 21:15 (UTC)Еще долгий путь предстоит: процессор, потом Си-компилятор, потом юникс, а дальше уже можно и веб сайт.
no subject
Date: 2016-11-27 21:21 (UTC)А можно и гораздо проще, без юникса и без С компилятора.
Можно сделать простой веб сервер для родной ОС бэсма, там обьем кода очень невелик. Можно и переписать его на любом нужном языке - хоть на фортране. Основная сложность - это TCP стэк, но тут есть несколько вариантов позволяющих слегка читнуть и упростить это дело :-)
Но юникс на бэсме это тоже интересная затея.
no subject
Date: 2016-11-28 10:28 (UTC)no subject
Date: 2016-11-28 15:23 (UTC)>>>Можно пойти аутентично - реализовать не стек TCP, а "аппаратуру сопряжения" в виде какого-гибудь микроконтролера, все-таки памяти маловато будет - только 8Мбайт официально.
Для TCP стека много памяти тоже не нужно - достаточно 32К под буферизацию + сам код. Т.е. все вместе будет меньше 100 килобайт.
Но да, есть возможность сделать нечто вроде "аппаратуры сопряжения" (это и есть тот чит о котором я говорил) - можно взять Ethernet контроллер от Ардуины, а там не просто контроллер сети а есть встроенный TCP стек. Интерфейс у этого контроллера - фактически сокеты, причем он поддерживает и TCP, и UDP, и одновременно может быть открыто 4 (или 8 - смотря какая версия) сокетов.
Именно на такой штуке спокойно делается WEB сервер на Ардуине - классика жанра.
Скорость у него кстати очень неплохая - веб сервер на ардуине выдает поток в пару сотен килобайт в секунду, для микробэсм должно получится нечто аналогичное.
no subject
Date: 2016-11-29 03:05 (UTC)Интересно, в микро-БЭСМ как устройства подключались?
no subject
Date: 2016-11-29 03:21 (UTC)Как были сделаны устройства в микро-БЭСМ к сожалению не знаю (думаю что хозяин блога знает), но в худшем случае наверное можно просто сделать библиотеку работающую напрямую с W5500. Для того чтобы гонять WEB сервер на БЭСМе этого достаточно.
В принципе поскольку W5500 предоставляет сокеты (у него и буферизация и все остальное внутри), то даже несколько процессов могут одновременно работать с сетью если договорятся кто какой сокет использует, только доступ к регистрам W5500 нужно будет как-то защищать от переключения процессов (может запрет прерываний использовать на время обмена или нечто подобное).
no subject
Date: 2016-11-29 03:36 (UTC)Если сделать КВУ для Arduino Ethernet, то можно "красиво" складывать и брать пакеты с данными прямо из памяти машины.
Я так понял что есть исходники ДИСПАКа для микро-БЭСМ, возможно придется сделать модуль для него для обработки сети, но это, конечно, если станет понятно как "генерировать ДИСПАК".
Так же смотрю, что есть достаточно недорогой модуль TFT cо слотом для microSD
А вообще напрашивается "толстая" атмега или pic, которая по аппаратному сбросу шьёт fpga прошивкой с sd карточки и потом выполняет роль КВУ.
no subject
Date: 2016-11-29 03:44 (UTC)+100
Я бы так и делал.
Вроде есть даже готовые платы где кроме FPGA стоит АРМ или еще какой-нибудь процессор.
Этот же процессор может эмулировать жесткие диски на основе файлов на SD карточке. И он же может эмулировать терминал.
Или если FPGA достаточно большая - то этот вспомогательный процессор можно засунуть в саму FPGA, вместе с микро-БЭСМ.
no subject
Date: 2016-12-14 01:13 (UTC)Первый вариант: возможность запускать имеющуюся операционку для микро-БЭСМ. Это не Диспак, нет, ничего общего. Генетически это сильно урезанный вариант ОС Дубна. Система обеспечивает примитивный диалог на консоли (через пультовый процессор) и возможность запуска пакетных файлов мониторной системы "Дубна". Файловый обмен обеспечивается пультовым процессором через общую память. В целом не бог весть что. Массовую публику пакетные файлы Дубны вряд ли заинтересуют. Сеть тут не очень понятно как приспособить. Многотерминальность имеется, но имеющиеся диалоговые системы от БЭСМ-6 не пойдут без переделок.
Второй вариант - перенос Unix на микро-БЭСМ. Собственно так и предполагалось в конце 80-х. В этом случае пультовый процессор не особо нужен. В хардвере надо добавить пару периферийных устройств: UART для консоли и SD карточку в качестве диска. Тегами можно пожертвовать. Получится вполне элегантная система.
no subject
Date: 2016-12-14 03:11 (UTC)А вот что делать с компилятором для unix'а непонятно... Все примеры заточены под современные процессоры где 2-3-х адресная система команд.
no subject
Date: 2016-12-14 05:18 (UTC)Ну, во-первых сохранился компилятор PCC для Эльбруса-Б. Не самый современный вариант, но сам себя и ядро Юникса он в то время компилировал. Можно его допилить небольшими усилиями.
Среди современных процессоров тоже существуют "странные" архитектуры, особенно в мире DSP, и тем не менее компиляторы справляются.