Электроника Д3-28 (Вопросы по этому "Калькулятору с кассетой")

Карманные вычислительные устройства и механические вычислители
Гость

Сообщение Гость » 01.03.2017,11:29

Sinus писал(а):Дизассемблирование кусков Бейсика показало, что Бейсик опрашивает командами ввода-вывода "регистр состояния" интерфейсного устройства, пытается им управлять и тем самым Бейсик как-то выясняет тип подключеня терминала и тип терминала. Значит, нам нужно имитировать конкретное подключение; разбор вариантов показал, что, вроде, проще всего - 4-й способ.
Если Вы копнули в потроха Бейсика, то, возможно, на первом (промежуточном) этапе можно было бы сильно упростить задачу, если, скажем, подменить ту процедуру в Бейсике, которая общается с аппаратурой, соединяемой с терминалом, на какую-нибудь "умную заглушку". Поясняю: собсна, примем, что в исходниках Бейсика есть какая-то процедура (возможно, их там набор из 3-5 процедур), которая берёт на себя всю работу по коммуникации с терминалом; в свою очередь весь остальной код Бейсика напрямую с терминалом уже не общается, а лишь дёргает вот эту процедуру. Ну, будем считать, что это так и есть (и это не так сложно проверить, кстати). В таком случае мы можем "выкусить" из исходников Бейсика вот всю эту процедуру, и вместо неё поставить в симуляторе "ловушку": как только из какой-то части Бейсика выполняют переход на начало нашей "выкушенной" процедуры, срабатывает ловушка, симулятор делает что-то специфическое, после чего возвращает управление коду Бейсика так, как если бы была выполнена инструкция возврата из подпрограммы. Я не буду здесь детализировать идею, что там делать с прерываниями и т.п., -- если интересно, то это лучше обсудить отдельно. Ну, а симулятор, когда сработала ловушка, разбирает параметры, с которыми была вызвана подменяемая процедура, лезет в "память" симулируемой машины, забирает оттуда, например, текстовую строку, которую надо вывести на терминал, и максимально прямолинейно симулирует работу терминала -- т.е. просто сразу отрисовывает нужные символы в окне; при этом не требуется эмулировать работу аппаратного порта, преобразователя интерфейса (коих Вы назвали четыре варианта), и кое-каких потрохов терминала. На мой взгляд, это было бы существенным упрощением задачи и позволило бы основной функционал запустить в работу существенно быстрее, чем если сразу делать полный набор. Другими словами, считайте, что речь идёт о симуляции функций printf, scanf.

Sinus
Full Member
Сообщения: 290
Зарегистрирован: 07.08.2016,17:30
Откуда: СПб
Благодарил (а): 11 раз
Поблагодарили: 1 раз

Вклад в сообщество

Электроника Д3-28 (Вопросы по этому "Калькулятору с кассетой")

Сообщение Sinus » 01.03.2017,18:09

SKcorp, в перечне элементов к ИВВ, о котором вчера шла речь (он называется "Блок управления дисплеем 15ИЭ-00-013", схема к нему - ПЕЛ2.390.002 Э3), указан разъём СНО53-60/93x9В-23-В. Если у Вас плата этого блока есть и нужна схема, то вот здесь можно скачать фото (но я сильно не ужимал фотки, поэтому архив большой получился, почти 27 Мб. Каждый из трех листов схемы снят целиком и отдельно по половинкам):

https://yadi.sk/d/eDuRqmwq3ErL3Q
PEL2_390_002__1-03-2017.ZIP


xoiss
>> "выкусить" из исходников Бейсика вот всю эту процедуру, и вместо неё поставить в симуляторе "ловушку"

Да, я и делал пошаговый "перехват" команд в Бейсике, чтобы посмотреть, как в нём устроены процедуры. Но только в самом коде Бейсика я ничего не выкусывал, и вообще не менял там ни одного бита, это же святое! :-) К тому же, кроме Бейсика есть ещё Фортран и Выстра, а в каждой из прог свои "кренделя". Все проги запускаю в их исходном виде (из тех самых txt-файлов "столбиком", которые здесь уже выкладывал).

Дизассемблировать куски программок приходится потому, что это набор реальных примеров того, в каком антураже (часто в весьма неожиданном) работают машинные команды, описанные в документации к Д3-28 лишь кратко. Такие примеры оказались архиважными. Сначала я думал, что после того, как удастся пройти 028-тест (с громким названием "тест системы команд и ОЗУ" :-), то уж остальные проги заработают автоматом. Но оказалось, не тут-то было.

Лишь постепенно, по мере того, как удавалось находить в прогах места с очередным затыком и преодолевать их (методом проб и ошибок корректируя в имитаторе интерпретацию команд Д3-28), начинали "оживать" Бейсик, Фортран и Выстра. Притом не все разом: одна прога если начнёт работать, то другая глохнет.

Вот так, отыскивая "кренделя" по очереди то там, то сям, я на днях обнаружил, что всё вдруг заработало: Бейсик наконец стал послушным, и Фортран с Выстрой не только запускаются, но и компилят (а это же, наверное, не хухры-мухры :-) Поэтому я наделал скриншотов, и прибежал сюда поделиться радостью.
Последний раз редактировалось Sinus 29.08.2022,20:26, всего редактировалось 2 раза.

Гость

Сообщение Гость » 02.03.2017,00:18

ну, если всё работает -- это здорово! большая работа
выкладывайте тогда скорее!! :)

shattered
Advanced Member
Сообщения: 1146
Зарегистрирован: 17.02.2008,02:38
Поблагодарили: 1 раз

Сообщение shattered » 22.03.2017,03:12

Sinus писал(а): Ссылка http://zx-pk.ru/threads/20744-...0-013.html отличная, спасибо, но я её уже изучал. Ещё осенью изучал-изучал, и понял, что ничего не понимаю - ни как подключить эмулятор к своей программке, ни как он работает. Понял только, что там ребята - супер-профи программисты, понимающие друг друга с полуслова, и что они строят точные программные модели "железа" (наверное, правильнее сказать - сигналов) по реальным схемам "железа", с учётом содержимого реальных ПЗУ, временных задержек и всех прочих подобных нюансов.
Я один из тех ребят :) Как раз планировал окончательно отшлифовать эмулятор 15ИЭ (есть неудобства в работе клавиатуры). Спрашиваете -- отвечаем:

- как подключить -- через сеть, т.е. TCP/IP socket. Работы с настоящими COM-портами не предусмотрено. Совсем правильно было бы включить Д3-28 в MAME, тогда оба эмулятора смогут работать вместе -- например, так сделано в эмуляторе ДВК-2, над которым я (медленно и печально) работаю:

Изображение

- как строится изображение -- с частотой кадровой развертки вызывается функция screen_update, ее задача -- передать ядру эмулятора bitmap с текущим состоянием экрана (включая те части растра, которые обычно не видны). В случае 15ИЭ этот bitmap отрисовывается построчно через scanline_callback; так надо потому, что прошивка передает адрес памяти в генератор видеосигнала также построчно. Все остальное -- вывод на экран, масштабирование и прочая -- делает ядро, которое едино для всех эмуляторов, входящих в MAME.

Sinus
Full Member
Сообщения: 290
Зарегистрирован: 07.08.2016,17:30
Откуда: СПб
Благодарил (а): 11 раз
Поблагодарили: 1 раз

Вклад в сообщество

Электроника Д3-28 (Вопросы по этому "Калькулятору с кассетой")

Сообщение Sinus » 22.03.2017,19:30

shattered
Спасибо Вам большое за пояснения! Уровень знаний у меня пока слишком низкий, чтобы всё с ходу понять. Беру длительный таймаут на самообразование...

И так совпало, что к данному моменту, когда увидел Ваше сообщение, я как раз закончил обещанные описания своей дилетантской поделки, и собрался сюда выложить ссылки. (Они здесь теперь иногда обновляются; последний раз обновил 5.09.2025.)

Прога запускается в (уже устаревших) Win ME, XP, 7. Имитируется Д3-28 с фрязинским терминалом и ТПУ.

В zip-архиве с "имитатором Д3-28" есть "руководство пользователя" в pdf-файле, и папка [txt] с программками для Д3-28. Вместе с файлом imitator.exe архив содержит необходимую для работы проги папку [bmp], в ней - изображения и шрифт. Интернет проге не нужен. Установка (инсталляция) проге не требуется, достаточно распаковать zip-архив (режим распаковки - "с сохранением подкаталогов", чтобы образовалась необходимая папка [bmp]):

d3-28_imitator_1_2__5-09-2025.zip (версия 1.2)

В версии 1.2 я добавил в имитатор возможность пользователям самостоятельно создавать wav-файлы для опытов по загрузке программ в реальные машины Д3-28; см. в архиве pdf с очень подробными пояснениями в появившейся теперь там папке u_soft.

Перечень имеющихся в архиве (в папке txt) программок для Д3-28 с их кратким описанием даётся, как и раньше, в "руководстве к имитатору" в разделе 10.

Здесь архив с "VC++6.0-проектом" проги, т.е. целиком папка с исходником:
src_d3-28_imitator__5-09-2025.zip (версия 1.2)
Пояснение устройства программы имитатора Д3-28:
opisanie_imitatora_d3-28.pdf
Описание переноса проекта имитатора на другой компьютер, т.е. - как самостоятельно собрать exe-файл имитатора Д3-28 из указанного выше исходника (в том числе, после его редактирования при желании):
zapusk_projecta_imitatora.pdf


Всё это в папке "D3-28" на яндекс-диске: https://yadi.sk/d/lyMwL58zuExSD
(там есть txt-файл с именем AAA_READ_ME_дата, он один из первых по алфавиту; в нём я перечисляю содержимое папки и обновления по мере их появления).

Поначалу возникал у меня вопрос - как сделать так, чтобы облегчить процессору работу в главном цикле while с функцией PeekMessage. Оказалось достаточным вставить в определённых местах "отдых" типа Sleep(1), чтобы прога иногда отдавала свои "кванты времени" операционной системе.

Спасибо Вам ещё раз, что обратили внимание на Д3-28!
Последний раз редактировалось Sinus 05.09.2025,03:41, всего редактировалось 26 раз.

shattered
Advanced Member
Сообщения: 1146
Зарегистрирован: 17.02.2008,02:38
Поблагодарили: 1 раз

Сообщение shattered » 23.03.2017,16:06

Sinus писал(а):Беру длительный таймаут на самообразование
Главное, что имитатор Д3 работает, а украшение (вывод на терминал) не столь важно :)
Sinus писал(а):как делать так, чтобы процессор не гонял бы помногу раз одни и те же циклы, из-за которых он может перегреться...
Я бы не стал этого делать, тактовая частота Д3 невысока. Но конечно, это сделать можно -- (а) определяем, что выполняется пустой цикл и (б) пропускаем исполнение команд и сразу переходим на ожидание прерываний.

Пример, как это сделано в другом эмуляторе (SIMH):

https://github.com/simh/simh/blob/maste ... pu.c#L1604 -- проверка на пустой цикл
https://github.com/simh/simh/blob/maste ... er.c#L1399 -- ожидание событий

15a18
Newbie
Сообщения: 33
Зарегистрирован: 14.07.2017,15:33
Откуда: Крым
Поблагодарили: 1 раз

Сообщение 15a18 » 01.09.2017,16:36

xoiss писал(а):ну, если всё работает — это здорово! большая работа
выкладывайте тогда скорее!!
ИмитаторД3-28 от Sinus'а выложен на сайте d3-28.ru.
Как выяснилось, он нормально запускается и работает под Linux + WINE. Программы исполняются как написано в документации к имитатору, нормально отрабатывается чтение/запись программ в файл и "печать" на ТПУ. Никаких тормозов, нагрева нет.

Аватара пользователя
Tronix
Advanced Member
Сообщения: 3634
Зарегистрирован: 15.01.2008,11:00
Откуда: Москва
Поблагодарили: 1 раз

Вклад в сообщество

Сообщение Tronix » 01.09.2017,18:53

Ну, теперь надо демку пилить для сабжа, потому что без дем платформа мертва.

Sinus
Full Member
Сообщения: 290
Зарегистрирован: 07.08.2016,17:30
Откуда: СПб
Благодарил (а): 11 раз
Поблагодарили: 1 раз

Вклад в сообщество

Электроника Д3-28 (Вопросы по этому "Калькулятору с кассетой")

Сообщение Sinus » 02.09.2017,19:25

Tronix писал(а):Ну все равно же каждый ностальгирует "по своей" теме, у кого какой первый комп был.

Tronix, точно. Поэтому о реанимации Д3-28 речи не веду, "умерла, так умерла". Полагаю, демка не оживит покойницу (хотя и не знаю толком, что такое демка: рекламный ролик что ль...)

Однако, было бы неплохо найти и сохранить (плюс к тому, что уже нашлось) как можно больше всякого разного д-тришкиного ПО. При остром желании можно и "новодел" сочинять, но он будет не так интересен, как реальное "историческое наследие".

Новости о реальном наследии пока вот какие. Sergei Frolov любезно предоставил ещё одну версию Бейсика 3А. 15a18 любезно предоставил распечатки дампов ОЗУ, по которым нам уже удалось восстановить систему подготовки программ "СПП-8-МХТИ"; на основе своего немалого архива он создал сайт d3-28.ru для концентрации материалов об этой машине. IdeaFix (теперь уже Гость) привёл ссылки на фотографии, среди которых одна - особенно уникальная (имхо, еснно), потому что там видно расположение горящих и погашенных разрядов на табло машины Д3-28 в режиме "Ввод", такой информации до сих пор не удавалось найти. Всем спасибо!

UPD: уважаемый sanders обнаружил кассеты для Д3-28. Спасибо!

UPD: уважаемый Виталий aka 15a18 обнаружил в своём архиве большую коллекцию кассет для Д3-28 и некоторые из них уже оцифровал. Спасибо!

Пользуясь случаем, ещё раз призываю всех, у кого возникнет желание и обнаружится хотя бы какая-то возможность, участвовать в поисках ПО и документации о машине Д3-28 и о работавших с ней периферийных устройствах, в том числе - об УСО АЦСКС-1024-001.
Последний раз редактировалось Sinus 18.10.2024,02:56, всего редактировалось 1 раз.

Аватара пользователя
sanders
Advanced Member
Сообщения: 9648
Зарегистрирован: 26.03.2008,14:47
Откуда: Санкт-Петербург
Поблагодарили: 9 раз

Вклад в сообщество

Сообщение sanders » 04.09.2017,09:14

У меня есть несколько кассет со штампом Д3-28, взятых из подвала одного НИИ, так что там точно не музыка, правда, состояние неизвестно. Могу дать на время под честное слово вернуть и если научите простым командам загрузки какого-либо софта, а то сами машинки есть исправные, а я кроме Pi ничего друзьям продемонстрировать не могу.
Я в Питере.

15a18
Newbie
Сообщения: 33
Зарегистрирован: 14.07.2017,15:33
Откуда: Крым
Поблагодарили: 1 раз

Сообщение 15a18 » 04.09.2017,09:29

sanders писал(а):У меня есть несколько кассет со штампом Д3-28, взятых из подвала одного НИИ, так что там точно не музыка, правда, состояние неизвестно. Могу дать на время под честное слово вернуть и если научите простым командам загрузки какого-либо софта, а то сами машинки есть исправные, а я кроме Pi ничего друзьям продемонстрировать не могу.
Я в Питере.
Спасибо, что откликнулись.Меня постоянно можно найти на сайте d3-28.ru Там же есть адрес для связи. Пишите в почту или форму для связи.

Ответить