- Эмуляторы БК0011М под Win7
-
? Марат Гимаев (МиР corp)@ - 12.03.2012 15:14
Подскажите, пожалуйста, какие эмуляторы работают лучше всего по Windows 7?
Какие хорошо работают в палитрами - чтобы демки нормально работали?
А то начитался тут - настольгия поперла, захотелось вспомнить.
БКшка сама есть, но в Самаре, а я в Москве уже третий год живу.
-
? SKcorp. - 12.03.2012 16:25
О! Какие люди!!! Эмуляторы - фигня. Ни один нормально не пашет со всеми прогами.
-
? Voland@ - 12.03.2012 22:08
>> какие эмуляторы работают лучше всего по Windows 7?
Попробуйте Emul3000.
-
? foot - 13.03.2012 00:23
Да с палитрами любой эмулятор нормально работает.
И запускается 99% программ.
Но ни в одном эмуляторе для навороченной демки(типа инсульта) не будет картинки соответствующей реальной БК.
И дело тут совсем не в палитрах.
-
? Александр...@ - 13.03.2012 01:03
Правильно, дело не в палитре, а поллитре. :P А если серьезно, то пока лучше Савельевского эмулятора под Dos'ом пока ничего близко к реальному БК не лежало.
-
? Ал-р - 13.03.2012 04:26
Даже в "уже старинной ХР" нет Dos (теперь даже мало кто знает что это такое)
-
? foot - 13.03.2012 10:25
Ал-р>>Даже в "уже старинной ХР" нет Dos (теперь даже мало кто знает что это такое)>>
Вы его просто не нашли. Зайдите ПУСК->программы->стандартные->Коммандная строка.
-
? alex savelev@ - 13.03.2012 10:26
под WinXP 32bit DOS есть) полный MSDOS v7. и БК эмулятор работает отлично, с доп. софтом конечно (EMSMAGIC) но тем не менее. Я пользуюсь под WinXP своим эмулятором постоянно, и на домашнем 4-х ядерном ксеоне, так и на нетбуке (Asus EEPC901). Единственно что на асусе нет звука в демках - звуковая плата несовместимая(
-
? Александр...@ - 15.03.2012 01:19
@Ал-р: Не смешите. DosBox по-моему никто не банил на гугле и в Виндузе. Я даже не заикаюсь про виртуальные машины, включая уже готовые образы и массу пошаговых инструкций, как запустить и настроить оные. Я согласен, что "правильный" эмулятор должен запускаться под Виндузой нативно. bkbtl ИМО ближе всех подошел к удобству и точности эмуляции. Но автор, по-моему больше озадачен портированием его на всевозможные приставки, чем доводом до логического конца. ;)
-
? bk_owner - 15.03.2012 02:20
Александр, вы сами-то пробовали эмулятор Савельева под DosBox-ом или виртуалками запускать? Он ведь даже на реальном железе не всегда нормально идет, не говоря уж об эмулируемом. Что касается bkbtl, то пока о точности там говорить не приходится. Много чего не работает (особенно на БК-0011М), звук спикера ужасно хрипит, AY нет, сильно приблизительные тайминги (от Зальцамана) и т.п. С тем же "Эмулятором-3000" или тем же "Emu" (Башкирским) он и рядом не лежал пока, какое уж тут "ближе всех".
-
? Марат Гимаев (МиР corp) - 15.03.2012 20:07
Я не совсем верно написал про палитры. Я имел ввиду работу в экраном. Помнится Мельников писал свой эмулятор и много внимания уделял тому, чтобы эмулятор хорошо работал с экраном - корректно отслеживал ход луча. У него в эмуляторе (который он так и не зарелизил) работали все его демки. Это не инсульт, но все-таки caroline.. :-)
-
? alex savelev@ - 15.03.2012 21:37
не нужны всякие там досбоксы итд чтобы запустить мой эмулятор под winxp.
И так работает, в нативном режиме. Давайте я дам в этот форум линк на сборку эмуля специально заточенную под XP? сам ей пользуюсь и работает она
вообще на всяком даже экзотическом железе. По поводу ELESIM'а, как я понимаю Марат имет в виду именно его - да там очень правильная эмуляция
экрана, практически все демки работают правильно. К сожалению недостатки серьезные - слишком низкая вертикальная частота развертки, переделанный CGA режим. На современном ТFT мониторе врядли пойдет да еще если под Win7
или вистой запускать. Увы.
-
? Patron - 15.03.2012 22:53
У меня вопрос насчёт правильной эмуляции видеосигнала.
Если есть отдельный эмулятор видеокнтроллера и отдельный эмулятор видеомонитора, то какой АБСТРАКТНОЙ информацией они должны обмениваться для максимально точной симуляции реального взаимодействия реального видеоконтроллера с реальным видеомонитором ?
Немного поясню. Нет никакой нужды синхронизировать эмуляцию контроллера и монитора в реальном времени. Если в реальном времени эмулятор монитора выводит 50 кадров в секунду - вопрос только в том, насколько точно каждый из этих выводимых кадров соответствует оригиналу. А как именно это достигается - никого волновать не должно.
Многие разработчики эмуляторов пытаются в реальном времени воспроизводить работу эмулируемых устройств, максимально точно синхронизируя "каждый чих" эмулятора в реальном времени.
Но на деле, происходящее "между кадрами" - не играет заметной роли ( буквально :). Главное, чтобы каждый следующий симулируемый кадр максимально точно совпадал с оригиналом, а как именно это достигнуто - разницы нет.
Поэтому, если пара из эмулятора процессора и эмулятора видеоконтроллера "ударными темпами" отработали все шаги, назначенные им на эту 1/50 долю секунды, за ( например ) миллисекунду, а потом "улеглись спать", то какую именно абстрактную информацию должен за эту миллисекунду передать эмулятор видеоконтроллера эмулятору монитора, чтобы тот ( в свою очередь ) мог за следующую миллисекунду сгенерить тот самый кадр, который будет показан на экране через 1/50 секунды и который будет МАКСИМАЛЬНО схож с оригиналом ???
-
? Александр...@ - 15.03.2012 23:19
@bk_owner: Да, запускал под Dosbox на старом компьютере. Я согласен что bkbtl недоделан, о чем упомянул в тексте.
@alex savelev: Да, под XP то его еще можно запустить, а под Win'7 64 - дудки. Что бы я сделал, так создал виртуальную машину, на базе стандартного ДОС'а или DosBox'а со сборкой, которая работает из коробки.
-
? Александр...@ - 15.03.2012 23:28
Кстати, об эмуляторах. bkbtl лежит в исходниках. Допишите AY сами. :P Автор тоже доступен. :)
-
? Марат Гимаев (МиР corp)@ - 16.03.2012 13:05
@alex savelev жду ссылки на версию XP:-)
-
? ys05 - 17.03.2012 00:14
>У меня вопрос насчёт правильной эмуляции видеосигнала
Чтобы точно отображать то, что происходит на экране, надо при формировании кадра в эмуляторе видеоконтроллера эмулировать привязку временной диаграммы чтения экранного ОЗУ видеоконтроллером к временной диаграмме работы процессора. То есть изображение должно формироваться не из мгновенного "скриншота" всей видеопамяти, а пословно, в соответствии с временной диаграммой генерации видеосигнала. В видеосигнале за 1/50 секунды выводится 312.5 строк, из которых на 256 (наверное, средних) выводится изображение. 1 строка занимает 64 мкс, за которые выводится 512 точек (32 слова), но там тоже должны быть неиспользуемые поля по краям. Если исходить из доступной информации, что видеоконтроллер отдает экрану 48 циклов доступа к памяти за время строки 64 мкс, а отображать надо только 32 слова, то можно предположить, что, из 48 циклов в средних 32 читаются слова видеопамяти, а в начале и в конце строки по 8 неиспользуемых циклов отводится на поля.
-
? Patron - 17.03.2012 12:42
1. Я сообразил, что в эмулятор монитора можно передавать уже готовую матрицу экранного изображения кадра, а синтез кадра полностью осуществлять в эмуляторе видеоконтроллера.
2. Вообще-то в PAL/SECAM предполагается 576 видимых строк ( два поля по 288 строк ) и пропорции передаваемого изображения 3x4. А это значит, что в виде массива "квадратных" точек - пропорциональное изображение такого типа имеет размер 576 ( 288 ) х 768. Легко заметить, что 768/16 == 48.
Конечно, это касается только "абстрактных квадратных точек". Поскольку видеосигнал строки непрерывен - в нём можно вывести абсолютно произвольное число точек в произвольных позициях строки, никак не привязанных к "сетке квадратных пропорций". Но чтобы при выводе с компьютера, например, квадрата 4х4, видимая на экране длина его вертикальных и горизонтальных сторон была одинаковой - каждая выводимая в строке точка должна выводится с привязкой к "квадратной сетке".
-
? Александр...@ - 18.03.2012 09:59
Вопрос только, зачем все это нужно эмулировать? Только ради дем?
-
? Patron - 18.03.2012 13:00
Ради научно-инженерного интереса.
В принципе, сигнал видео позволяет:
1) задавать для каждого поля произвольное смещение первой строки от начала экрана и каждой следующей строки от предыдущей;
2) задавать для каждой строки произвольное смещение первой точки от начала строки и каждой следующей точки от предыдущей;
Интересно, какие из "дополнительных возможностей" сигнала видео позволяют использовать реальным программам реальные видеоконтроллеры.
Краем уха слышал, что какие-то демки то ли меняют режим видеоконтроллера перед выводом каждого поля, то ли ещё что-то "нестандартное" делают, но что именно - вот вопрос..
-
? alex savelev@ - 18.03.2012 13:16
ненадо путать IBM PC VGA crtc и БК. С точки зрения бк-шных программ возможности работы с видеоконтроллером крайне ограничены. вот VGA - там да, практически возможны любые фокусы, если лезть напрямую в регистры 3d4/3d5. Изменение горизонтальной частоты развертки hsync в диапазоне 15khz - 60khz, включение режима interlaced, возможность разложить фрейм буффер на 2 или 4 битовые плоскости, и это только лишь небольшие простые примеры того что можно сотворить. Почитайте описание стандарта IBM VGA и Вы удивитесь.
-
? Patron - 18.03.2012 14:25
Но когда люди говорят, что некоторые демки для БК неправильно работают на многих эмуляторах, то что именно имеется в виду ?
И какие причины к этому приводят, если возможности по взаимодействию программ с видеоконтроллером БК крайне ограничены ?
-
? alex savelev@ - 18.03.2012 15:40
Patron, когда так говорят, имеется в виду рассинхронизация с 50hz вертикальным рефрешем экрана. Крайне мало эмуляторов БК11м умеют это, тем более, под winxp/win7. Причины простые -- несовершенство эмуляторов. Кроме того, некоторые демки во время вывода всяких видеоэффектов для более точного тайминга еще и используют таймер ВМ1 (регистры 177706,177710, 177712). Пример - MBOX
-
? Patron - 18.03.2012 16:00
Насколько я понимаю, единственный способ "программного влияния" на видеоконтроллер - изменение его режимов.
Если формирование полей контроллером не зависит от режима, то переключая режим в конце ( или в середине ? ) вывода некоторых строк поля ( вплоть до каждой строки ) - можно добиваться оригинальных эффектов.
Но как именно реагирует видеоконтроллер БК на переключение режимов "внутри поля" - кто-нибудь это тестировал ???
-
? alex savelev@ - 18.03.2012 16:58
момент окончания горизонтальной развертки и начала гор. обратного хода луча для БК-шной программы выловить крайне сложно. Просто потому что нет никаких регистров / битов откуда можно считать данную информацию. Я конечно не занимаюсь написанием демок для БК но думаю это реально только с использованием ВМ1 таймера, в "точном" режиме. Поэтому, я вам крайне не советую залезать в эти дебри и забыть о данных делах. Оно того не стоит =)
-
? Patron - 18.03.2012 17:09
Но если БК-шные программы сами не могут синхронизироваться со сменой полей, а значит понятия не имеют, какая именно строка отображается контроллером на экране в какой момент времени - разве несинхронность смены полей в эмуляторе и в реальной БК может представлять проблему ?
Или проблема "плохих" эмуляторов только в том, что они выводят не точно 50 кадров за 1секунду "эмулируемого" времени ???
-
? anonymous - 18.03.2012 17:10
Patron, в БКшке нет переключения режимов видеоконтроллера никаких, доступных программисту. Режим вывода определяется штырьками разъемов, с которых выводится видеосигнал. Все, что доступно программисту - это аппаратный скролинг, выбор номера отображаемого в текущий момент экрана и смена палитры, еще можно отключить вывод 3/4 кадра с отображением в верхней четверти адресов нижней четверти полноэкранного режима. Это все. А у 10ки нет и палитр, нет и второй экранной области.
-
? anonymous - 18.03.2012 17:12
Посчитать, какая строка отображается можно по таймерам, 50-герцовый срабатывает от кадрового синхроимпульса, а далее - как сказал alex savelev.
-
? Patron - 18.03.2012 17:53
Т.е. всё, что может сделать демка на БК-0010 - это в любой момент времени точно определить положение "позиции вывода" на экране ( и в буфере кадра ) и, в зависимости от этого - как-то изменить или содержимое видео-ОЗУ, или значение в регистре 177664..
На мой взгляд, принципиальных сложностей с эмуляцией подобных "дебрей" быть не должно.
А всё, что нужно на практике для точной эмуляции работы видеоконтроллера БК-0010 - считывать очередную "правильную" ячейку видеобуфера в строго определённый момент времени.
...
Вопрос: Изменение значения в регистре 177664 оказывает мгновенное влияние на изменение позиции чтения в видео-буфере или только при переходе к формированию новой строки кадра ?
Логично, если содержимое шинного буфера 177664 копируется в "индексный регистр" контроллера во время обратного хода строки.
-
? Patron - 18.03.2012 18:14
Правда, логичнее всего изменять начальную позицию отображения кадра в видеобуфере только перед началом вывода очередного кадра..
...
Но если программы БК так сильно ограничены в возможностях влиять на формирование изображения, то как знание точного положения позиции вывода на экране и в буфере может помочь в создании каких-то необычных "эффектов" ?
Чем изображение на экране при запуске такого рода демок на реальной БК-0010 отличается от "обычного" ???
-
? wm - 18.03.2012 19:58
Если изменять текущую палитру перед выводом на экран строго определенных линий сканирования, то можно добиться многоцветных эффектов (multicolor) - те отображать на экране больше цветов, чем положено - с разной палитрой в разных строках. Этим в БК демки в основном занимались, на других старых компах-консолях это и в играх достаточно часто использовалось. Демка "Insult GigaDemo" на БК с этой точки одна из самых показательных (плюс несколько других). Причем синхронизируется она не по таймеру, а после возникновения прерывания вертикальной синхронизации гонит блок кода из повторяющихся инструкций MOV etc. с периодическими изменениями палитры. Т.е. изменение палитры в нужной строке зависит от точности эмуляции таймингов инструкций CPU. Я ей как раз пробовал заниматься пару недель назад - в гостевухе моего сайта (http://xbase.ru/index.php?sovietpc) в самом верхнем сообщении есть несколько скриншотов с мультиколором в "Insult Gigademo". Правда, не факт, что правильных (пока), БК-0011М у меня нет их проверить, только БК-0010.01.
-
? wm - 18.03.2012 20:09
По вертикальному прерыванию и затем таймеру (недокументированному) синхронизируется тест времянок экрана от Sandro.
-
? gid - 18.03.2012 20:18
Необычные эффекты в большинстве своём выражаются в следующем:
экран условно разделяется на горизонтальные участки, содержимое которых отображается разными палитрами, это так называемый "мультиколор".
Т.к. мы можем примерно отследить по таймеру, какая строка экрана в данный момент прорисовывается лучом кинескопа, то в определённый момент переключаем палитру, и следующий горизонтальный участок уже отрисовывается другими цветами, потом снова переключаем палитру, и снова, и снова. В общем смысл, надеюсь, понятен.
Правда эти демки работают только на БК0011(М), а не на БК0010, на десятке из всех спецэффектов - манипуляции с регистром 177664.
Ещё можно, подобрав задержки и манипулируя значением регистра рулонного сдвига 177664 добиться эффекта, когда на экране образуется либо не прорисовываемый участок, либо прорисовываемый дважды, но это не столь эффектно и интересно.
Довольно близко к этому подошёл Александр Тишин со своим эмулятором на Яве BK2010.
Кстати, в ответ на первый пост - этот эмулятор отлично работает как под Win7, так и под Линуксом, лишь бы ява-машина была.
-
? Patron - 18.03.2012 20:36
По идее, если регистр 177664 копируется видео-контроллером БК-0010 во время обратного хода строки - то можно сделать на экране несколько "пустых" строк растра, можно сделать, чтобы две картинки чересстрочно "проезжали друг сквозь друга" по вертикали, но нельзя сделать в середине соседних строк растра "пустой" квадрат или другую фигуру.
Если же любое изменение регистра рулона сразу смещает позицию чтения в буфере, то тогда возможностей для манипуляций становится больше.
Так как на самом деле? В какой момент изменение регистра 177664 смещает позицию чтения в буфере - немедленно или только с началом вывода следующей строки растра ???
-
? wm - 18.03.2012 23:08
Сорри, не заметил, что вопрос конкретно про БК-0010. Там таки да, разве что скроллирование, поэтому тайминги подгонять нет особого смысла. Но демки-то вроде как писались в основном под 11М.
-
? gid - 19.03.2012 10:14
сделать, чтобы две картинки чересстрочно "проезжали друг сквозь друга" по вертикали тоже не получится, не хватает быстродействия, скорее всего, контроллера ВП1-037, т.к. в реале получается отчаянно мерцающее малопонятное нечто, по которому бегают, если удачно подобрать задержки, чёрные полосы не успевающего прорисоваться растра.
-
? alex savelev@ - 19.03.2012 10:55
177664 использовался демописателями весьма мало, т.к. толку от него немного.
Ну можно заранее подготовить фреймбуффер, потом сразу вывести готовую картинку. Вообщем все ну да еще рулонный сдвиг. Короче весьма редко в демках его пользовали.
-
? Patron - 19.03.2012 11:54
>> не хватает быстродействия, скорее всего, контроллера ВП1-037
Слегка не понял. Допустим, что изменение 177664 влияет на ВП1-037 только в начале каждой строки ( это было бы логично ). Тогда у нас есть время, равное времени вывода целой строки растра, чтобы изменить смещение позиции чтения в буфере, откуда ВП1-037 будет извлекать данные для формирования следующей строки. Поскольку временные смещения всех строк от начала кадра известны - можно легко управлять выборкой данных для каждой строки растра отдельно. ВП1-037 при этом будет работать как обычно, просто считывая слова буфера с учётом регистра рулона и формируя видеосигнал строки.
Другое дело, если изменение 177664 смещает позицию чтения в буфере растра НЕМЕДЛЕННО - вот тогда мы действительно получим мерцающие "огрызки" строк, но это никак не будет связано с быстродействием ВП1-037, который по-прежнему будет просто считывать слова буфера с учётом регистра рулона и формировать видеосигнал строки.
Вот почему так важно точно знать, в какой момент изменение 177664 смещает позицию чтения в буфере растра - немедленно или только перед началом вывода очередной строки.
-
? gid - 19.03.2012 14:39
не буду фантазировать, про ВП1-037 я никогда и ни в каких справочниках не встречал никакой информации, то ли это сверхсекретная разработка, то ли он просто никому не нужен, то ли справочники мне нужные не попадались, всё что я знаю о его работе получено методом тыка и экспериментами с регистром 177664.
Говоря про быстродействие, я имел в виду быстродействие формирования видеосигнала. С частотой 50Гц прорисовывается весь экран целиком (про режим расширенной памяти говорить не будем). И нельзя никак этот процесс прервать, и вообще никак нельзя управлять лучом ЭЛТ.
Значение регистра 177664 применяется скорее всего в начале формирования новой строки растра, т.к. я смотрел глазами, а не приборами, не буду утверждать что так и есть, но я видел только чёрные полосы не прорисовываемых строк.
А ещё более вероятно, и это только что пришло мне в голову, что новое значение регистра применяется только после полного формирования видеокадра, а чёрные горизонтальные полосы, которые я видел - это просто результат не совсем точной синхронизации формирователя видео БК и старого советского телевизора, к которому БК был подключен.
-
? Patron - 19.03.2012 15:33
Логичны оба варианта влияния 177664. Если ВП1-073 считывает его в начале каждой строки - видимый рулон экрана (по идее) должен быть более плавным, нежели при считывании в начале каждого кадра.
В принципе, совсем не сложно написать тест, который это всё проверит.
Нужно повесить на прерывание кадровой развёртки ( вектор 0100 ) подпрограммку:
MOV #1, R1
MOV #1000., R2
MOV #370, R3
MOV #177764, R5
MOV #V100, @#0100
...
V100:
MOV R1, R0
SOB R0, .-0.
MOV (R5), R4
MOV R3, (R5)
MOV R2, R0
SOB R0, .-0.
MOV R4, (R5)
RTI
Данная подпрограмма начинает свою работу после начала вывода кадра и заканчивается до завершения вывода кадра.
Поэтому, ( если используемое значение #370 смещает позицию чтения на "пустой экран" ) если подобрав значения R1 и R2 - можно добиться "выключения" одной или нескольких верхних строк растра - значит значение в регистре 177664 влияет на каждую строку, иначе - только на кадр целиком.
-
? Patron - 19.03.2012 15:50
Правда, надо в регистре 177664 ещё бит "сжатия экрана" учитывать..
Типа, если просто загнать туда 0370 - включится режим отображения на 1/4 экрана..
-
? alex savelev@ - 19.03.2012 18:09
Patron, тратить свое время на это совершенно бесполезно - по простой причине - нет БКшного софта или демок которые бы использовали такие вещи. Во всяком случае, мне неизвестна ни одна БК-демка с похожими эффектами. Поэтому, для эмуляции, нет смысла заниматся такой фигней. Потратить свою энергию и время попусту можно и на другое) Ну это дело хозяйское конечно. Хотите заниматся ерундой - дело ваше, вперед.
-
? SKcorp. - 19.03.2012 19:04
Insult и CAT используют режим РП и прокрутку рулона.
-
? Manwe - 20.04.2018 20:44
Кто-нибудь помнит что нужно записать в 177664, чтобы получился режим расширенной памяти, показывающий наверху экрана область с 70000 до 100000? Понятно, что 9-ый бит равен нулю, а в младших битах что?
-
? Manwe - 20.04.2018 20:51
Судя по дизассемблированному ПЗУ БК0010, это число 230:
¤
; режим РП
104770) MOV #70000,202 - конец экранного ОЗУ (100000-70000)
104776) MOV #10000,206 - размер экранного ОЗУ
105004) MOV #5000,210
105012) MOV #400,164
105020) MOV #230,@#177664
¤
http://vak.ru/doku.php/proj/bk/bk0010-monitor
-
? BD - 20.04.2018 21:21
Проще, иначе следить за скроллом
MOV #214,R0
EMT 16
--------------
MOV #230,@#177664 - установть режим РП
MOV #1330,@#177664 - установить режим полного экрана
-
? Alexander "Sandro" Tishin@ - 23.04.2018 04:02
#230 -- это если используем последние 4 КБ экранной памяти для картинки. Так-то рулон работает и в режиме уменьшенного экрана. И да, как раз демка Cat это использует, например.
¤
Это во-первых. Во-вторых, отключение экрана работает мгновенно. Поэтому режим показа каждой второй строки в нижних 3/4 экрана таки реализуем технически. Правда, не могу придумать, зачем.
-
? Lasoft / Excess team - 03.05.2018 21:10
Пожалуйста, уточните, как это мгновенно? Регистр смещения считывается один раз на старте отрисовки каждого кадра, так что это не совсем мгновенно ) вот экран и палитра переключаются да, мгновенно.
-
? Lasoft / Excess team@ - 03.05.2018 21:13
и ещё могу добавить, что примерно переключение палитры происходит раньше чем переключение экрана, вп-шка успевает примерно 8 точек отрисовать с новой палитрой и только потом переключает экран, для примера команда MOVB RN,(R0), где R0=177663
-
? Alexander "Sandro" Tishin@ - 06.05.2018 13:48
Мгновенно -- это сначит бит расширенного экрана отрабатывается для каждого слова. Фактически он просто бланкирует сигнал WTI, если я не ошибаюсь. К кадровому синхроимпульсу привязан только рулон.
¤
Задержка между переключением палитры и экрана может быть самая разная. Достаточно попробовать разместить команду в быстрой памяти, например, в ПЗУ. При исполнении из ДОЗУ вмешивается арбитраж доступа в память, что более-менее стабилизирует задержку.
- << Форум