Главная | Файловый архив | Музей | Статьи и 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
Печать
 
xoiss
Advanced Member


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

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

Ссылка


Дата регистрации на форуме:
30 окт. 2013
>> ... Назвал свою поделку имитатором, чтобы отличать от настоящих эмуляторов.
>> ... Подскажите, пожалуйста, на каком сайте или форуме можно было бы получить консультацию по азам программирования графики того типа, которая применяется в эмуляторах?

Уточняющий вопрос №1: что предполагается отрисовывать?
а) только текстовый режим "фрязинского" терминала (ну или плюс ещё и содержимое индикаторов X/Y самой машинки)
б) или же полномасштабное анимированное изображение с фотографической точностью

Если №1==(а), что в общем для Симуляции (Имитации) достаточно, то вполне хватит текстового (ну, в современном мире "псевдо-текстового") режима консоли. Разумеется, Вы не сможете так сделать символы попиксельно идентичными тем, которые отрисовывались на фрязинском экране, но как бы, наверное, это и не сильно требуется.
Соответственно, если можно, поясните, зачем Вы используете графику (или даже OpenGL ??). Если это только для (1) отрисовки "нестандартных" символов или (2) мигающего курсора, — то эти задачи можно решить существенно проще в текстовом режиме.

Уточняющий вопрос №2: какой язык программирования Вы выбрали (VC++6.0 ?? это - окончательный выбор?) и какую целевую операционку (Windows ME ?? или это был лишь Вынужденный выбор в связи с "VC++6.0").
Собсна, вопрос с управлением курсором (т.е. печать в произвольную область экрана и отрисовка мигающего квадратика) решается в зависимости от ответа на вопрос №2.

Соответственно, если Вы можете уточнить вопросы №1 и №2, возможно, я смогу Вам что-то порекомендовать более предметно.
Можете ответить здесь или пишите в личку — как Вам удобней.

----------

Заочно я бы рекомендовал для такой задачи, нетребовательной к скорости вычислений, взять язык Python (даже если Вы уже успели что-то написать на другом языке).
Там есть встроенный функционал для работы со строками, массивами, и более сложными структурами как словари и списки, что сильно упрощает код (в сравнении даже с C++/STL, не говоря уже о чистом C).
Для разработки и отладки можно использовать интегрированную среду PyCharm или, как вариант, Eclipse с плагином PyDev.
Для автоматизированных тестов можно взять библиотеку UnitTest или PyTest - на выбор. Такие тесты существенно упрощают (систематизируют) разработку вот задач, подобных Вашей.
Далее, для Python есть масса уже готовых библиотек, в частности, например, для работы с wav-файлами (что может быть актуально для симуляции записи на магнитную ленту), для "спрайтовой" графики (это может быть полезно для симуляции "натурной" картинки Д3-28) и пр. Для текстового режима (с курсорами и пр. конями) и для канвасной графики тоже есть полная поддержка.

// З.Ы. Разумеется, могут быть и альтернативные рекомендации. Эта - лишь моё личное мнение по данному вопросу.
Sinus
Newbie


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


Ссылка


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

№1. Что предполагается отрисовывать:

. машинку с табло X/Y, с индикаторами ПУ, ОП, ОМ и проч. Это уже сделано, анимация табло и индикаторов нормально работает; вроде, с этим проблем нет.

. текст "на экране фрязинского терминала", возникающий по ходу работы с Бейсиком и т. п., и в том числе "в автономном режиме терминала". Конечно же, для утоления ностальгии хочется видеть шрифт, именно похожий на настоящий, и чтобы вывод из программ шёл так, как в них запрограммировано, в 24 строки по 80 символов, и чтобы была служебная строка с таймером и с переключением системы команд терминала, поскольку оно влияет на формирование итоговой картины на экране, в частности, на отработку терминалом служебных команд АР2 Y y x, скроллинг и т.п.

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

№2. Какой язык я "выбрал": никакой... увы, не знаю языков, и уже старый я, медленно впитываю знания и потому не могу угнаться за вереницей современных языков и операционок... Применяю VC6.0 под WinME примерно в том же духе, как применял дэтришкин Бейсик 40 лет назад: задаю поштучно числовые переменные (они у меня все глобальные :-) составляю подпрограммы для нужных действий с ними, и всё: программа вызывает подпрограммы.

"Выбор" сам давно выбрался: однажды я наткнулся в интернете на "интро" и "демо" (Вы наверняка знаете, что это такое) и был ими буквально поражён; интерес к ним вывел меня на "лекции Ne-He", а в них предельно чётко пояснялось, как любой чайник может с нуля создать "проект" в VС6.0 с OpenGL, сам сделать окно, и рисовать в нём "сцену". И были в этих уроках готовые примеры, причём без неведомых мне ООП, классов, модулей: в каждом проекте - всего 1 файл .cpp, притом более-менее понятный! Как раз тогда же в сети запросто нашёлся архив с дистрибутивом VС6.0, да ещё и с MSDN впридачу (там ещё и VB6.0 был: в архиве почти вся MS Visual Studio 98 оказалась :-). А в компе у меня как раз была WinME (т.е. почти Win98), и студия 98 под WinME прекрасно встала и до сих пор прекрасно работает; берегу её, как зеницу ока.

Короче, вот что сподвигло меня взяться за имитатор: в уроках Ne-He было конкретно показано, как создать настоящее масштабируемое окно, как сделать свой собственный шрифт и печатать им в сцену любой текст, цветной, и который может всячески летать по экрану. В уроках Ne-He описаны функции (подпрограммы, как я понимаю) BuildFont(), glPrint(...), glCallLists(...) для выбора строк со шрифтами, так что в итоге оказалось очень просто имитировать вывод текста "на экран фрязинского дисплея". Сделал файл .bmp с желаемыми изображениями букв и курсора, а уж GL сама превращает его в текстурки для вывода на сцену. И аналогично моя прога, основанная на проекте Ne-HE, выводит из .bmp на сцену картинку машины и "печатает" на ней горящие либо погашенные светодиодики, и цифры на табло X/Y.

Готов даже смириться с невысокой скоростью вывода таким методом - она, как оказалось, зависит от размера окна, а его можно менять, и зависит от компьютера: на ноуте у меня всё рисуется в разы быстрее. Главная неприятность в том, что в новых Windows (говорю о тех, которые новее ME и XP SP2, но по-прежнему 32-разрядные) графические функции работают, по-видимому, не так, как в старых; может быть, мне не известны какие-то важные нюансы в правилах применения SwapBuffers() или что-то типа того... Под ME и XP SP2 всё удовлетворительно работает.

xoiss написал:
[q]
даже если Вы уже успели что-то написать на другом языке
[/q]

Дык уже без малого 400 кб кода в cpp-файле понаписал... Собс-но, почти всё сделано уже. Планирую теперь добавить имитацию вывода листингов на печатающее устройство (ТПУ), то бишь в текстовый файл; предстоит повозиться с имитацией прерывания УП1 и дэтришкинских команд PRINT, и надо придумать ещё как "отрывать бумагу" после распечатки и как делать "прокрутку", если не надо отрывать. Ну, и ещё планирую украшения добавить; типа чтобы можно было нажатием, например, F1 вывести на сцену изображение клавы терминала с индикаторами ЛАТ, НР и т.п., а повторным нажатием F1 чтобы выводился "хелп" - подсказка раскладки PC-клавиш по клаве терминала. Но это пока мечты; не знаю, дойдут ли до этого руки, уже подустал малость.

xoiss
Advanced Member


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

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

Ссылка


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

Sinus написал:
[q]
уводим ветку в оффтоп
[/q]


Так создайте отдельную тему по разработке симулятора! В обе темы можно будет запостить кросс-ссылку друг на друга.



Sinus написал:
[q]
Что предполагается отрисовывать
[/q]


Понятно... Ну, тогда это не ко мне, я с OpenGL графикой не работал. Не смогу подсказать.

По эмулятору "фрязинского" терминала есть отдельный проект — и, вроде, он уже работает:
http://zx-pk.ru/threads/20744-...0-013.html
Посмотрите — думаю, найдёте ответы на многие Ваши вопросы. Во всяком случае там есть прошивки знакогенератора, схемы и пр.
Конечно, было бы лучше его как-то использовать. :)


Sinus написал:
[q]
увы, не знаю языков
[/q]


Ох, лукавите! :)
Признайтесь, кто Вы!
Sinus
Newbie


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


Ссылка


Дата регистрации на форуме:
7 авг. 2016
xoiss
Новую ветку не буду создавать; обсуждать особенно нечего, да и интерес к этой машинке с её немногим имеющимся у нас ПО, как мы с Вами видим, далеко не общенародный :-)

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

А я не понял даже главных для меня азов - как в таких серьёзных эмуляторах строится изображение экрана; наверное, надо знать, как работает видеочип, его драйвер и сама операционная система, чтобы синхронизовать вычисленные видеосигналы в эмуляторе "железа" с развёрткой на реальном мониторе компа? Нагуглил исходники некоторых эмуляторов, поломал над ними голову, обнаружил, что за разумное время мне в этом не разобраться, и решил начать пробовать помаленьку на своём "уровне" знания/незнания.

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

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

1) В некоторых терминалах, входивших в комплект поставки именно с Д3-28, была специальная плата интерфейса ввода-вывода: она давала на выходе все нужные для Д3-28 параллельные сигналы (кстати, в интернете я не нашёл сведений о таком ИВВ, хотя он существовал, это факт, у меня даже есть его схема).

2) Выход такого ИВВ можно было подключать не прямо к Д3-28, а к магистральному расширителю УСО; терминал тогда мог работать в многопроцессорной системе.

3) Терминал без специальной платы ИВВ подключается по двум 2-проводным линиям к специальной плате (блок ИРПС АЦСКС-8-010) в составе УСО; и тогда тоже может работать в многопроцессорной системе.

4) Терминал без специальной платы ИВВ подключается к Д3-28 через специальный "чёрный ящичек" ПЕЛ2.240.001.

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

Но, как выяснилось, по схеме "чёрного ящичка" не понять, что он выдает при опросе "регистра состояния": четыре из восьми входов выходных мультиплексоров на схеме висят в воздухе! Опечатка? Нашёл в сети фото платы "чёрного ящика"; там, к сожалению, сфоткана только одна сторона платы, и на ней тоже четыре ножки микросхем мультплексоров никуда не подпаяны. Тогда я попросил коллегу с бывшей работы (сам-то я уже на пенсии) найти и сфотографировать плату со всех строн. Так оказалось, ёлки-палки, что эти 4 входа и впрямь в воздухе висят! Так вопрос и остался покрыт мраком, а как имитировать "регистр состояния" - пришлось подбирать методом тыка, пока Бейсик хоть как-то не заработал... Не уверен я и сейчас, что он правильно работает; например, в имитаторе пока не получается Бейсиком одновременно русский и латинский шрифты выводить (но это, может быть, уже связано не с "регистром состояния"; надо бы ещё поэкспериментировать).

>>Признайтесь, кто Вы!
Не, я не лукавлю; преподавал в политехническом институте физику, а на изучение программирования не хватило времени...
SKcorp
Advanced Member
Эксперт.

Откуда: Leningrad, USSR
Всего сообщений: 3020
Рейтинг пользователя: 2


Ссылка


Дата регистрации на форуме:
28 июля 2008

Sinus написал:
[q]
1) В некоторых терминалах, входивших в комплект поставки именно с Д3-28, была специальная плата интерфейса ввода-вывода: она давала на выходе все нужные для Д3-28 параллельные сигналы (кстати, в интернете я не нашёл сведений о таком ИВВ, хотя он существовал, это факт, у меня даже есть его схема).
[/q]


У меня на одном из терминалов с ИВВ на заднюю панель выведен разъем типа СНО58 - это не оно?
Sinus
Newbie


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


Ссылка


Дата регистрации на форуме:
7 авг. 2016
SKcorp
Да, может быть и оно. Марку разъёма не знаю, посмотрел сейчас в инете картинку СНО58 - вроде похож на то, что припоминается. У нас на работе к нему был подпаян плоский длинный многопроводной шлейф (с чередующимися белыми и зелёными проводами). Разъем был выведен на заднюю панель блока логики терминала, это точно.
dk_spb
Advanced Member


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


Ссылка


Дата регистрации на форуме:
16 сен. 2009

Sinus написал:
[q]
: отсутствуют её схемы и прошивки ПЗУ
[/q]

Схемы выкладывали на форуме.
Sinus
Newbie


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


Ссылка


Дата регистрации на форуме:
7 авг. 2016
dk_spb, извините; значит, я прозевал. Если работающие ссылки есть где-нибудь, напомните, пожалуйста.

А схему ИВВ для Д3-28 попробую на днях сфотографировать и, если получится, выложу. По схеме можно будет точно определить, тот ли это интерфейс.
dk_spb
Advanced Member


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


Ссылка


Дата регистрации на форуме:
16 сен. 2009
Я давал свои схемы Сергею Фролову, он их отфотографировал и выкладывал где-то на форуме.
Поскольку это были не сканы, я себе вроде даже и не скачал.
Думаю коллеги поделятся.


Sinus написал:
[q]
Вопрос-просьба к dk_spb. Вы упоминали о "родных" кассетах для Д3-28; понимаю, что у Вас нет времени и, может быть, нет интереса, для их оцифровки. Если при случае появится у Вас возможность и свободное время, то сфотографируйте, пожалуйста, этикетки этих кассет, если на них есть хоть какие-то надписи (или, может быть, получится просто списать такие надписи). Дело в том, что термин "родная" кассета или "кассета из комплекта поставки" очень неопределённый. Ведь было много разных комплектов поставки Д3-28 - с УСО и без, с дисплеем и без, для НИИ, для учебных лабораторий вузов или для цехов со станками с ЧПУ; и в каждом случае могло прилагаться разное ПО и разная документация к нему.
[/q]

Фото сделаю при случае, но там ничего интересного.
"Родная" кассета - из списка в И5М3.857.100 ЗИ.
Все остальное Вами перечисленное - комплекты не Д3-28, а чего-либо (например, 15ИПГ) с Д3-28 в составе. Но комплектность самой Д3-28 (точнее её исполнений) не менялась.
Sinus
Newbie


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


Ссылка


Дата регистрации на форуме:
7 авг. 2016
dk_spb
Понятно, спасибо.
<<Назад  Вперед>>Страницы: 1 2 3 4 5 ... ... 8 9 10 11 12 13
Модераторы: Atlas3000, Сурок, Tarus
Печать
ПОЛИГОН ПРИЗРАКОВ »   СТАРОЕ ЖЕЛЕЗО: HPC и калькуляторы »   Электроника Д3-28
RSS

Последние RSS
Куплю лотки для процессоров [ПК, ТК, Почта]
Настенные электро-механические часы стали сильно спешить
Продам HDD SCSI 50-pin, IDE Севастополь
Новодел ноутбук на 1806ВМ2, под RT-11
несколько вопросов о ПЛИС


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


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





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



Hosted by Compic