Эмулятор ЭВМ "Электроника Д3-28"

Карманные вычислительные устройства и механические вычислители
Аватара пользователя
xlat
Full Member
Сообщения: 245
Зарегистрирован: 26.06.2018,20:19
Откуда: Novosibirsk
Контактная информация:

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

Эмулятор ЭВМ "Электроника Д3-28"

Сообщение xlat » 20.02.2021,15:26

Продолжаю совместно с maddev работать над эмулятором ЭВМ "Электроника Д3-28". Проект сейчас находится в стадии активной разработки, но его уже можно посмотреть на моём сайте: https://xlat8086.com/d3-28/

Изображение

О проекте:

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

Возможности, реализованные на данный момент:
  • Эмуляция центрального процессора, выполняющего микрокод от машины 15ВМ128-018 (версия с 128 Кб ОЗУ).
  • Эмуляция встроенной клавиатуры и дисплея.
  • Эмуляция чтения с магнитной ленты с поддержкой образов ленты в текстовом формате. Поддерживаются стандартные блоки, сохранённые инструкциями SAVEX (например, образ интерпретатора Бейсика) и SAVER (например, файл с программой на Бейсике).
  • Эмуляция видеотерминала, совместимого с "Электроника 15ИЭ-00-013" ("фрязинским дисплеем"), подключенного через последовательный интерфейс "Устройство согласующее ПЕЛ 2.240.001".
  • Отладчик основной системы команд "App Debugger": просмотр содержимого ОЗУ в виде дизассемблера и шестнадцатеричного дампа, просмотр содержимого регистров ЦП, установка точек останова по чтению команды, пошаговое выполнение программы.
  • Отладчик микрокода "Rope Debugger": просмотр содержимого части ПЗУ в окрестности выполняемой микрокоманды (текущий адрес и ближайшие возможные точки перехода), либо адреса, введённого пользователем (микрокоманда выводится в символьном виде с упрощением выражения, вычисляемого АЛУ), просмотр содержимого регистров АЛУ, регистров интерфейса ввода-вывода, регистров управления ОЗУ.
Небольшая заметка об эмуляторе (с примерами работы) в моём ЖЖ: https://xlat.livejournal.com/776001.html
Последний раз редактировалось xlat 11.03.2021,10:57, всего редактировалось 1 раз.

Sinus
Full Member
Сообщения: 229
Зарегистрирован: 07.08.2016,17:30
Откуда: СПб

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

Эмулятор ЭВМ "Электроника Д3-28"

Сообщение Sinus » 20.02.2021,22:18

xlat & maddev, спасибо вам большое-пребольшое, ну просто преогромное)) Теперь на вашем эмуляторе Д3-28 можно хорошенько изучить эту машинку.

Уже осуществил мечту: посмотрел, что выдаёт тот тест, в котором некий "Бэйсик ДВК НЦ", показанный в Википедии на фото терминала 15ИЭ-00-013, насчитал смешную чушь (а реальную-то Д3-28, с которой я имел дело в молодости, в то далёкое время я не догадывался тестировать подобным образом). В вашем эмуляторе Д3-28 тест дал хороший результат! Вот скриншоты (раньше я помещал их на ipic.su, но теперь тот сайт не работает, поэтому картинки помещаю на свой почтовый "яндекс-диск"; прошу извинить, смотреть их там не очень-то удобно, но пока это место хранения представляется мне более надёжным, чем чужие сайты):

листинг и результат теста в "БЭЙСИК Д3-28 3А TDM-L"

начало трансляции с листингом в "FORTRAN-5M"
окончание и результат теста в "FORTRAN-5M"

листинг, компиляция и результат теста в "ВЫСТРА"

Как видим, в этом тесте все три программы (Бэйсик, Фортран и Выстра) на Д3-28 дали для обоих способов расчёта значение примерно 674512 - оно сравнимо с 674530, выдаваемым Маткадом на относительно современном ПК, т.е. Д3-28 - серьёзная была ЭВМ :-)
Последний раз редактировалось Sinus 16.12.2023,22:06, всего редактировалось 1 раз.

Sergei Frolov
Advanced Member
Сообщения: 2820
Зарегистрирован: 05.07.2003,15:30
Откуда: Питер
Контактная информация:

Конкурсы

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

Эмулятор ЭВМ "Электроника Д3-28"

Сообщение Sergei Frolov » 20.02.2021,22:26

А посчитайте 1.0000001 ^ (2 ^ 27)
Собираю в коллекцию советские калькуляторы и компьютеры.
Мой сайт: http://www.leningrad.su/museum/ ICQ=12370106 https://t.me/retrocomps

Sinus
Full Member
Сообщения: 229
Зарегистрирован: 07.08.2016,17:30
Откуда: СПб

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

Эмулятор ЭВМ "Электроника Д3-28"

Сообщение Sinus » 20.02.2021,23:07

Ну да, так она не смогла. Всё равно я её люблю)

Sinus
Full Member
Сообщения: 229
Зарегистрирован: 07.08.2016,17:30
Откуда: СПб

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

Эмулятор ЭВМ "Электроника Д3-28"

Сообщение Sinus » 21.02.2021,03:26

P.S. Вернее: так сосчитать не смог Бэйсик - выдал ошибку 128, что означает "некорректная операция"; и Фортран не смог - он тоже выдал некие номера ошибок. А Выстра смогла!

P.P.S. Если Вы под "а посчитайте ..." подразумевали посчитать не на Д3-28, а точнее (типа "вручную") то посчитал разложением полинома F(x)=(1+x)^N в сумму по степеням x, где x=10^(-7), N=2^27=134217728. Результат с точностью 4 цифры после запятой: F=674530.4707 (Этот ответ для искомой суммы членов x^n стабилизируются, начиная с n=43.)

(По-моему тот факт, что Д3-28 с программой "Выстра" смогла в этом примере правильно выдать старшие три цифры результата, явно характеризует эту систему с гораздо лучшей стороны, чем упоминавшийся выше странный результат от "Бэйсик ДВК НЦ".)

P.P.P.S.
Кстати, "разложение в степенной ряд", т.е. суммирование первых членов полинома F(x)=(1+x)^N по возрастающим степеням x, дает и на машине Д3-28 десять верных десятичных цифр (6 до запятой, 4 после), причём - и счётом по программке в машинных кодах с арифметикой в десятичных ячейках, и счётом по программке на "Бэйсике Д3-28". (В следующих за 10 младших разрядах сохраняется ошибка, но это, наверное, уже неизбежность при 12-разрядной арифметике Д3-28).
► Показать
Последний раз редактировалось Sinus 16.12.2023,22:48, всего редактировалось 2 раза.

Sergei Frolov
Advanced Member
Сообщения: 2820
Зарегистрирован: 05.07.2003,15:30
Откуда: Питер
Контактная информация:

Конкурсы

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

Эмулятор ЭВМ "Электроника Д3-28"

Сообщение Sergei Frolov » 24.02.2021,22:06

В принципе, этот тест несколько искусственный. Как и тест forensics http://www.rskey.org/~mwsebastian/miscprj/models.htm
Последний, кстати, даёт большее представление о внутренней точности. Тест 1.0000001 может плохо работать всего лишь из-за недостатка разрядов.
Собираю в коллекцию советские калькуляторы и компьютеры.
Мой сайт: http://www.leningrad.su/museum/ ICQ=12370106 https://t.me/retrocomps

Sinus
Full Member
Сообщения: 229
Зарегистрирован: 07.08.2016,17:30
Откуда: СПб

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

Эмулятор ЭВМ "Электроника Д3-28"

Сообщение Sinus » 25.02.2021,19:01

Тест forensics, Бэйсик Д3-28: 9.000000001

Не знаю, интересно ли это, но вот ещё такая инфа: в заводском тесте "028" для Д3-28 выделяются два теста мат. команд - с циклом и более простой без цикла (дал ссылки на txt-файлы с программками этих тестов).

В первом из них переменная цикла пробегает 40 значений от -98 до 97 с шагом 5. В теле цикла она заносится в регистр X и затем его содержимое последовательно изменяется командами 10^X, корень квадратный из Х, смена знака Х, X^2, см. зн. Х, 1/X, см. зн. Х, 1/X, lnX, e^X, lgX. В роли результата в цикле накапливается (суммируется) абсолютная величина разности Х и исходного значения переменной цикла.

Перед индикацией результат заносится в Y, а в Х заносится ожидаемое значение накопленной в цикле погрешности: X = 0.888·10^(-8). Если Y=X, то тест выполнен успешно.

Во второй программке (это более быстрый тест) в регистр X заносится встроенная в Д3-28 константа "пи=3.14159265359" и затем содержимое регистра Х последовательно изменяется командами 1/X, корень квадратный из Х, 10^X, e^X, lnX, lgX, X^2, sin, arcsin, cos, arccos, tg, arctg, 1/X.

В регистр Y заносится ожидаемый результат 3.14159265370. Перед индикацией значения из X и Y меняются местами, т.е. Y = результат, Х = 3.14159265370; если Y=X, то тест выполнен успешно.

(Разумеется, эмулятор https://xlat8086.com/d3-28/ (на данный момент), как и исправная Д3-28, выполняет эти тесты успешно, т.к. справляется с полным 028-тестом "Проверка системы команд и ОЗУ".)

UPD 7.08.2021:
Добавил ещё картинки. Они по отношению к эмулятору Д3-28 оффтопные, но помогают сравнить в тесте "1.0000001" машину Д3-28 с примерно такими же по сложности машинками примерно той же эпохи (1980-е).
► Показать
Последний раз редактировалось Sinus 17.12.2023,00:09, всего редактировалось 6 раз.

dps
Advanced Member
Сообщения: 5734
Зарегистрирован: 06.04.2008,13:52
Откуда: СПб

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

Эмулятор ЭВМ "Электроника Д3-28"

Сообщение dps » 16.03.2021,11:47

Круто и интересно. А то у меня Д3-28 есть разные. Пользоваться пока не научился.
Обмен, продажа, покупка: https://www.phantom.sannata.org/viewtop ... 56#p511056
Мои процессорчики: viewtopic.php?f=19&t=2447
Моя группа ВК https://vk.com/club192634480

Sinus
Full Member
Сообщения: 229
Зарегистрирован: 07.08.2016,17:30
Откуда: СПб

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

Эмулятор ЭВМ "Электроника Д3-28"

Сообщение Sinus » 30.01.2022,04:05

Не в обиду создателям эмулятора (за эмулятор ещё раз большое спасибо, maddev & xlat!) выскажу-таки пожелания. Понятно, что главной целью была эмуляция Д3-28. Но и совместимость с фрязинским дисплеем важна: желательно её улучшить, т.к. общедоступный софт - для Д3-28 в основном именно с фрязинским дисплеем. Конкретно:

1. Для комфортной работы с Фортраном и Выстрой, по их описаниям, нужны клавиши ПС и ВК; одной Enter недостаточно.

2. Коды, посылаемые дисплеем в Д3-28, должны быть 7-битными - с равным нулю старшим битом (ненулевым битом "чётности" портится, в частности, приём в Д3-28 кодов чисел из дисплея).

3. Забой с кодом 0715 нужен отображаемый - это элемент "графики" в некоторых программках.

4. Ну и ещё такая мелочь: нолик желателен перечёркнутый, чтобы в листингах его не путать с буквой О.


// А сейчас, с 8-битными кодами и без символа забоя, в эмуляторе не работает мой любимый продукт - фортрановская демо-игра 1WAR, хорошо работавшая на реальном железе.

Не знаю, может быть, конечно, правильнее не эмулятор подстраивать под проги, а программки под эмулятор. Переделанная под существующий сейчас эмулятор демо-игра 1WAR здесь (она работоспособна и в имитаторе, в нём её листинг можно распечатать в текстовый файл):

https://disk.yandex.ru/d/bhJjyHNNAWeFPA
(файл 1war_kp-50641_n-4517_fortran-5m_ip_rp.txt)

Запуск 1WAR в эмуляторе https://xlat8086.com/d3-28/ :

. Скачиваем к себе в ПК файл 1war_kp-50641_n-4517_fortran-5m_ip_rp.txt

. В главном меню эмулятора выбираем пункт "Load tape", в открывшемся диалоге указываем загруженный в предыдущем пункте файл.

. на изображении пульта нажимаем СЛ . Затем нажимаем S.

. В главном меню эмулятора выбираем пункт "Terminal". В окне эмулятора терминала будет видна буква R, означающая готовность (Ready).

. Клавиатуру ПК переводим в режим ru, включаем CapsLock. И нажимаем С, это команда "счёт по программе".

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

Летающая точка это истребитель, уничтожающий вражескую эскадрилью. Клавиши управления: 7 - налево, 8 - направо, 9 - вверх, 6 - вниз; 1, 2, 3 - выбор скорости; 0 - выход из игры. Выходить надо сразу после уничтожения последнего врага. "Штрафные очки" начисляются за удары о границы игрового поля, "время боя" это количество шагов; чем эти числа меньше, тем более хорошим считается результат.

Скриншоты (ссылки на ipic.su): начало и конец игры. Результат там у меня так себе, старый я стал, мало тренируюсь :-) У молодёжи получится лучше.

Впервые о Фортране для Д3-28 и об этой игре у нас речь шла здесь; подробности, в том числе правила игры на стр. 8: D3-28_Fortran_program__2_examples.pdf. (Отличие новой версии (v2) от приведённой там в листинге: в строке 14 - новое С=9216, чтобы вместо забоя рисовался значок с кодом 0204, в строку 65 я добавил коды D2 7F B8 23 перед 4D 49 для обнуления бита чётности, и соответственно в строке 67 - новое D=D-32560.)

Для желающих редактировать программку, например, - изменить клавиши управления, или - сочинить новую программку на Фортране (ну, мало ли... вдруг такие люди найдутся), в том же файле 1war_kp-50641_n-4517_fortran-5m_ip_rp.txt вторым блоком идёт сам FORTRAN-5M; контрольная сумма = 138177, код END на шаге 10414. А за ним - фортрановские записи ИП и РП 1WAR v2. Т.е. этот txt-файл - не одна программка, а библиотека программ. Параметры фортрановских записей можно увидеть командой просмотра каталога МЛ после запуска FORTRAN-5M. Просмотр каталога МЛ, загрузка и листинг ИП или редактирование, трансляция ИП в РП и запуск - всё делается по правилам FORTRAN-5M.

Загрузка самого Фортрана: С, СЛ, С. Запуск: нажимаем два раза кнопку "треугольник" и далее действуем согласно описанию FORTRAN-5M (имеющемуся в pdf с "руководством к имитатору", или здесь). //


5. Ещё пожелание: пусть эмулятор позволит сохранять на ПК результаты - листинги, редактированные или вновь сочинённые программки.

Ну и заодно о нюансах публикации материала в ЖЖ:

Cсылка на "заводскую документацию" там сейчас дана к Бейсику с контрольной суммой 157107, не к тому Бейсику ТДМ, который в ЖЖ предлагается скачать.

"Игра Тараканьи бега" (файл bega__5prg__bas.txt) - не игра, а "демо", причём сам этот файл это библиотека с 5 бейсик-программками, взятая из zip-архива с имитатором. К сожалению, в ЖЖ этот файл оторван от pdf с обучающим "руководством" из того же архива. В этом pdf в разделе "Перечень программ в txt-папке, прилагаемой к данной версии имитатора" рассказано о назначении и о содержимом файлов; говорится там и о способах загрузки. Каталог библиотеки с пятью программками содержится в пятой программке "Каталог" и выглядит он вот так.

В частности, файл bega__5prg__bas.txt содержит бейсик-программку SINUS. Её рекомендуется загружать в имеющемся в архиве с имитатором Бейсике-132259, чтобы шрифт не искажался. После запуска она выводит на экран (без всяких "бинарников") вот такой текст. Ссылка на radioscanner, насторожившая одного из комментаторов в ЖЖ, дана всего лишь для сравнения с фото листинга и с результатом работы подобной программки в реале, на ЭВМ Синуса. Полагаю, я сделал всё-таки познавательные файлы - обучающие работе с Бейсиком и с другими языками на Д3-28, и всё было мной объяснено в сопровождающем pdf; "пасхалки" в файлах Синуса авторам комментария в ЖЖ померещились :-)

Вообще, на мой взгляд, упомянутая выше игра 1WAR и сам Фортран - компилятор, позволявший создавать для Д3-28 такие быстрые рабочие программы (РП) как 1WAR, - интереснее, чем Бейсик c "тараканьими бегами" (хотя и в файле bega__5prg__bas.txt есть интересный сюжет: программка ХАОС-1; текст с пояснениями к ней содержится в ней самой).
Последний раз редактировалось Sinus 17.12.2023,00:50, всего редактировалось 2 раза.

Аватара пользователя
xlat
Full Member
Сообщения: 245
Зарегистрирован: 26.06.2018,20:19
Откуда: Novosibirsk
Контактная информация:

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

Эмулятор ЭВМ "Электроника Д3-28"

Сообщение xlat » 01.02.2022,16:26

Sinus, спасибо, учту. В ближайшем обновлении не обещаю (планировалось на этой неделе), но как-нибудь в будущем - реализуем.

Аватара пользователя
xlat
Full Member
Сообщения: 245
Зарегистрирован: 26.06.2018,20:19
Откуда: Novosibirsk
Контактная информация:

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

Эмулятор ЭВМ "Электроника Д3-28"

Сообщение xlat » 01.02.2022,18:39

Sinus писал(а): 30.01.2022,04:05 1. Для комфортной работы с Фортраном и Выстрой, по их описаниям, нужны клавиши ПС и ВК; одной Enter недостаточно.
ВК - Enter (Return), ПС - Ctrl-J

Ответить