ZX Evolution Rev C + ZXM-SoundCard Extreme + NeoGS.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
А не пробовал поставить в твоём коде вызова TR-DOS вместо адреса #3d00 адрес любого RET в ПЗУ48? Тогда, по идее, для отладки эмуляция связки +3 с TR-DOS не нужна, а нужно только написать корректный код для возврата из ПЗУ48 в ПЗУ +3, и отладить его в любом эмуле с приличным дебаггером, поддерживающим +3. А потом, после отладки, просто заменить назад в коде адрес RET в ПЗУ 48 на адрес #3D00.
Последний раз редактировалось Spectramine; 21.09.2015 в 02:23.
Блин, я думал над этой идеей, но меня остановило то, что вход и выход из 48-го ПЗУ не вызывает аппаратной подемны ПЗУ. Но до меня не доперла мысль о том, что на время отладки можно сделать костыль в виде принудительного переключения ПЗУ кодом, а в релизе эти костыли отломить. Правда придется еще тащить в ОЗУ код переключения ПЗУ, но эта проблема решаемая.
ZX Evolution Rev C + ZXM-SoundCard Extreme + NeoGS.
Так в любом случае ПЗУ +3 назад придется включать кодом (точнее, заблаговременно создать код в ОЗУ, который при выходе из ПЗУ48 вернёт ПЗУ+3). TR-DOS при впечатанном ПЗУ48 отрабатывает более-менее прозрачно (как процедура по адресу #3d000), то есть - включили ПЗУ 48, попали на #3d00, автоматом подставилась TR-DOS, работает, по команде RETURN вызвала RET в ОЗУ, этим обратно вернулось ПЗУ 48 и возвращаемся по адресу на стеке на код, который должен переключить ПЗУ 48 на +3.
То есть временных костылей нет, код переключения ПЗУ назад нужен по-любому, просто вместо вызова TR-DOS ставишь адрес заглушки RET в ПЗУ 48 , а после отладки возврата в ПЗУ +3 - вместо адреса заглушки ставишь #3D00.
Блин, надо просто протрассировать ПЗУ +3 на предмет вызова ПЗУ-48. Например, прыжок в какой-нить BEEP и выпрыг оттуда. И сделать по образу и подобию. Эх, руки бы дошли только...
---------- Post added at 02:33 ---------- Previous post was at 02:28 ----------
Ха! Нет, не все там так просто, вспомнил я. Пункты меню - это не подпрограммы, а переходы. У меня без трассировки не получилось сделать корректный возврат в меню без разрушения BASIC'а.
ZX Evolution Rev C + ZXM-SoundCard Extreme + NeoGS.
Даже если переходы, можно 1) закинуть в ОЗУ адрес меню +3; 2) закинуть необходимый код для переключения из ПЗУ48 в ПЗУ+3, 3) потом закинуть код для переключения в ПЗУ48, 4) использовав 3), вызвать из ПЗУ48 заглушку RET, 5) вернуться через подготовленный в ОЗУ код в ПЗУ+3 на закинутый в стек адрес меню.
Где-то так. В общем, надеюсь, у одного из нас получится)
Посмотрел я. Не смог) Что я накопал - вызов обычных процедур ПЗУ48 делается через RST $28; DW адрес . Но не всё так просто, для входа в TR-DOS надо подготовить страницы памяти и системные переменные. К тому же TR-DOS не отрабатывает прозрачно, а выходит по RETURN в какой-то определённый адрес ПЗУ48.
Кстати, код Алекса вроде как после RETURN в TR-DOS возвращает в меню +3, правда, после сброса (наверно, побочный эффект, и не факт, что стабильный).
---------- Post added at 20:37 ---------- Previous post was at 20:27 ----------
И ещё выяснил, что подключить Beta Disk к +3 очень геморройно: http://zx-pk.ru/showpost.php?p=212164&postcount=13 , надо серьёзно переделывать схему подключения Beta Disk, с учётом портов +3, иначе можно даже убить спек. Думаю, вряд ли кто за такое возьмётся.
Это конечно так, но универсальный контроллёр существует — Контроллер BDI для фирменного Sinclair ZX-Spectrum и даже продаётся на барахолке.
В правильно заданном вопросе содержится половина ответа
Очень легко, всего лишь нужно:
1.Написать MV1971
2.Перевести ему денег
3.Сходить на почту
4.Воткнуть полученную платку в системный разъём
За последние 3 года многие кстати именно так и поступили, "отээрдосили" свои серые и черные спектрумы. А тем кто еще не отээрдосил, настоятельно рекомендую это сделать )
Куплю корпус и материнку от Spectrum +2/+3
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)