По моей просьбе daniel уже запускал на реальных фирменных 48м и 128м, тест висит, как положено.
Вид для печати
goodboy, дешифрация джойстика делается по маске 0xE0. Выборка происходит при нулях.
Настройка дешифрации портов для джойстика почему-то не прикручена. Видимо пропустил.
Для других устройств дешифрацию можно подредактировать в vmz файле, где хранится конфигурация машины.
Надо будет прикрутить и для джойстика.
А какая дешифрация для джойстика корректная для оригинальных 48к, 128к и пентагона?
ещё бы копирайт поправить с:
Copyright 2001 - 2015 Alex Makeev
на:
Copyright 2001 - 2018 Alex Makeev
;)
Вот новая версия 2.9.3.6:
https://drive.google.com/file/d/18MZ...ew?usp=sharing
- добавлен код настройки дешифрации портов, многие устройства теперь сохраняют и загружают настройки дешифрации портов в конфигурации. Их можно править текстовым редактором в vmz файле).
- covoxPentagon, CovoxScorpion и CovoxProfi удалены, вместо них добавлены более универсальные CovoxMono и CovoxStereo (настраивается вручную в vmz файле)
- исправлен баг с мерцанием всплывающего меню Wizard окна Settings при первом нажатии
- подчищен код DirectX
- обновил год в окне about :)
Немного о настройках дешифрации портов. Устройства сохраняют их в виде следующих аттрибутов:
- "noDos": если true, то порт открывается только при отключенном DOS пзу
- "mask" или "maskXXXX", где XXXX - это название порта (если их несколько) - это маска выборки. Единички в двоичном представлении указывают на биты адреса, которые учавствуют в выборке
- "port" или "portXXXX" - это собственно адрес порта
Все просто:
"n" - значит данная адресная линия не участвует в дешифрации вообще - эти сигналы на дешифрацию просто не идут (а значит, могут быть любыми) и ни на что не влияют.
"X" - значит, что эти значения могут изменяться в соответствии с желаниями программиста, выполняя определенные функции. Т.е. в самой дешифрации они не участвуют, но в рамках работы "сдешифрированного порта" выполняют дополнительные функции. Так, если брать порт #FE", то сброс адреса A3 устанавливает цвет бордюра в Bright 1, комбинация значений A7 и A6 выбирает тип графического режима, а A5=0 отключает ПЗУ для работы CP/M.
Аналогично следует трактовать данные символы применительно к другим портам, если такое встретится. Есть ли еще такое в АТМ1 не помню, но в АТМ2(+) такое встречается во многих портах, в частности, в портах диспетчера памяти и системном порту, где помимо шины данных для передачи параметров подобным образом участвует и шина адреса.
Похоже это не так. Благодаря zebest обнаружилось, что с дешифрацией только по A5=0 на модели 48к early фейлится тест из аттачмента.
Если поставить дешифрацию по A7=A6=A5=0, то весь тест проходит без ошибок.
Я поспешил поставить дешифрацию для кемпстон джойстика только по А5, для исправления, нужно после выбора модели в vmz файле подредактировать маску порта - поставить ее равной 0xE0:
Или исправить конфигурацию 48к модели в файле machines.config, тогда при выборе модели сразу правильная будет загружаться:Код:<Device type="ZXMAK2.Hardware.General.KempstonJoystick, ZXMAK2.Hardware" noDos="True" mask="0xE0" port="31" hostId="" />
с маской 0xE0 для кемпстон джойстика тест проходит без проблем:Код:<Bus name="ZX Spectrum 48" modelId="Sinclair48">
<Device type="ZXMAK2.Hardware.Spectrum.UlaSpectrum48" />
<Device type="ZXMAK2.Hardware.General.BetaDiskInterface" />
<Device type="ZXMAK2.Hardware.General.AY8910" frequency="1773400" maskAddr="0xC002" maskData="0xC002" portAddr="0xFFFD" portData="0xBFFD" />
<Device type="ZXMAK2.Hardware.General.BeeperDevice" bitEar="4" bitMic="3" />
<Device type="ZXMAK2.Hardware.General.TapeDevice" />
<Device type="ZXMAK2.Hardware.General.KeyboardDevice" />
<Device type="ZXMAK2.Hardware.General.KempstonJoystick" noDos="true" mask="0xE0" port="0x1f" />
<Device type="ZXMAK2.Hardware.General.Debugger" />
<Device type="ZXMAK2.Hardware.Spectrum.MemorySpectrum48" />
</Bus>
https://i.imgur.com/fgO5O7w.png