Главная | Файловый архив | Музей | Статьи и FAQ | Журнал "Downgrade" | Total Hardware'99 | Ссылки | Авторам | База данных | Конкурсы

Электроника Д3-28

ПОЛИГОН ПРИЗРАКОВ

Железные призраки прошлого - всё о старых компьютерах

Информация

Конкурс статей 2017 года завершен! Кто победил, можно узнать здесь.

ВНИМАНИЕ! При получении на e-mail оповещения о новом личном сообщении не отвечайте, пожалуйста, почтой. Воспользуйтесь личными сообщениями, иначе адресат не получит ваше послание.

ПОЛИГОН ПРИЗРАКОВ »   СТАРОЕ ЖЕЛЕЗО: HPC и калькуляторы »   Электроника Д3-28
RSS

Электроника Д3-28

Вопросы по этому "Калькулятору с кассетой"

Выводить сообщения

<<Назад  Вперед>>Страницы: 1 2 3 4 5 ... ... 8 9 10 11 12 13
Модераторы: Atlas3000, Сурок, Tarus
Печать
 
dk_spb
Advanced Member


Всего сообщений: 4329
Рейтинг пользователя: 3


Ссылка


Дата регистрации на форуме:
16 сен. 2009
Забыл добавить: про комплектность - сугубо IMHO.
xoiss
Full Member


Всего сообщений: 291
Рейтинг пользователя: 0

Репутация пользователя: 1

Ссылка


Дата регистрации на форуме:
30 окт. 2013

Sinus написал:
[q]
Дизассемблирование кусков Бейсика показало, что Бейсик опрашивает командами ввода-вывода "регистр состояния" интерфейсного устройства, пытается им управлять и тем самым Бейсик как-то выясняет тип подключеня терминала и тип терминала. Значит, нам нужно имитировать конкретное подключение; разбор вариантов показал, что, вроде, проще всего - 4-й способ.
[/q]


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


Откуда: СПб
Всего сообщений: 18
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
7 авг. 2016
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-тест (с громким названием "тест системы команд и ОЗУ" :-), то уж остальные дэтришкинские проги заработают автоматом. Оказалось фиг (притом, что с 028-тестом я возился всю осень, и, казалось бы, уже выудил в имитаторе все огрехи). Бейсик печатал начальный диалог, но затем тупо выдавал только двоеточие в ответ на любые попытки с ним общаться. Фортран тоже писал лишь начальные фразы, а потом выводил смешной вопрос "куда?", и на этом зависал. А у Выстры начальный диалог должен сводиться всего-то к одной букве "Ф", дык она, собака, даже этого не могла - сразу висла.

И только постепенно, по мере того, как мне удавалось находить в прогах места с очередным затыком, и методом проб и ошибок корректировать в имитаторе интерпретатор дэтришкиных команд, Бейсик стал работать (и то с нелепыми ошибками; например, я задаю ему В=1: PRINT B, а он пишет в ответ B=2). А Фортран и Выстра при этом всё ещё не могли запуститься. Пришлось дизассемблировать куски Фортрана, и когда после очередных опытов с командами в интерпретаторе Фортран наконец выдал полноценный начальный диалог, заглох Бейсик.

Вот так, отыскивая "кренделя" по очереди то там, то сям, я на днях обнаружил, что всё вдруг заработало. Запустил Выстру, гляжу и глазам не верю: она тоже работает! Это я Вам поясняю, почему я нынче такой счастливый: Бейсик наконец стал почти совсем послушным, и Фортран с Выстрой не только запускаются, но и компилят (а это же, наверное, не хухры-мухры :-) С радости я наделал скриншотов, и прибежал сюда делиться эмоциями. Но с графикой пока имею ложку дёгтя (динамика вывода строк в имитаторе медленная и появляются глюки под Win 7).
xoiss
Full Member


Всего сообщений: 291
Рейтинг пользователя: 0

Репутация пользователя: 1

Ссылка


Дата регистрации на форуме:
30 окт. 2013
ну, если всё работает — это здорово! большая работа
выкладывайте тогда скорее!! :)
shattered
Advanced Member


Всего сообщений: 1055
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
17 фев. 2008

Sinus написал:
[q]

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


Я один из тех ребят :) Как раз планировал окончательно отшлифовать эмулятор 15ИЭ (есть неудобства в работе клавиатуры). Спрашиваете — отвечаем:

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



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

---
"Of course it runs NetBSD"
b.darkness.ru
Sinus
Newbie


Откуда: СПб
Всего сообщений: 18
Рейтинг пользователя: 0


Ссылка


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

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

Вот архив с пробной debug-версией имитатора Д3-28, там есть инструкция в pdf-файле (и папка [txt] с программками для испытания, чтобы поштучно их не скачивать; в ней всё те же Бейсики, Фортран и т.п., которые уже выкладывались). После распаковки выйдет папка около 7.5 Мб; в ней exe-файл с прогой и папка [bmp] - необходимые, а pdf и [txt] можно перемещать. Установка не требуется:

https://yadi.sk/d/0aNJiQXb3GFqpg
d3-28_imitator_21-03-2017.zip
UPD: ссылку исправил уже второй раз; теперь, надеюсь, всё правильно.

Здесь "debug-проект VC6.0" с исходником; в архиве - те же необходимые графические файлы в папке [bmp], и есть pdf с пояснениями к cpp-файлу (а папки [txt] нет). После распаковки выйдет папка около 5 Мб:

https://yadi.sk/d/Q0q19Htg3GFZ5t
src_d3-28_imitator_21-03-2017.zip

( Всё это в папке "D3-28" (где и всё остальное), на яндекс-диске:
https://yadi.sk/d/lyMwL58zuExSD )

Да... Соберу волю в кулак и постараюсь разобраться всё-таки в правильных методах построения изображения. И ещё вопрос возник (в пояснении к проге написал о нём подробнее) - как делать так, чтобы процессор не гонял бы помногу раз одни и те же циклы, из-за которых он может перегреться...

Спасибо Вам ещё раз, что обратили внимание на Д3-28! Может быть, когда-нибудь, со временем, Вы сам или вместе с такими же настоящими программистами по-настоящему возродите в эмуляторах эту интересную машинку.
shattered
Advanced Member


Всего сообщений: 1055
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
17 фев. 2008

Sinus написал:
[q]
Беру длительный таймаут на самообразование
[/q]


Главное, что имитатор Д3 работает, а украшение (вывод на терминал) не столь важно :)


Sinus написал:
[q]
как делать так, чтобы процессор не гонял бы помногу раз одни и те же циклы, из-за которых он может перегреться...
[/q]


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

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

https://github.com/simh/simh/blob/master/VAX/vax_cpu.c#L1604 — проверка на пустой цикл
https://github.com/simh/simh/blob/master/sim_timer.c#L1399 — ожидание событий

---
"Of course it runs NetBSD"
b.darkness.ru
<<Назад  Вперед>>Страницы: 1 2 3 4 5 ... ... 8 9 10 11 12 13
Модераторы: Atlas3000, Сурок, Tarus
Печать
ПОЛИГОН ПРИЗРАКОВ »   СТАРОЕ ЖЕЛЕЗО: HPC и калькуляторы »   Электроника Д3-28
RSS

Последние RSS
пентиум овердрайв
Когда появились корпуса soic и чип тразисторы ?
(Россия)Игры для Nintendo DS
(Россия)Продаётся игровая консоль NeoGeo Pocket Color + игра
[СП-б, почта] Pen Pro 1M/Iwill DVD266: s370x2/ AGP/ DDR


Время выполнения скрипта: 0.0544. Количество выполненных запросов: 15, время выполнения запросов 0.0196


Партнёры: Компьютерный музей в Таллине | ЖЖ-сообщество | Таллин: Переулки Городских Легенд | Журнал "Downgrade"





Авторские права и условия копирования материалов



Hosted by Compic