Важная информация

User Tag List

Страница 29 из 36 ПерваяПервая ... 252627282930313233 ... ПоследняяПоследняя
Показано с 281 по 290 из 357

Тема: Emu80 v.4

  1. #281
    Activist
    Регистрация
    05.04.2013
    Адрес
    с. Починки, Нижегородская обл.
    Сообщений
    397
    Благодарностей: 245
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Pyk Посмотреть сообщение
    Пробовал запускать в XP на Core2Duo 6420 2,13 ГГц 10-летней давности. Загрузка процессора на gigascreen demo колеблется в районе 35-41%10-16% как с патчем, так и без.
    Уточненные сведения: загрузка одного ядра порядка 25-35%, соответственно общая загрузка в 2 раза меньше.

    barsik, для изменения формата образа диска нужно поменять его параметры к конфиге: FdImage diskA = 80, 2, 5, 1024 (дорожки, стороны, сектора, размер сектора)
    Более продвинутые форматы emu80 не поддерживает. Поддержка дисковода также сделана не в реальном времени (в отличие от контроллера РК). Так что если нужна поддержка защищенных дискет, нужно разрабатывать новый формат (либо использовать какой-то готовый). А пока имеем только базовую поддержку ВГ93 и дисковода.

    Влияние ПДП в эмуляторе учитывается, такт повысить можно, изменив тактовую частоту в конфиге: dma.frequency = 2666666 и т.п. Аналогично для процессора: cpu.frequency = 2000000... Влияние ПДП учитывается не на 100% точно, но на практике скорость не отличается от реала больше чем на 2-3%.

    Такт РК-КНГМД в эмуляторе изменить пока нельзя (да, обещал сделать, но пока этого нет).

  2. Этот пользователь поблагодарил Pyk за это полезное сообщение:
    barsik (14.01.2018)

  3. #282
    Veteran Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Рязань
    Сообщений
    1,091
    Благодарностей: 1308
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Pyk, насколько я понимаю (сам пока не пробовал, собираюсь), на GitHub можно прикрутить к своему проекту CI (непрерывную интеграцию).
    То есть, по коммиту робот берёт ваш код и собирает под несколько платформ.
    Это может помочь в плане борьбы с варнингами и убеждаться что оно как минимум собирается.
    Кроме того, можно собирать command-line версию эмулятора под каждой из платформ и прогонять его, получая скриншоты в контрольных точках и сравнивая с эталоном. Это даст некоторую уверенность что при очередном изменении не произошло регрессии.

  4. #283
    Activist
    Регистрация
    05.04.2013
    Адрес
    с. Починки, Нижегородская обл.
    Сообщений
    397
    Благодарностей: 245
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    nzeemin, спасибо за идею, continuous integration штука на первый взгляд интересная, но тоже пока еще не пробовал.

    Можешь попробовать собрать на маке текущую версию из репозитория?
    Изменений там немного, интересует в основном, остались ли варнинги clang'а. Я пытался настроить clang под Windows, но задача оказалась не совсем тривиальной, и я пока отложил эту затею...

  5. #284
    Veteran Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    1,846
    Благодарностей: 613
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Pyk,

    Скрытый текст

    Код:
    In file included from src/wx/wxConfigWnd.cpp:19:
    src/wx/wxConfigWnd.h:78:16: warning: private field 'm_pfnSetPropValueCallBackFunc' is not used [-Wunused-private-field]
            bool (*m_pfnSetPropValueCallBackFunc)(const std::string&, const std::string&, const std::string&);
                   ^
    src/wx/wxConfigWnd.h:79:23: warning: private field 'm_pfnGetPropValueCallBackFunc' is not used [-Wunused-private-field]
            std::string (*m_pfnGetPropValueCallBackFunc)(const std::string&, const std::string&);
                          ^
    2 warnings generated.
    [свернуть]

    все остальное чисто.

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

    P.S. кстати, gcc-6 позанудней кланга будет.
    Последний раз редактировалось svofski; 20.01.2018 в 00:37.
    Больше игр нет

  6. Эти 2 пользователя(ей) поблагодарили svofski за это полезное сообщение:
    nzeemin (20.01.2018), Pyk (20.01.2018)

  7. #285
    Activist
    Регистрация
    05.04.2013
    Адрес
    с. Починки, Нижегородская обл.
    Сообщений
    397
    Благодарностей: 245
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    svofski, спасибо, поправил. И Makefile разделил пока на два, а то там действительно ерунда получалась с lite-версией...

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

    По умолчанию

    Pyk, к сожалению, составленный Вами конфиг для многобанкового СПЕЦИАЛИСТА немного не соответствует реалу. А именно, коммутация банок сделана только на основное ОЗУ в 48 кб (0...BFFF), а открытое верхнее ОЗУ не коммутируется, всегда оставаясь банкой 0, хотя физически банка переключается целиком во всей области от 0 до FFFF. Это не только сокращает объём эл.диска с 174 кб до 144 кб, но и не позволяет отлаживать программы для реала это использующие.

    Для реала мне вряд-ли удастся расширить ОЗУ выше 4-х банок, т.к 565 РУ7 (или 41256) нынче трудно достать и придётся ограничиться одной банкой РУ7. Но в эмуляторе простейшим изменением конфига можно "наколдовать" себе в СПЕЦИАЛИСТЕ хоть гигабайт памяти. Например, при эмуляции РК86 в эмуляторе EMU от b2m простым изменением пары цифр я делал банковое ОЗУ РК86 в 4 мб.

    Потому я и решил прибавить себе ОЗУ в СПЕЦИАЛИСТЕ в эмуляторе EMU80. Для этого я отредактировал конфиг-файл следующим образом:

    Было:

    Ram ram0lo = 0x9000
    Ram ram1 = 0xC000
    Ram ram2 = 0xC000
    Ram ram3 = 0xC000

    ram.page = 0,&ram0
    ram.page = 1,&ram1
    ram.page = 2,&ram2
    ram.page = 3,&ram3

    ramSelectorTranslator.writeAndMask = 0x3

    Сделал:

    Ram ram0lo = 0x9000
    Ram ram1 = 0xC000
    Ram ram2 = 0xC000
    Ram ram3 = 0xC000
    Ram ram4 = 0xC000
    Ram ram5 = 0xC000
    Ram ram6 = 0xC000
    Ram ram7 = 0xC000

    ram.page = 0,&ram0
    ram.page = 1,&ram1
    ram.page = 2,&ram2
    ram.page = 3,&ram3
    ram.page = 4,&ram4
    ram.page = 5,&ram5
    ram.page = 6,&ram6
    ram.page = 7,&ram7

    ramSelectorTranslator.writeAndMask = 0x7

    Но увы, что-то не получилось. Банки не добавились. Вместо записи в 4-тую банку происходит запись в нулевую банку и происходит улёт. Что надо ещё отредактировать в конфиге, чтобы поиметь хотя-бы 512 кб памяти в СПЕЦИАЛИСТЕ ?

    И ещё вопрос по эмулятору. Эмулируете ли Вы сигнал INDEX в РК-КНГМД ? Потому что с этим возникли проблемы. Использую проверенные подпрограммы, что точно работали на реале, но в эмуляторе они не работают. Работают только подпрограммы RK-DOS в неизменном виде.

    Также нужна эмуляция КНГМД на ВГ93 от ОРИОНА в СПЕЦИАЛИСТЕ. В конфиге есть какие-то намётки на эту тему, но они закомментированы. Если откомментировать эти строки, это даст КНГМД на базе ВГ93 в СПЕЦИАЛИСТЕ ?

    Как я понимаю с ВГ93 работа идёт не в реальном времени и без разницы ставить такт в эмулируемом СПЕЦИАЛИСТЕ в 0.5 МГЦ или в 5 МГЦ, на работе контроллера дисковода это не отразится.
    Последний раз редактировалось barsik; 26.01.2018 в 15:06.

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

  10. #287
    Activist
    Регистрация
    05.04.2013
    Адрес
    с. Починки, Нижегородская обл.
    Сообщений
    397
    Благодарностей: 245
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Поясню, речь тут идет о конфиге, который я делал индивидуально для barsik'а под его специфическую конфмигурацию Специалиста и не публиковал на форуме. Если кому-то будет интересно, выложу.

    По общим вопросам:
    Цитата Сообщение от barsik Посмотреть сообщение
    Эмулируете ли Вы сигнал INDEX в РК-КНГМД ?
    Да, эмулируется сигнал длительностью 3 мс.
    Цитата Сообщение от barsik Посмотреть сообщение
    Как я понимаю с ВГ93 работа идёт не в реальном времени и без разницы ставить такт в эмулируемом СПЕЦИАЛИСТЕ в 0.5 МГЦ или в 5 МГЦ, на работе контроллера дисковода это не отразится.
    Совершенно верно.

    barsik, насчет остального ответил на почту.

  11. Этот пользователь поблагодарил Pyk за это полезное сообщение:
    barsik (21.01.2018)

  12. #288
    Banned
    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Благодарностей: 337
    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 в 15:09.

  13. Этот пользователь поблагодарил barsik за это полезное сообщение:
    Pyk (25.01.2018)

  14. #289
    Activist
    Регистрация
    05.04.2013
    Адрес
    с. Починки, Нижегородская обл.
    Сообщений
    397
    Благодарностей: 245
    Mentioned
    0 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? (Можно, в принципе, и опцию сделать...)

  15. #290
    Veteran Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Рязань
    Сообщений
    1,091
    Благодарностей: 1308
    Mentioned
    3 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
    По коммиту сразу начинается сборка, логи сбори все доступны и приходят нотификации на имейл.
    Очень советую, мне понравилось.

  16. Эти 3 пользователя(ей) поблагодарили nzeemin за это полезное сообщение:
    hobot (13.02.2018), Pyk (15.02.2018), svofski (13.02.2018)

Страница 29 из 36 ПерваяПервая ... 252627282930313233 ... ПоследняяПоследняя

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

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

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

Похожие темы

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

Ваши права

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