- Достал БК 0011М из коробки, хотел собрать...
- [+] Старые сообщения (117)
-
? gid@ - 07.10.2014 21:12
[Грузит ядро процессора под завязку]
Ну не знаю. Старенький Athlon-64 X2 6000 грузит на 36%-50% На Athlon FX-8350 и Core i7-3630QM (на ноуте) загрузка проца вообще незаметна <10% в пиках.
[без всяких вопросов привязывает к себе расширение .bin]
Этот рудимент остался от первоисточника. Потому что сидит, краха программы не вызывает, я им всё равно не пользуюсь, так что и убирать смысла не вижу.
[К тому же не хочет их запускать по клику, пишет ошибку]
Этот рудимент к тому же утратил смыл, потому что проще всего все нужные бин файлы записать в образ дискеты и уже с неё запускать их в эмуляторе.
Если знаете как исправить, чтобы делалось именно так, как нужно вам - добро пожаловать в соучастники разработки.
Если нет - смиритесь.
-
? gid@ - 07.10.2014 21:18
>>? Дмитрий - 5 октября 22:33
[Либо хотя бы указывать как-нибудь, что последний билд такой-то, а ссылка пусть останется старой.]
Но ведь сейчас именно так и есть.
[А то может получиться так, что из-за отсутствия времени архив будет обновлен, а на странице данные о билде не будут обновлены.]
Это исключено. Все свои сайты я сперва не торопясь правлю на своём оффлайновом тестовом сервере. И только после того, как я буду удовлетворён результатом, копия отправляется на реальный хостинг.
-
? Аноним - 07.10.2014 21:53
>Ну не знаю. Старенький Athlon-64 X2 6000 грузит на 36%-50% На Athlon FX-8350 и Core i7-3630QM (на ноуте) загрузка проца вообще незаметна <10% в пиках.
¤
Я и говорю, ядро, а не процессор. У двухядерного Атлона x2 поэтому и ~50% (1 ядро из двух), и т.д. На четырехядернике ~25%. Но ядро-то загружено, проц все время работает. А бинарники все равно удобнее грузить без дискет, для тестов там и т.п. Ну а если эмулятор не развивать по запросам пользователей, то конкуренты это сделают) Как с любым софтом бывает. На эмуляторе, кстати, копирайт стоит (в т.ч. "все права защищены"), а не просто авторство, почему-то.
-
? gid@ - 08.10.2014 10:09
[Я и говорю, ядро, а не процессор.]
Снова не знаю. Я с 2006 года использую только х64 архитектуру и только многоядерные процы. Сейчас мне уже просто негде взять комп с одноядерным процом (у меня есть разные старые процы в коллекции, но нет подходящих к ним мат.плат). А виндовс уже давно умеет распределять нагрузку равномерно по ядрам проца, если приложение соответствующим образом скомпилировано.
Так что ни подтвердить, ни опровергнуть ваше заявление не могу.
Кстати, анализатор производительности Visual Studio говорит, что 45% всего процессорного времени отжираемого эмулятором занимает формирование буфера экрана каждые 64мкс для эмуляции хода луча ЭЛТ. Причина высокой нагрузки - в нём.
¤
[А бинарники все равно удобнее грузить без дискет, для тестов там и т.п.]
А как эмулятор узнает, какой профиль грузить БК10 или БК11, с дисководом или без, если бинарник требует какого-либо особого функционала ANDOS, MKDOS или CSIDOS, как эмулятор об этом узнает?
¤
[если эмулятор не развивать по запросам пользователей, то конкуренты это сделают]
Если эти конкуренты появятся и хоть что-то сделают, я буду только рад. Я вообще крайне заинтересован в конкурентах, чтобы их было больше всяких и разных.
¤
[На эмуляторе, кстати, копирайт стоит]
Так было с самого начала, Калмыков поставил, но это не помешало мне взять и улучшить то, что он начал.
Я без зазрения совести использую чужие исходники доступные публично с любыми копирайтами, просто не выдаю их за свои, а оставляю авторство как есть.
¤
[в т.ч. "все права защищены"]
А это микрософтовская визуал студия пихает в файл ресурсов по умолчанию. Я вообще никогда не обращал на это внимания. Защищены? Ну и хрен с ними.
-
? Аноним - 08.10.2014 13:54
>Снова не знаю. Я с 2006 года использую только х64 архитектуру и только многоядерные процы.
¤
Хм, а что тут знать? Но разве трудно посмотреть нагрузку на каждое ядро, а не суммарную для всех ядер, что-ли? И что тут знать, сравнить с любым современным эмулем типа Башкирия. Там загрузка основного ядра в 5 раз меньше, потому что процессору дают спать sleep-ом, а не крутят всё время цикл эмуляции на нем. Это беда старых эмуляторов обычно, когда было пофиг на энергосбережение из-за малой распространенности ноутов и т.п.
¤
>А как эмулятор узнает, какой профиль грузить БК10 или БК11
Какой выбран в меню, тот и использовать.
¤
>Я без зазрения совести использую чужие исходники доступные публично с >любыми копирайтами
Это потому, что всем по барабану, поскольку вы, наверное, если выкладываете их, то с исходниками. Даже если формально нарушаете какую-то лицензию при этом. Если бы дернули у тех, кому не все равно, и не открыли исходники, то реакция может быть вплоть до суда. Авторские права все равно защищены, в том числе и в плане изменения исходного продукта. Вдруг вы богатый или знаменитый, и с вас есть что взять?))
-
? Аноним - 08.10.2014 14:11
>А виндовс уже давно умеет распределять нагрузку равномерно по ядрам >проца, если приложение соответствующим образом скомпилировано.
¤
Вообще-то не просто скомпилировано. А если приложение соответствующим образом распараллелено на потоки - что есть, собственно, главная задача современного программирования. Большинство приложений пока - вообще однопоточные. Почему, по вашему, интеловские дешевые малоядерники часто в играх обходят многоядерники от АМД, несмотря на "суммарную" мощь последних? Потому что обычно задействуется 1-2 ядра, больше - это исключение, а не правило.
¤
Эмуляторы, правда, как правило слабо распараллеливаемы, разве что видео и аудио можно вынести в отдельные потоки. Поэтому основной поток эмуляции всегда работает на одном ядре. И грузит или не грузит только его - полностью или частично (давая отдыхать sleep-ами).
-
? Аноним - 08.10.2014 14:33
Кстати, посмотрел эмулятор Калмыкова в.3.0-демо. Загрузка у него сравнима с Башкирией, т.е. он умел спать. В обсуждаемом же эмуляторе даже когда экран статичен (ничего на экране не изменяется, т.е. перерисовок быть не должно), ядро все равно загружено. Возможно, что-то было отключено в процессе доработки.
-
? Аноним - 08.10.2014 14:46
>процессорного времени отжираемого эмулятором занимает формирование буфера экрана каждые 64мкс для эмуляции хода луча ЭЛТ.
¤
Не совсем понял, каждые 64мкс формируется весь буфер или только текущая строка? И сколько раз выводится экран в секунду?
-
? Дмитрий - 08.10.2014 15:08
>> поскольку вы, наверное, если выкладываете их, то с исходниками
Если автор выложил сырцы в сеть со своими копирайтами и не указал что можно с ними делать, то никаких прав не нарушено. Копирайт исходных файлов указан. Никто ничего себе не присвоил.
¤
Я не смотрел, как сделано в эмуляторе, но, по идее при записи в память отслеживать куда записано значение и, если оно записано в экранную область, сделать обновление экрана. Это гораздо менее затратно по ресурсам, чем обновление по таймеру. Либо сделать генерацию битмапа только при записи в экранную область и раз в 64 мкс отрисовывать этот битмап на канву (даже если он не изменился).
-
? Аноним - 08.10.2014 15:32
>Если автор выложил сырцы в сеть со своими копирайтами и не указал что >можно с ними делать, то никаких прав не нарушено
Автор должен прямо отказаться от своих прав. Если не указал, что можно делать, значит не отказался ни от чего. В том числе и от исключительных прав на модификацию своего произведения. Даже если бы копирайт не стоял - все права все равно за автором. А он стоит.
¤
>при записи в экранную область и раз в 64 мкс отрисовывать этот битмап на канву
Отрисовывать чаще, чем рефреш у монитора, особого смысла нет.
-
? Аноним - 08.10.2014 15:42
"Правообладатель вправе по своему усмотрению разрешать или запрещать другим лицам использование результата интеллектуальной деятельности или средства индивидуализации. Отсутствие запрета не считается согласием (разрешением)."
-
? Дмитрий Николаевич - 08.10.2014 15:51
Вы долго ещё будете ныть? Не нравится факт, что кто-то допиливает недопиленное? - не пользуйтесь эмулятором. Все всё знают о правах.
¤
Раз уж в этой ветке начали об эмуляторе, то и продолжайте о нём. А точнее - о его работе, плюсах и минусах.
-
? gid@ - 08.10.2014 16:01
[даже когда экран статичен (ничего на экране не изменяется, т.е. перерисовок быть не должно)]
Даже когда экран статичен, ход луча ЭЛТ происходит. Следовательно эмулировать его всё равно надо, и хочешь-не хочешь, а перерисовывать экран нужно.
¤
[Не совсем понял, каждые 64мкс формируется весь буфер или только текущая строка? И сколько раз выводится экран в секунду?]
Я немного напутал. На самом деле так: фрейм 20мс, внутри фрейма надо обработать сколько-то тактов процессора, сколько-то тактов формирователя звука с частотой дискретизации 44100, один раз перерисовать экран, по расчётам - 15000 циклов формирования экрана некоторые из этих циклов пустые - верхние, нижние и боковые поля вокруг информационной области экрана но обрабатывать их надо, чтобы определить, когда начинать рисовать, остальные - формирование лучом изображения из очередного слова экранной памяти.
Каждая запись слова в битмап, который будет изображён на экране - это куча вычислений.
¤
А 64мкс это совсем из другой области, это из последнего, когда я пытался починить эмуляцию вращения дискеты в дисководе. там контроллер дисковода тоже выдаёт слово в регистр ССД каждые 64мкс.
Хотя и экранная строка формируется тоже 64мкс. такие вот совпадения.Вот щас ради эксперимента добавил Sleep(1) в цикл ожидания. загрузка проца уменьшилась вдвое, но появились разрывы между фреймами и звук стал запинаться. Потому что 1мс это очень много.
-
? Аноним - 08.10.2014 16:55
>Даже когда экран статичен, ход луча ЭЛТ происходит. Следовательно эмулировать его всё равно надо, и хочешь-не хочешь, а перерисовывать экран нужно.
¤
А зачем экран перерисовывать? Результат все равно одинаков на экране, если ничего не изменилось. Отрисовка никак не связана с эмуляцией луча, она просто или нужна в данный момент, или нет - т.е. буфер или надо перебрасывать на экран, если что-то изменилось, или не надо, если не изменилось ничего.
¤
>Каждая запись слова в битмап, который будет изображён на экране - это >куча вычислений.
У других же работает, без особой нагрузки. Почти все эмуляторы эмулируют линии сканирования, вроде бы.
¤
>Вот щас ради эксперимента добавил Sleep(1) в цикл ожидания. загрузка проца уменьшилась вдвое,
¤
Это делается не совсем так. Надо разбить процессорное время, например, на те же фреймы (допустим, 50 штук/сек). Далее эмулировать в цикле по фреймам. Выполнить на максимальной скорости все положенные для этого фрейма инструкции, отрисовать кадр на экране (если была запись в буфер), а оставшееся время (до конца фрейма по реальными часам) отдыхать sleep-ом. Далее переходить к следующему фрейму. Естественно, количество фреймов можно увеличить (100, 150, 200), если нужна большая точность. Так все работают, и у Калмыкова раньше так было, похоже.
¤
Что касается Sleep(1), то у Винды по умолчанию его разрешение, сколько помню, до 10 мс (MSDN). Т.е. Sleep(1) на самом деле ~Sleep(10). Чтобы увеличить разрешение до 1мс, надо специально включить режим высокоточного таймера API-вызовом (не помню уж каким, в MSDN есть). Только, опять же, sleep возможен только при вышеописанном методе, иначе будет только мешать.
-
? Аноним - 08.10.2014 17:12
В принципе, у вас вроде бы похожий метод выше описан, только надо после выполнения всего подсчитать, сколько можно спать до следующего кадра. И не ожидать нужного момента в цикле, а именно спать. Цикл ожидания и грузит ядро обычно, поскольку на эмуляцию/отрисовку кадра/звук обычно хватает меньше половины времени, отведенного на фрейм, остальное время можно спать.
-
? Аноним - 08.10.2014 17:20
Хотя в принципе, конечно, можно спать и в цикле по 1мс (реальных), периодически просыпаясь, хотя это чуть менее эффективно. Только все равно придется рассчитывать, можно ли спать еще 1 мс дополнительно, или лучше подождать без сна, если осталось <1мс. В любом случае экономия будет существенной.
-
? Аноним - 08.10.2014 17:54
>Раз уж в этой ветке начали об эмуляторе, то и продолжайте о нём. А точнее - о его работе, плюсах и минусах.
¤
Ладно, завязываю с оффтопом. Две основных претензии я изложил, а так эмулятор вполне неплох, даже Insult почти правильно работает, несмотря на заявленные на сайте "неточности в таймингах"))
-
? gid@ - 08.10.2014 19:03
[А зачем экран перерисовывать?]
Потому что перерисовка практически бесплатна. Её время ничтожно, по сравнению остальными действиями.
[а оставшееся время (до конца фрейма по реальными часам) отдыхать sleep-ом]
как? высокоточный waitable timer работает по-разному в windows7 и windows8 а других способов я не знаю.
[Чтобы увеличить разрешение до 1мс, надо специально включить режим высокоточного таймера API-вызовом]
каким?
Раз у предлагаете, методы, нарисуйте и прогу. А я уже буду критиковать реализацию.
[даже Insult почти правильно работает, несмотря на заявленные на сайте "неточности в таймингах"]
именно что почти. как раз из-за неточностей в таймингах.
-
? Майтрея@ - 11.10.2014 01:07
Дмитрий Николаевич, интересует монитор, а по остальному железу и софту - есть вопросы. Моя почта: Tryapsha@yandex.ru
-
? Аноним - 28.10.2014 01:55
Архив с эмулятором обновлён, изменения здесь: http://gid.pdp-11.ru/
Архив здесь: https://dl.dropboxusercontent.com/u/19375644/compiled.rar
Подробности изменений здесь: https://code.google.com/p/bknew/source/list
-
? Дмитрий Николаевич - 28.10.2014 01:57
^ Предыдущий пост мой.
Анонимусы потёрли кэш )) Имя потерялось.
- << Форум