PDA

Просмотр полной версии : Переключение банок в ZS Scorpion



ARTi
20.07.2011, 15:24
Здравствуйте! Решил открыть тему в этом разделе, чтобы сильно не пинали по яйцам за изъезженные вопросы. На которые я, кстати, искал ответы по этим вашим Интернетам и по данному форуму, но не нашел...
Итак, у меня встал большущий вопрос: как именно переключаются банки ПЗУ у Скорпиона - когда TR-DOS может быть отображен, а когда блокирован даже при выполнении по адресам 15616...+256 (или где-то там). Дело в том, что я пробовал и так, и эдак, даже приделал программное управление турбированием (чтение портов 0x1FFD и 0x7FFD), однако ПЗУ Скорпиона не торопится интерактировать с пользователем, а только лишь кажет сначала черный экран, а затем заполняет его грязью.
Например, у обычной модели 128k переключение в TR-DOS работает лишь из 48-го ПЗУ, а из 128-го уже нет. Какие исключения/перекрытия по этому поводу в Скорпионе?
Разобью вопрос на мелкие и добавлю еще по теме:
1. В CPU0 может быть отображена только RAM0 или и RAM8 тоже?
2. Экранная область может быть только в RAM5/7 или и в RAM13/15?
3. Какие есть еще подводные камни при подключении доп. бит в порту 0x1FFD для получения 1024k?
4. Порты TR-DOS могут быть включены только при отображенном ПЗУ TR-DOS или также при отображенном мониторе Скорпиона?
5. Есть ли какие-либо изменения этих правил в зависимости от модели Скорпиона?
6. Какое ПЗУ Скорпиона лучше всего использовать для отладки? (если можно, ссылку на соответствующие образы банок 128, 48, монитор и ДОСа).
Вот, вроде кончил. Да, я сейчас разглядываю какую-то схему Скорпиона, но мало что понимаю. Просьба не предлагать смотреть исходники других эмулей, ибо 1) как я понял инфа по некоторым вопросам противоречивая или зависит от конкретных моделей и 2) я по работе и так зырю и правлю чужие исходники, особенно это касается C/C++ (люблю и уважаю), так что увольте )))
Надеюсь на подробные и развернутые ответы, так сказать, для идиотов. Спасибо.

null_device
20.07.2011, 16:06
Во-первых, о каком скорпионе идет речь (зеленый\желтый) и в какой комплектации?
Один из источников "про скорпион" - тут (http://scorpion-zs.narod.ru/).
----
По поводу распределения памяти в скорпионе (портам управления), инфа лежит тут (http://zx.pk.ru/showthread.php?t=11490&highlight=scorpion+rom) и тут (http://zx.pk.ru/showthread.php?t=452&highlight=scorpion+rom).

ARTi
20.07.2011, 16:54
Спасибо за интересные ссылки! Однако, по большей части, там все по поводу RAM-ов, а у меня вопрос про ROM-ы (и порты, какие и когда включаются в пространство в/в).
По первой ссылке для меня полезна полная инструкция по эксплуатации, но там вообще инфа противоречивая - на рисунке ROM0 это 48к ПЗУ и ROM1 - 128к, а далее написано наоборот ))) И кому верить? Вообще я у себя сделал по варианту: ROM0 - 128, ROM1 - 48, ROM2 - Monitor, ROM3 - TR-DOS. Но я так до сих пор и не знаю, как правильно? Ясным подтверждением моего незнания - не желающий нормально проходить сброс эмулируемый комп...

Black_Cat
20.07.2011, 18:24
1. В CPU0 может быть отображена только RAM0 или и RAM8 тоже?Только RAM0


2. Экранная область может быть только в RAM5/7 или и в RAM13/15?только в RAM5/7, расширенных видеорежимов на Скорпе не было


3. Какие есть еще подводные камни при подключении доп. бит в порту 0x1FFD для получения 1024k?Есть любительский самопальный вариант (D6, D7 #1FFD), и есть КАЕвский вариант (D6 #7FFD, D7 #1FFD), рекомендую для программ использовать последний, но в эмуле сделай оба.


4. Порты TR-DOS могут быть включены только при отображенном ПЗУ TR-DOS или также при отображенном мониторе Скорпиона?только при входе через TR-DOS, т.е. когда сначала входят в TR-DOS. На Скорпе можно включить сервис-ПЗУ и без входа в TR-DOS, через D1 #1FFD.


у меня вопрос про ROM-ы (и портыпорядок:
0 - 128
1 - 48
2 - сервис
3 - трдос

Коммутация страниц ПЗУ по D4 #7FFD и входу в TR-DOS, а через D1 #1FFD попадаешь сразу в сервис из любой ПЗУ.
Рекомендую в эмуле ещё сделать выбор коммутации по КАЮ и Фениксу

ARTi
20.07.2011, 19:03
Black_Cat, спасибо, я конечно же сделаю как угодно, лишь бы все было разложено по полочкам, сейчас все пока в куче лежит и тухнет... А за развернутый ответ спасибо, кое-что прояснилось, наконец. Но если будет не лень, опишите, пожалуйста, упомянутые другие варианты.
И еще вопрос - в каких разновидностях Скорпиона и других моделях (КАЙ, Профи, АТМ) можно прочитать текущий конфиг памяти, и как? Например, я читал про запоминание некоторых бит в канальных рег-рах AY, но несколько разных вариантов (какой правильный?), а также кто-то писал, что нек-рые биты конфига можно прочитать с 0x1FFD/0x7FFD, но ведь это может изменить скорость, разве такое правильно?
Спасибо.

Black_Cat
20.07.2011, 19:57
в каких разновидностях Скорпиона и других моделях (КАЙ, Профи, АТМ) можно прочитать текущий конфиг памяти, и как?
токо в Скорпе турбо из порта А АY:

D0 - D0 #7FFD
D1 - D1 #7FFD
D2 - D2 #7FFD
D3 - D3 #7FFD
D4 - D4 #1FFD
D5 - D4 #7FFD

---------- Post added at 19:57 ---------- Previous post was at 19:48 ----------


если будет не лень, опишите, пожалуйста, упомянутые другие вариантыкинь мне своё мыло

lisica
20.07.2011, 19:58
Итак, у меня встал большущий


Вот, вроде кончил.
C таким подходом не к спектруму...:v2_wink2::v2_dizzy_biggrin2: :v2_dizzy_biggrin2::v2_dizzy_biggrin2:

ARTi
20.07.2011, 21:55
lisica, может, Вы и правы, а то сколько лет я др*чу на свой эмулятор, а толку мало, хотя, с другой стороны, именно когда встает вопрос, дело продвигается быстро (ой, только не надо мне про то, что НГ чаще - вопросы ведь разные бывают).

Black_Cat
21.07.2011, 00:48
ARTi, здесь есть описание работы всех стандартных системных портов и большей части портов объединительной концепции Хiмеra: Стандартизация и развитие портов ZX Spectrum. (http://zx.clan.su/forum/7-57-1) . В объединительной концепции Хiмеra есть возможность читать значение портов управления памятью, при том без конфликтов, если тебе нужен именно такой функционал.

ARTi
21.07.2011, 01:39
Black_Cat, да, я видел и почитывал ту тему - все это можно сделать, по типу порт=функция, а потом навесить через конфиг на любые адреса с любыми масками в любые пространства в/в (пока что это только normal/dos) и с любым приоритетом (в случае если какой-то адрес выбирает больше одного порта из-за неполной дешифрации).
Но у меня пока не реализованы задержки по видеопамяти и эмуляция ВГ поверхностна, плюс мне хотелось бы позапускать "живые" системы - те, которые раньше были популярны и под которые писан софт - игры/демо. А у меня даже обычный Скорпион не запускается ;)
Как только пойдут у меня популярные системы, портовых функций можно наплодить любых, красивых и разных, а прописать их в конфиге даже сейчас не составляет труда.

lisica
21.07.2011, 14:47
ARTi, Извини, если обидел, яж, всё таки пошутил...

ARTi
21.07.2011, 15:34
lisica, да ничего такого даже и в планах не было, я не обидчивый :), я просто поскупился на смайлики...

savelij
21.07.2011, 18:29
только при входе через TR-DOS, т.е. когда сначала входят в TR-DOS. На Скорпе можно включить сервис-ПЗУ и без входа в TR-DOS, через D1 #1FFD.

А вот с этого места поподробнее пожалуйста. Что то я опять пропустил.

ARTi
22.07.2011, 02:19
А что конкретно не так? Какая инфа противоречива или неверна?

ARTi
13.08.2011, 06:02
Кажется, понял, почему не работает как надо. ПЗУ и порты как раз переключаю правильно, а вот в командах напортачил что-то такое несуразное, что даже тесты проходит как-то странно...
Так что тему можно закрывать, всем спасибо :)

ARTi
20.08.2011, 19:58
А нет. Все оказалось куда проще. Банки ПЗУ, которые я надыбал, были от разных версий, т.е. не согласованы между собой. Перелопатил часть кода, отвечающего за эмуляцию команд, попутно исправил пару ошибок, при этом вообще ничего не изменилось, а головная боль осталась. Тогда я, наконец-то, решил подсунуть эти банки в другой эмулятор, отчего последний благополучно заколдобился с теми же визуальными эффектами, что и у меня. Тут я и допер - а банки-то гнилые.
После подсовывания правильных банок все встало и заработало как надо. Ну или почти все. Даже монитор показывается по NMI и скорость переключается (если в пространстве портов в конфиге указать соотв. ф-и). А вот при попытке входа в 128 TR-DOS через стартовое меню висим с красивой надписью внизу экрана "128 TR-DOS". Похоже, теперь я уперся в недостатки сильно упрощенной реализации ВГ93.

Ewgeny7
22.08.2011, 16:08
вот при попытке входа в 128 TR-DOS через стартовое меню висим с красивой надписью внизу экрана "128 TR-DOS". Похоже, теперь я уперся в недостатки сильно упрощенной реализации ВГ93.
Нет. Это недостатки эмулятора :)
При старте ТРДОС128 опрашивается порт #1F, куда в этот момент поступают сигналы INR и DRQ с контроллера тырдоса. Для простоты эмуляции, в момент работы тырдоса-128 можно выставлять на чтение в порту 1F значение #60. Тогда работа продолжится без висяков.

---------- Post added at 16:08 ---------- Previous post was at 16:04 ----------

Что за мегапзу ты используешь?
Если Скорп без ПрофПЗУ, то используй версию 2.95. Если с ПрофПэ, то - 4.01.
Остальные версии глюкодромны в разной степени. Правда, и указанные тоже грешат, но в меру :)

ARTi
22.08.2011, 19:58
Нет. Это недостатки эмулятора :)
Так я об том и гуторю - о сильно упрощенной реализации ВГ93 у меня в эмуляторе.

При старте ТРДОС128 опрашивается порт #1F, куда в этот момент поступают сигналы INR и DRQ с контроллера тырдоса. Для простоты эмуляции, в момент работы тырдоса-128 можно выставлять на чтение в порту 1F значение #60. Тогда работа продолжится без висяков.
Так с обычным 128-м тырдосом у меня все хорошо, проблемы начались со скорпионовским, видимо нужны какие-то тонкости, а у меня даже и близко этих тонкостей нету. Затычки я не люблю, так что придется делать как следует.

Если Скорп без ПрофПЗУ, то используй версию 2.95.
Да, с ней все стало в порядке, жаль я сразу не допер это проверить, все глаза проглядел, пока пытался найти у себя ошибки (и ведь нашел же, да только не те).
До ПрофПЗУ мой эмулятор пока не дорос.

Ewgeny7
26.08.2011, 09:05
Так с обычным 128-м тырдосом у меня все хорошо, проблемы начались со скорпионовским, видимо нужны какие-то тонкости, а у меня даже и близко этих тонкостей нету.
Я тебе про скорпионовский тырдос и говорю. Он отличается от обычного.