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

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

Date: 2016-11-26 06:20 (UTC)
From: [identity profile] qvb.livejournal.com
Да, это должно быть интересно.

Для RSX11M/M-PLUS я тоже собрал довольно полную коллекцию всяческого софта. К сожалению не смог найти все пакеты которыми когда-то пользовался, но процентов 80% нашел. Как ни странно не смог найти MIM (Микромир), а штука была очень неплохая. Но на западе MIM был не известен, а советских архивов очень мало.


P.S. Кстати, а не будет ли интересно сделать настоящий веб сайт о БЭСМ-6 работающий на Вашей микро-бэсм?

Я думал сделать нечто подобное под RSX11M (отсюда и идеи портировать TCP стэк), но гонять такую штуку внутри эмулятора как-то не айс, а собирать реальное железо было слишком муторно.

Edited Date: 2016-11-26 07:08 (UTC)

Date: 2016-11-27 20:32 (UTC)
From: [identity profile] avseyev.livejournal.com
Так Кушниренко и его дело до сих пор живет и здравствует. Есть современная имплементация Микромира и Кумира на PC'юках. Они его даже под Qt портировали. Можно собирать под разные Оси. :)
Edited Date: 2016-11-27 20:32 (UTC)

Date: 2016-11-27 20:38 (UTC)
From: [identity profile] qvb.livejournal.com
К сожалению Микромир для RSX11M я так и не нашел. В давние времена он у меня был, и это был неплохой редактор + простой файловый менеджер, но старые ленты не сохранились а в доступных архивах не нашел.

Микромир для PC - это все-таки совсем другая штука, да и не нужен он мне для PC.

Date: 2016-11-27 21:21 (UTC)
From: [identity profile] qvb.livejournal.com
>>>Еще долгий путь предстоит: процессор, потом Си-компилятор, потом юникс, а дальше уже можно и веб сайт.

А можно и гораздо проще, без юникса и без С компилятора.

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

Но юникс на бэсме это тоже интересная затея.
Edited Date: 2016-11-27 21:21 (UTC)

Date: 2016-11-28 10:28 (UTC)
From: [identity profile] Евгений Х. (from livejournal.com)
Можно пойти аутентично - реализовать не стек TCP, а "аппаратуру сопряжения" в виде какого-гибудь микроконтролера, все-таки памяти маловато будет - только 8Мбайт официально.

Date: 2016-11-28 15:23 (UTC)
From: [identity profile] qvb.livejournal.com
Для веб сервера который сервит статичные файлы памяти много не нужно - он собирается вообще в пару десятков килобайт, и производительность будет вполне хорошая. Понятно что он будет обслуживать один запрос за раз, но если юзеров немного - вполне ОК.

>>>Можно пойти аутентично - реализовать не стек TCP, а "аппаратуру сопряжения" в виде какого-гибудь микроконтролера, все-таки памяти маловато будет - только 8Мбайт официально.

Для TCP стека много памяти тоже не нужно - достаточно 32К под буферизацию + сам код. Т.е. все вместе будет меньше 100 килобайт.

Но да, есть возможность сделать нечто вроде "аппаратуры сопряжения" (это и есть тот чит о котором я говорил) - можно взять Ethernet контроллер от Ардуины, а там не просто контроллер сети а есть встроенный TCP стек. Интерфейс у этого контроллера - фактически сокеты, причем он поддерживает и TCP, и UDP, и одновременно может быть открыто 4 (или 8 - смотря какая версия) сокетов.

Именно на такой штуке спокойно делается WEB сервер на Ардуине - классика жанра.

Скорость у него кстати очень неплохая - веб сервер на ардуине выдает поток в пару сотен килобайт в секунду, для микробэсм должно получится нечто аналогичное.
Edited Date: 2016-11-28 15:45 (UTC)

Date: 2016-11-29 03:05 (UTC)
From: [identity profile] Евгений Х. (from livejournal.com)
В начале програмерской карьеры как раз и делали сервер на wiznet 3000. Работало достаточно надежно. К атмеге цеплялось по uart. В шилде для ардуины, как вижу, используется W5100 по SPI, так что одна "сотона".

Интересно, в микро-БЭСМ как устройства подключались?

Date: 2016-11-29 03:21 (UTC)
From: [identity profile] qvb.livejournal.com
Да, в Ардуиновском шильде используется или W5100, или W5500 (более новый кристалл). W5100 поддерживает 4 одновременных сокета, W5500 - 8 сокетов, кроме того W5500 существенно быстрей и удобней в обмене данных - у него можно использовать блоковую SPI передачу.

Как были сделаны устройства в микро-БЭСМ к сожалению не знаю (думаю что хозяин блога знает), но в худшем случае наверное можно просто сделать библиотеку работающую напрямую с W5500. Для того чтобы гонять WEB сервер на БЭСМе этого достаточно.

В принципе поскольку W5500 предоставляет сокеты (у него и буферизация и все остальное внутри), то даже несколько процессов могут одновременно работать с сетью если договорятся кто какой сокет использует, только доступ к регистрам W5500 нужно будет как-то защищать от переключения процессов (может запрет прерываний использовать на время обмена или нечто подобное).

Date: 2016-11-29 03:36 (UTC)
From: [identity profile] Евгений Х. (from livejournal.com)
По диагонали почитав описание МКБ-8601 видно, что там используется общая асинхронно-синхронная шина, которую можно захватывать и писать прямо в память.
Если сделать КВУ для Arduino Ethernet, то можно "красиво" складывать и брать пакеты с данными прямо из памяти машины.
Я так понял что есть исходники ДИСПАКа для микро-БЭСМ, возможно придется сделать модуль для него для обработки сети, но это, конечно, если станет понятно как "генерировать ДИСПАК".
Так же смотрю, что есть достаточно недорогой модуль TFT cо слотом для microSD
А вообще напрашивается "толстая" атмега или pic, которая по аппаратному сбросу шьёт fpga прошивкой с sd карточки и потом выполняет роль КВУ.
Edited Date: 2016-11-29 03:38 (UTC)

Date: 2016-11-29 03:44 (UTC)
From: [identity profile] qvb.livejournal.com
>>>А вообще напрашивается "толстая" атмега или pic, которая по аппаратному сбросу шьёт fpga прошивкой с sd карточки и потом выполняет роль КВУ.


+100
Я бы так и делал.

Вроде есть даже готовые платы где кроме FPGA стоит АРМ или еще какой-нибудь процессор.
Этот же процессор может эмулировать жесткие диски на основе файлов на SD карточке. И он же может эмулировать терминал.

Или если FPGA достаточно большая - то этот вспомогательный процессор можно засунуть в саму FPGA, вместе с микро-БЭСМ.

Date: 2016-12-14 03:11 (UTC)
From: [identity profile] Евгений Х. (from livejournal.com)
Получить удовольствие от процесса в виде подобия raspbery pi.

А вот что делать с компилятором для unix'а непонятно... Все примеры заточены под современные процессоры где 2-3-х адресная система команд.