Serg6845, спасибо! Ошибку смоделировал, но разобраться в причинах и исправить пока не было времени. Обязательно разберусь чуть позже.
Вид для печати
Serg6845, спасибо! Ошибку смоделировал, но разобраться в причинах и исправить пока не было времени. Обязательно разберусь чуть позже.
Разобрался. В общем, при ответе на вопрос "ТЕКСТ(Y/N)" событие нажатия клавиши (Y или N) в этом случае попадает в эмулируемую программу, а отжатие до нее уже не доходит, попадает в отладчик. Клавиша в программе остается "запавшей". Подумаю, как лучше обработать подобную ситуацию, а пока можно просто нажимать Y или N коротко, не задерживать клавишу в нажатом положении (успеть отпустить за время писка клавиши). А если все-таки зависнет, то дополнительно нажать еще раз ту же клавишу, что и в прошлый раз (Y или N).
P. S. На РК-86 и подобных проблема также проявляется, но там в случае длительного нажатия срабатывает автоповтор, так что обычно клавиши нажимают более коротко...
Pyk, день добрый :) можете помочь советом? на какой конфигурации Вы собираете релизы под MacOS, может подскажете какой коммит собираеся?
Хочу добавить в эмулятор 'Радуга С' у меня MacOS X El Capitan 10.11.6 с macports
Пытаюсь собрать git describe d932e5b, для начала make -f Makefile.lite.
После замены <GL/gl.h> на <OpenGL/gl.h> начали компилироваться cpp файлы но выдает кучу.
In file included from src/sdl/sdlPalWindow.cpp:20:
src/sdl/sdlGlExt.h:24:1: error: unknown type name 'PFNGLGENBUFFERSPROC'
PFNGLGENBUFFERSPROC glGenBuffers;
^
src/sdl/sdlGlExt.h:25:1: error: unknown type name 'PFNGLBINDBUFFERPROC'
PFNGLBINDBUFFERPROC glBindBuffer;
^
src/sdl/sdlGlExt.h:26:1: error: unknown type name 'PFNGLBUFFERDATAPROC'
в SDL я новичек, 01_hello у меня компилируется правда там спец параметры для clang++ и нет никаких ссылок на GL
clang++ -O3 -Wall -I/Library/Frameworks/SDL2.framework/Headers -F/Library/Frameworks/SDL2.framework/Headers main.cpp -framework SDL2 -o hello-sdl
Возможно ли скопилировать эмулято пд Мак без GL ?
oxy, к сожалению, SDL/wx-версия под MacOS на данный момент неработоспособна. Даже если удастся собрать, работать не будет из-за какой-то несовместимости библиотек SDL и wxWidgets (именно в MacOS). Надо бы, конечно, разобраться, но руки пока так и не дошли... А вообще, последняя без GL версия с тегом v4.0.400 - возможно, соберется, но работать скорее всего не будет...
Так что рекомендую под MacOS собирать Qt-версию, с ней проблем нет. Требуется Qt 5.7-5.15, конкретно под macOS протестировано на Qt 5.7 и 5.12.
Pyk, я тут на днях поигрался с Emu80v4 и был сильно впечатлен. Очень все аккуратненько и дебаггер просто огонь. Спасибо тебе за такой эмулятор!
P.S. так впечатлился, что смержил PR про WAV-ы ;)
svofski, спасибо на добром слове! На "мелочи" всегда старался обращать внимание, но на самом деле я-то знаю, что эмулятору пока не хватает и некоторых весьма важных вещей вроде снапшотов или точек останова по доступу к памяти...
И за мерж спасибо, сейчас wav'ы из PA будут открываться в Emu80 :)
А между тем выяснилось, что в последних версиях есть какие-то проблемы с FDD на Векторе: опять не работает T-Rex (выдает ошибку диска), зависает демо Skynet, возможно и что-нибудь еще...
Вероятно, что-то сломал, когда добавлял поддержку Корвета :(
Разберусь, а пока при необходимости можно использовать февральскую версию 4.0.379, в ней с этим точно все ок.
Багфикс-релиз. Версия 4.0.422 от 22.07.2022:
https://emu80.org/news/v40422
Сайт эмулятора: https://emu80.org
Загрузить:
Qt-версия (рекомендуется):
Windows-сборка (portable): https://emu80.org/v4beta/Emu80qt_40422.zip
MacOS-сборка: https://emu80.org/v4beta/Emu80qt_40422_macos.zip
Portable SDL/wx-версия, windows-сборка:
https://emu80.org/v4beta/Emu80_40422.zip
Исходники:
https://github.com/vpyk/emu80v4
Изменения в версии 4.0.422:
Легенда:
+ Нововведение
* Изменение / улучшение
- Исправлен баг
! Известная проблема
- Восстановлена работа игры T-Rex, демо SkyNet и других программ на Векторе
(исправления в работе команды Read Address контроллера НГМД)
* Исправления в документации
В последней версии (хотя я не уверен, что раньше этого не было, просто так получилось, что сегодня запустил) обезжучиватель иногда не спешит интерпретировать мнемоники.
Вот тут должно быть
mvi d, 0
mov e, m
но показывается db 16h \ nop \ db 5eh. Если бы еще и lxi не декодировался, я бы спокойней к этому отнесся ;)
Это картина сразу после загрузки rom-файла, брекпойнт был поставлен заранее.
https://pic.maxiol.com/thumbs2/16585...ot20220723.png
Когда до адреса доходим обычным путем, все как правило устаканивается и мнемоники показываются декодированные. Так что большой проблемы в этом нет.
Смоделировал, подтверждаю, спасибо за багрепорт!
Вообще немного странно, даже просто смещение вверх/вниз в секции кода приводит к устаканиванию, даже без собственно отладки.
Да и происходит такое нечасто и не совсем пока понятно, когда именно, иначе давно бы уже заметил.
Код этот писался 5 лет назад, уже плохо помню что там и как, посмотрю на днях.
Кстати, по-моему F4 в дебаггере должен работать как "продолжить исполнение, пока не вернулись на текущий адрес". Иными словами, поставить на текущую строку одноразовый брекпойнт и продолжить исполнение. А сейчас если я стою на той же строке, где PC, F4 как будто ничего не делает.
Да. Обычно я стою в отладчике и затаскиваю дрег-н-дропом свежий ROM. В любом случае это проблема скорее косметическая. Есть такой эффект -- когда привыкаешь к новому, обращаешь внимание на всякие мелочи. Потом, когда уже знаешь что к чему, мелочи не замечаешь. Сейчас я мог бы и не заметить. Очень душевный отладчик :)
Спасибо! Наверное лучше подождать пока накопятся изменения на версию.
Натолкнулся на интересный баг в Emu80 при эмуляции моей программы.
ром:
https://github.com/parallelno/Vector...GameNoname.rom
баг репорт:
https://github.com/vpyk/emu80v4/issues/14
Посмотри пожалуйста. Заранее спасибо!
parallelno, посмотрю ближе к вечеру.
Описание бага звучит интригующе ;)
А можно ещё фичей подсказать? :))
- - - Добавлено - - -
Pyk, для отладки. А то иногда очень тяжко. :)
Можно, конечно. Я, конечно, и так догадываюсь, чего в отладчике не хватает, но тем не менее - вдруг я о чем-то и не подозреваю?
Вот только, если баги я еще смогу оперативно исправить, то добавлять новые фичи не смогу ориентировочно до октября в связи с нехваткой времени. Разве что что-то мелкое...
Из совсем мелкого это анноящее ограничение на количество брейк принтов. Было бы классно их увеличить хотя бы до количества влезаемого в окно интерфейса. :)
- - - Добавлено - - -
Менее мелкое:
Классно было бы иметь дополнительные фичи для отладки например брейк проиты на доступ к памяти, call stack, проигрывание до следующего halt, перемотку назад. Это бы сильно облегчило отладку
А и ещё иметь возможность видеть что в видео памяти нарисовано и видеть данные квазидисков.
А так же брейк принты на доступ к квазидиска
Ещё знать запрещено или разрешено прерывание в данный момент и октрыт ли доступ и какой именно к квазидиску.
- - - Добавлено - - -
И ещё красить ячейки в лампе памяти чтобы лучше понимать где буфыеры расположены.
- - - Добавлено - - -
Печатаю как курица лапой с телефона. Прошу прощения :)
Сюрприз, однако! Почему-то думал, что давно уже ограничения нет, а оказывается, так и не сделал...
В планах, но действительно чуть позже, когда опять появится время активно заниматься эмулятором. Поясни только насчет перемотки назад, что именно имеешь в виду? Кстати, выход в отладчик по HLT есть в настройках, но это глобально.
Есть в планах.
Не совсем понял? В графике или в hex? Графика и так отображается...
Подумать надо...
Флаг IFF показывается же?
Сделаю, это несложно.
Не совсем понял, поясни плиз
- - - Добавлено - - -
Да, содержимое стека и сейчас отображается - не совсем call stack, туда и данные попадают, но пользоваться при необходимости можно... Для начала можно, например, переход на адрес по клику сделать...
Хотки который перемещает pc на предыдущий адрес с восстановлением состояния системы на тот момент.Цитата:
Поясни только насчет перемотки назад, что именно имеешь в виду?
Отображается только то что лучем нарисовано, но если луч не успел добежать, но непонятно что в видеопамяти. Хочется видеть содержимое видео памяти в данный момент.Цитата:
Не совсем понял? В графике или в hex? Графика и так отображается..
Ага есть. Но хотелось бы иметь возможность добежать до вызова подпрограммы прерывания по хотки. Если не будет ограничения на кол-во брейки принтов то в принципе и не важно.Цитата:
Кстати, выход в отладчик по HLT есть в настройках, но это глобально
Ого, видать просмотрел. Спасибо за инфу. Поищу.Цитата:
Флаг IFF показывается же?
это скорее от ограниченности ui. Когда бегаешь по дате, сложно сориентироваться с каких адресов важная инфа. Было бы здорово иметь возможность выделить диапазон адресов и задать им цвет бэкграунда чтобы в следующий раз сразу когда возвращаешься к эти адресом видеть от куда до куда буфер.Цитата:
И ещё красить ячейки в лампе памяти чтобы лучше понимать где буфыеры расположены.
- - - Добавлено - - -
По поводу call stack. Хочется чтобы был список последних N адресов в которых программа изменила ps . Чтобы можно было проклинать их . Главный поинт фичи чтобы ответить на вопрос как мы здесь оказались. Как дополнение к этому было классно видеть значение всех регистров в момент перехода чтобы лучше понимать картину.
Я часто желал похожую фичу -- журнал команд, которые исполнились до точки останова. Чтобы посмотреть как именно получалось то, что получилось. По умолчанию можно сделать его маленьким, допустим на 256 шагов, но опционально хотелось бы на сколько хватает памяти. (Идея как в некоторых фотоаппаратах -- сохранять кадры до того, как нажата кнопка спуска затвора, потому что люди обычно хотят снять что-то, что было до того как они нажали на кнопку).
Это я тоже за. Особенно вот когда отлаживаешь фреймовые штуки с кучей всякой колбасни, часто бывает трудно понять что ты видишь -- ты глючишь, код глючишь, это предыдущий кадр, или это этот кадр, но мы отстали за лучом. Практично было бы иметь возможность включить на время моментальное отображение и дополнительно индикация текущего положения луча в момент останова.
У меня еще есть хотелка. Когда ставишь эмулятор на паузу по Alt-P он останавливает эмулируемый компьютер, но как будто бы продолжает активно работать сам. По загрузке, особенно если это винда и у тебя 16 или сколько там ядер, не особо видно сразу, а вот по температуре колен под наколенным компьютером, особенно летом, быстро становится заметно.
- - - Добавлено - - -
Не знаю как у кого, а мне часто достаются уже проклятые.
Лол :D
- - - Добавлено - - -
,,эх, октябрь, скорее бы ты уже. :)
- - - Добавлено - - -
Умная клава на телефоне знает больше о нас чем мы думаем :)))Цитата:
Не знаю как у кого, а мне часто достаются уже проклятые.
parallelno,
svofski,
что ж, все хотелки понял. Что-то сделать будет несложно, что-то - не очень, что-то - вообще пока непонятно как ;) Не обещаю, что сделаю все и сразу, но фичи полезные, так что постараюсь. Может быть, что-то получится и до октября, но обещать не буду.
Насчет паузы верно подмечено - вывод на экран продолжает работать. Если под виндой и видеокарта nvidia, можно попробовать запустить с параметром "-angle" (или через emu80qt-dx.cmd) - загрузка процессора может снизиться. Можно и на других видеокартах попробовать - мало ли... А вообще можно попробовать и оптимизировать...
Еще две маленькие хотелочки, просто для удобства тестирования. :)
1. иметь кнопку которая делает сразу две вещи: а - перезапускает систему, б - загружает последнее что было загружено.
2. автоматическое востановление брейк поинтов после перезагрузки эмулятора. А если они еще будут старатся находить места где они были, например по паттерну дампа, то будет вообще красиво!
parallelno, баг с переходом на нулевой адрес исправил. Была ошибка в инструкции CALL: чтение аргумента ошибочно интерпретировалось как стековая операция, происходил переход по адресу из кваза. Кстати, в v06x у @svofski похожее внешне поведение, может быть, и причина та же?
Новая сборка под Windows здесь (только exe, заменить в последнем релизе), исходники в репозитории.
Кстати, проверил в других эмуляторах: В emu картинка точно такая же, а в VV почему-то бордюр выглядит немного по-другому.
Pyk, спасибо!
- - - Добавлено - - -
Пока ждал фикса, починил одну багу. Но где-то есть ещё одна. :)
Кажется этот флаг неакуратно показывает статус.
После выполнения последовательности
флаг IFF все еще 1Код:1f9d xra a
1f9e sta 128
1fa1 out 10
Возможно я не совсем понимаю как это работает. Поправь меня пожалуйста если видишь несостыковки.
https://pic.maxiol.com/images2/16613...diskiffque.png
- - - Добавлено - - -
И прерываний не было когда выполнялся этот кусок кода .
- - - Добавлено - - -
ром:
https://github.com/parallelno/Vector...GameNoname.rom
Для того чтобы оттестировать, нужно перейти а другую комнату. Заранее спасибо !
parallelno, что-то я не понял суть проблемы и при чем тут этот кусок кода. Па адресу обработчика прерывания 38h стоит jmp 250h, ставим там точку останова: iff=0 и становится = 1 только после команды, следующей за ei: jmp 28f3h по адресу 2a9h. Приведенный выше фрагмент кода тоже должен вызываться из обработчика пррерывания?
Значит я неправильно понял смысл iff. Я думал этот флаг показывает 1 когда подключен квазидиск.
Вышеприведенный фрагмент выполняется не из обработчика прерываний.
Расскажи пожалуйста что показывает этот iff флаг.
- - - Добавлено - - -
Перечитал ветку. Да, я перепутал.
Ты ответил что iff показывает разрешено или нет прерывание, а у меня в голове отложилось другое. Сорян. :)
А подскажите друзья товарищи, как в эмулятор загрузить rom-образ? Конкретно стоит задача загрузить в эмулятор Специалиста образ rom с ассемблером. Или бейсиком.
Zidane, я знаю неколько способов.
1. перетащить rom файл на окно запущенного эмулятора.
2. написать в комендной строке emu80qt.exe romFileName.rom и нажать Enter
3. Из главного меню иди в File->Load&Run, locate your file and press Open.
В том то и проблема что не работает... Ладно, может РОМ кривой... Просто для справки поинтересовался, вдруг я чего упустил. Спасибо.
Zidane, судя по spec.conf там надо указать имя образа пзу, длину и конечный адрес
Pyk, спасибо за ваш эмулятор, очень полезен.
Вопрос про Вектор-06Ц Z80 и передачу ROM-файла в командной строке.
Локально в текущей папке лежит ROM, и есть подпапка x-emu80qt с эмулятором.
В эмуляторе был выбран Вектор-06Ц Z80.
1.Запускаем так: x-emu80qt\emu80qt.exe scuba.rom
результат - эмулятор открывается в режиме Вектор-06Ц БЕЗ Z80, грузится rom, и конечно не работает потому что не та конфигурация.
2. Так: x-emu80qt\emu80qt.exe vz scuba.rom
теперь открывается в режиме Вектор-06Ц Z80, но НЕ грузится rom, и приходится выбирать его руками.
Выглядит так, что оба случая это бага.
Хотелось бы, чтобы было и то и другое - и выбор правильной конфигурации, и запуск rom-а.
В целом ivagor ответил правильно - нужно в spec.conf указать другой файл. Но если расположение образа или адреса перехвата магнитофонных процедур отличаются, возможно, придется внести изменения и в spec.inc. Можешь написать в личку, что точно нужно сделать - подскажу. А советы насчет drag-and-drop, Load & run и т.п. относились к Вектору - там так исторически сложилось, что смысл rom-файлов немного другой.
- - - Добавлено - - -
nzeemin, надо так:
x-emu80qt\emu80qt.exe -vz scuba.rom