Open ShadowMaker opened 4 years ago
Полностью поддерживаю!
Я понимаю, что, возможно, с идеологической точки зрения текущая реализация имеет право на жизнь - но фактической пользы у этого нет. Очень неудобно дебажить код и данные, лежащие в страницах; вся адресация сбита и перепутана.
Нужно сделать (сознательно избегаю словосочетания "как в анриле") сплошной поток памяти с меняющейся в зависимости от страницы областью #C000-#FFFF, и понятную нумерацию страниц.
Присоединяюсь, переключалка - это было бы здорово. У xpeccy самый приятный дебаггер среди известных мне эмуляторов, но такая вот адресация доставляет некоторые неудобства.
Видится мне, лучшее решение - убрать режимы ram/rom - хотя бы для дизасма - и сделать ручную смену страниц во всех 4 окнах для группы спектрумов, а для остальных просто убирать этот блок (хотя, msx и gb тоже имеют 16Кб окна, но у картриджей они могут быть разные).
То есть всё будет работать от текущей активной страницы, включая сохранение, и меняешь страницу - сохранение/показ той страницы, на которую поменял? Так нормально вроде.
Только надо еще контрол со сменой банки и значением в порту (ты это наверное и имел ввиду под ручной сменой страниц).
В текущем билде всё устраивает?
Нет :) Вообще не понятно, что изменилось.
Судя по всему добавилась вот эта вкладка:
но вообще непонятно, как ей пользоваться, и это очень неудобно.
Мы имели в виду вот это:
если в дампе пишешь #C000, то он переходит на #C000 текущей банки. То есть, в дампе должна быть вся память с #0000 по #FFFF, где #C000-#FFFF находится актуальная банка из порта #7FFD (она тоже должна отображаться там).
То есть, память в дампе должна быть непрерывной, с #0000 и до #FFFF, и адресация страницы должна быть честная и удобная - с #C000, а не с #0000.
Так включи режим CPU, там как раз и показывается то, что видит проц. В режиме RAM показываются 16К страницы RAM. Вкладка, которой "непонятно как пользоваться" меняет страницы памяти во всех 4 банках, видимых CPU, чтобы дизасм и дамп по заданным адресам показывали именно их.
@samstyle mea culpa, теперь всё хорошо!
В текущем билде всё устраивает?
Не совсем. Состояние не сохраняется при выходе из отладчика (наставил маппингов, вернулся, назад в дебуггер - все потеряно опять).
Нужна возможность как-то переключить реальную текущую страницу.
"когда софт меняет страницы выводом в порт - они меняются" (с) якобы конфуций можно проверить в бейсике 48к, он по идее не должен выводить в 7ffd
"когда софт меняет страницы выводом в порт - они меняются" (с) якобы конфуций можно проверить в бейсике 48к, он по идее не должен выводить в 7ffd
Я вроде вообще не про это говорил.
тогда что такое "наставил маппингов"?
тогда что такое "наставил маппингов"?
на вкладке https://user-images.githubusercontent.com/8288103/85288849-1ac2df80-b49f-11ea-8b5e-708119933f19.png поставил какие мне надо страницы, вернулся назад в программу, потом назад в дебугу - всё сбросилось на дефолтовые значения. зачем так, если это виртуальные всё равно переключалки и показываются только в дебуггере?
Это карта памяти машины. Если при выполнении кода был вывод в 7ffd, эта карта меняется в соответствии с битами, которые туда выводится. Так что не удивительно, что она поменялась.
Это карта памяти машины. Если при выполнении кода был вывод в 7ffd, эта карта меняется в соответствии с битами, которые туда выводится. Так что не удивительно, что она поменялась.
Всё, понятно. Я забыл, что у 128k в меню на прерываниях постоянно 7 страницу фигачит. Тогда всё хорошо, спасибо.
Если попытаться разделить просматриваемую карту памяти и фактическую, которую видит CPU, то как тогда вообще отлаживать по шагам, например, если код выполняется в пространстве, которая вне "просмотра"? Это только больше путаницы внесет. Так что текущий вариант наименее ущербный.
Ещё не очень ущербный был бы, если все-таки сделать разделение просматриваемых и фактических областей памяти, и галку "keep page layout", но при просмотре другой страницы как-то визуализировать что CPU видит что-то другое. Но вот визуализацию этой "многослойности" даже сложно представить, чтобы она была интуитивно понятной и простой в использовании. Ненужное усложнение.
Такие мысли:
Мы уже про это говорили, ты сказал, что это нельзя сделать, потому что там другие есть кроме спектрумов. Давай может ключ/сеттинг сделаем или типа того. Ну не получается нормально пользоваться :(