User Tag List

Страница 23 из 94 ПерваяПервая ... 192021222324252627 ... ПоследняяПоследняя
Показано с 221 по 230 из 1102

Тема: Emu80 v.4

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    05.04.2013
    Адрес
    Починки, Нижегородская обл.
    Сообщений
    1,371
    Спасибо Благодарностей отдано 
    401
    Спасибо Благодарностей получено 
    647
    Поблагодарили
    255 сообщений
    Mentioned
    26 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    svofski, сегодня, к сожалению, был занят, успел только потестировать готовые сборки с патчем.
    На Intel, похоже, деление 64-разрядных чисел не дает мало-мальски заметного прироста производительности. Пробовал запускать в XP на Core2Duo 6420 2,13 ГГц 10-летней давности. Загрузка процессора на gigascreen demo колеблется в районе 35-41%10-16% как с патчем, так и без. Возможно, с патчем процента на 2 меньше - понять сложно. Завтра могу попробовать еще на Atom'е 1,6 ГГц.
    barsik же от патча эффект тем более не почувствует, поскольку он работает в конфигурации "Специалиста", в которой не используется ВИ53.
    А код я еще посмотрю в плане производительности. Меня пока несколько удивляет, почему именно эта процедура вызывается так часто, что затмевает все другие места, где встречается 64-битное деление. Возможно, просто специфика апогеевской программы, которая очень часто читает значения счетчиков (на какой программе проверялось, кстати?)


    barsik, после прочтения последних ваших сообщений возникла одна идея. Не запущены ли у вас случайно параллельно с эмулятором какие-то DOS-программы (они запросто могут отбирать 100% процессорного времени)? Или про какие ресурсо-жрущие программы вы говорите? Просто загрузка порядка 30% на Специалисте - это довольно большой запас производительности...
    Последний раз редактировалось Pyk; 12.01.2018 в 01:00.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,299
    Спасибо Благодарностей отдано 
    1,028
    Спасибо Благодарностей получено 
    813
    Поблагодарили
    484 сообщений
    Mentioned
    26 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Pyk, да мы никуда не опаздываем. Я проверял все на Апогее. Не знаю, почему, просто наугад. И первая попавшаяся там демка с гигаскрином меня заинтересовала тем, как она будет выглядеть на ЭЛТ.

    Между вызовами updateState() по-моему 17500 циклов времени, а делитель 945. Это важный момент, потому что одно на другое не делится и, если неправильно считать количество тиков, выходит свист. В вычислении тиков до моего вмешательства уже прослеживаются какие-то следы борьбы ;) Вызывается я думаю он в обычных количествах, это же таймер. Еще подумал, что даже сохраняя 64-битное время, незачем там вычислять количество тиков в каждом счетчике. Достаточно сделать это в головном модуле один раз за троих.

    Я сначала разбирал gperftools, но они не показывали причину вызовов __udivmoddi4(). Тогда я прибег к дедовскому способу: ctrl+c в отладчике, это всегда работает. Вообще я и сам удивлен, что на rpi3 это такая тяжкая операция, возможно я недожал какие-то архитектурно-специфические опции. Но, глядя правде в глаза, незачем там 64 бита иметь. При вот этих значениях, 17500/945, хватило бы на самом деле и 16.
    Больше игр нет

  4. #3

    Регистрация
    05.04.2013
    Адрес
    Починки, Нижегородская обл.
    Сообщений
    1,371
    Спасибо Благодарностей отдано 
    401
    Спасибо Благодарностей получено 
    647
    Поблагодарили
    255 сообщений
    Mentioned
    26 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    svofski, смутила меня все-таки относительно высокая загрузка процессора, попробовал сейчас еще раз на том же Core2Duo - неизменно получаются уже другие цифры: 13-16% без патча и 10-13% с патчем на том же гигаскрине. Откуда я взял лишние 30% при тестировании час назад, не понял

  5. #4

    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,299
    Спасибо Благодарностей отдано 
    1,028
    Спасибо Благодарностей получено 
    813
    Поблагодарили
    484 сообщений
    Mentioned
    26 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Pyk Посмотреть сообщение
    Откуда я взял лишние 30% при тестировании час назад, не понял
    Не знаю На rpi3 Специалист съедает ~25%.
    Больше игр нет

  6. #5

    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Pyk, спасибо за инструкции по увеличению ОЗУ и ПЗУ СПЕЦИАЛИСТА в эмуляторе EMU80. Сделал себе пока 1 мб ОЗУ, для RAM-диска этого хватит. Также увеличил ПЗУ до 256 кб, хотя в реале пока использую ПЗУ размером всего в 8 кб. Но это тоже пригодится, т.к в это ПЗУ (не для реала, а для эмулятора) смогу "засунуть" постоянно нужные программы, например, можно избавиться от загрузки RAM-диска с МГ-ленты или вообще из резидентного ПЗУ сделать CP/M-диск с атрибутом R/O.

    Недавно попробовал отлаживать программы для СПЕЦИАЛИСТА, отчего возникли некоторые пожелания по улучшению отладчика, встроенного в эмулятор EMU80.

    Чтобы изменить ячейку памяти, я выхожу в окно дампа и в окне дампа набираю A, затем, когда адрес подсветится, ввожу адрес, например 8FFC. Надо, чтобы указатель по байтам (подсветка байта) установилась именно на байт в адресе 8FFC, а не на 8FF0, как сделано сейчас. Приходится тратить время вручную перегоняя курсор на нужный байт.

    По директиве U пропускаться должна только единственная команда HALT, а не любая команда, т.к пропускать осмысленные команды не надо, это приводит к зависам. А иногда случайно нажимаешь на U и полезная для программы команда пропускается и происходит завис.

    И специально для команды HALT нужна команда по её забитию в коде программы, когда с данным куском программы уже разобрались и остановка в данной точке больше не нужна. Сейчас это приходится делать вручную. Т.е нужна команда N, которая работает только, если остановка на команде HALT. Тогда по этому адресу вместо кода 76 должен подставляться код 00, что является командой NOP.

    И ещё желательно ввести директиву T (от слова TEXT). В окне мини-дизассемблера тексты отображаются какими-то случайными командами ассемблера. Подведя подсветку (указатель текущей строки) к началу предполагаемого текстового фрагмента и нажав T, данный фрагмент должен дизассемблироваться как оператор (или несколько операторов) 'DEFB' или оператор 'DC', т.е текстОвой ASCIIZ-строкой или строкой в которой в последнем символе установлен старший бит в качестве признака конца строки.

    Это нужно мне при отладке (т.к использую RST), а также при просмотре кодов программ ОРИОНА от ОРИОНСОФТ, а также многих программ CP/M, где используется тот же способ размещения текста.

    Я вывожу текст по RST 18, и даже когда RST недопустимы, то всё-равно текст вставляю непосредственно в программу. Т.е вместо RST 18, ставлю CALL TXTOUT, а сам текст ставится сразу-же после этого CALL. А продолжение программы начинается только после стоп-байта 00 или выставленного старшего бита символа. Потому на экране вашего отладчика вместо программы я вижу мусор. И проблема найти конец текста, чтобы поставить стоп точку именно в этом месте.

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

    Вот смотрите как выводят текст CP/M-программы. Естественно грамотные программисты на ассемблере всегда используют макро-команды. И для вывода текста обычно вот такие:

    Код:
    .
    fmssg	EQU	9
    
    CPM	MACRO	PARAM
    	LD	C,PARAM
    	CALL	5
    	ENDM
    	
    MSSG	MACRO	PARAM
    	LOCAL	M1
    	CALL	M1
    	defb	PARAM
    	defb	'$'
    M1:	POP	DE
    	CPM	fmssg
    	ENDM
    	
    CRMSSG	MACRO	PARAM
    	LOCAL	M1
    	CALL	M1
    	defb	13,10
    	defb	PARAM
    	defb	'$'
    M1:	POP	DE
    	CPM	fmssg
    	ENDM
    Тогда программист чтобы вывести текст пишет строку

    Код:
    .
    	MSSG 	'Drive specifier out of range'
    что выглядит почти как строка в языке высокого уровня.

    А когда я пытаюсь просматривать фирменные программы написанные на макроассемблере в отладчике эмулятора EMU80, возникают вышеописанные проблемы. В своём эмуляторе (для MSDOS) я, естественно, в встроенном мини-дизассемблере дизассемблирую байты после RST 18, как текст.

    Это только программисты для РК86 лишённые макроассемблера для вывода текста вынужденно использовали вот такую конструкцию:

    Код:
    .
    MSSG	EQU	0F818H
    
    	LD	HL,TXT
    	CALL	MSSG
    .....
    
    TXT:	DB	'HELLO !',0
    Причём текст обычно размещали в конце программы, оттого трудно уловить логику программы просматривая её в мини-дизассемблере, тогда как, когда текст встроен прямо в код, разобраться в программе проще.

    А ещё возмущает, почему мнемоника Z80 в мини-дизассемблере так обижена. Мнемоника КР580 выводится нормальными буквами, а мнемоника Z80 выводися ущербными маленькими буковками. Большинство программистов на ассемблере ценят своё зрение и пишут программы большими буквами, тем более что легко перепутать маленькую L и 1. Для меня программа в мнемонике Z80 выглядит непривычно, это неудобно и раздражает.

    PS. В новых версиях, Вы забыли сделать ALT-F11 работающим в отладчике (причём с автозакрытием окна отладчика по ALT-F11 в любом из окон).

    - - - Добавлено - - -

    И не надо в дампе показывать показывать псевдографику РК86.

    В СПЕЦИАЛИСТЕ и в ОРИОНЕ нет такой псевдографики в фонте. А символы выше 80H тоже стоит отображать. Или в виде КОИ-8 или сбрасывать старший бит, делать XOR 20H и отображать инверсно. Тогда в дампе легко находить тексты КОИ-8. А лучше просто выводить символы (по крайней мере с весами C0...FF) в КОИ-8. А ещё лучше выводить в дампе и псевдографику (т.е коды 80...BF), но не от балды, а по книге В.Фигурнова "IBM PC для пользователя" (ISBN 5-279-00900-8).
    Последний раз редактировалось barsik; 26.01.2018 в 14:09.

  7. #6

    Регистрация
    05.04.2013
    Адрес
    Починки, Нижегородская обл.
    Сообщений
    1,371
    Спасибо Благодарностей отдано 
    401
    Спасибо Благодарностей получено 
    647
    Поблагодарили
    255 сообщений
    Mentioned
    26 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    barsik, принято. Постараюсь учесть, но по срокам ничего пока обещать не буду.
    Хотя есть несколько вопросов:

    Цитата Сообщение от barsik Посмотреть сообщение
    иногда случайно нажимаешь на U и полезная для программы команда пропускается
    Честно говоря, плохо представляю, как можно случайно нажать на клавишу, расположенную довольно далеко от остальных используемых в эмуляторе клавиш. В принципе, пропуск любой команды тоже может быть иногда полезен, может быть его повесить на какую-нибудь F-клавишу?


    Цитата Сообщение от barsik Посмотреть сообщение
    Проблема даже не найти, а именно поставить стоп точку, т.к предыдущий перед стоп-байтом символ дизассемблируется как 2-х или трёхбайтовая команда и поставить стоп-точку на продолжении программы сразу за стоп-байтом текста невозможно, т.к этого адреса просто нет в дизассемблированном куске программы, а вся последующая программа искажена.
    Пока я этого не сделал, могу посоветовать нажать "A" и ввести адрес, на котором нужно поставить точку останова. При этом команда, начинающаяся с этого адреса, гарантированно будет дизассемблирована.

    Цитата Сообщение от barsik Посмотреть сообщение
    В новых версиях, Вы забыли сделать ALT-F11 работающим в отладчике (причём с автозакрытием окна отладчика по ALT-F11 в любом из окон)
    Ничего вроде бы не менял. Alt-F11 работает только в основном окне. Для сброса нужно переключиться в основное окно из окна отладчика, а потом можно опять вернуться в отладчик. Автозакрытия окна отладчика по Alt-F11 тоже никогда не было. В общем, прошу пояснить.

    Цитата Сообщение от barsik Посмотреть сообщение
    Мнемоника КР580 выводится нормальными буквами, а мнемоника Z80 выводися ущербными маленькими буковками.
    Сделал так, как привык я - мнемоникой Intel 8080 я пользовался на РК-подобных, где не было строчных букв, а мнемоникой Z80 - на машинах со строчными буквами (так же, как и Intel 8086 я тоже набираю строчными). Кому как привычнее видеть мнемоники Z80? (Можно, в принципе, и опцию сделать...)

  8. #7

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,048
    Спасибо Благодарностей отдано 
    1,141
    Спасибо Благодарностей получено 
    1,459
    Поблагодарили
    520 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Pyk, я насроил автосборку своих Qt-проектов под Linux и MacOS, заняло это несколько часов.
    Шаг первый -- регистрируемся на travis-ci.org, коннектим свой аккаунт с GitHub. Затем "включаем" там свой проект.
    Шаг второй -- создаём и коммитим конфиг .travis.yml, пример тут: https://github.com/nzeemin/ukncbtl-q...er/.travis.yml
    По коммиту сразу начинается сборка, логи сбори все доступны и приходят нотификации на имейл.
    Очень советую, мне понравилось.

  9. #8

    Регистрация
    05.04.2013
    Адрес
    Починки, Нижегородская обл.
    Сообщений
    1,371
    Спасибо Благодарностей отдано 
    401
    Спасибо Благодарностей получено 
    647
    Поблагодарили
    255 сообщений
    Mentioned
    26 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    nzeemin, спасибо за подсказку, думаю, что это сэкономит мне время, когда тоже буду настраивать CI.
    А почему, кстати, именно Travis-CI? Какие-нибудь альтернативы рассматривались?

  10. #9

    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    2,048
    Спасибо Благодарностей отдано 
    1,141
    Спасибо Благодарностей получено 
    1,459
    Поблагодарили
    520 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Pyk Посмотреть сообщение
    А почему, кстати, именно Travis-CI? Какие-нибудь альтернативы рассматривались?
    Travis даёт образы с Linux и macOS.
    Ещё использую AppVeyor для сборки под Windows.
    Видел что люди используют CircleCI, но похоже там только Linux.
    https://github.com/marketplace/categ...us-integration -- все здесь

  11. #10

    Регистрация
    01.09.2010
    Адрес
    Ивано-Франковск
    Сообщений
    2
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вопрос по РК86: Какими клавишами ввести код "AR2" . Она нужна при работе ED ?

Страница 23 из 94 ПерваяПервая ... 192021222324252627 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Emu80, старые версии
    от Pyk в разделе Эмуляторы отечественных компьютеров
    Ответов: 68
    Последнее: 11.03.2017, 00:33

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •