MSX в proteus

MSX-совместимые компьютеры

Moderator: Shaos

Post Reply
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 20:39

MSX в proteus

Post by PVV »

Что бы не оффтопить тут решил сделать самостоятельную тему.
Проект не закончен, все в работе.

MSXtestR.PNG
MSXtestR.PNG (114.3 KiB) Viewed 28767 times

на данный момент уже можно запускать некоторые программы из картриджа.
v9938.dll работает только в текстовом режиме и Graphic mode I без спрайтов, так что с играми пока рано баловаться.
И, что самое важное! нашел две ошибки в x80_v11.dll :econfused: в командах с префиксом ED, исправил их и сделал x80_v12.dll.
i8255.dll в этой схеме, тоже правленная, были нюансы в последовательности отработки CS, RD и WR.

Я с MSX никогда дело не имел, для меня все это совершенно непонятно, вот разбираюсь...
Мне на данный момент интересно отработать работу мапперов памяти, которых существует масса, и понять на каком варианте остановиться при реализации в железе.
Основные варианты, как я понял:
- через регистр 0xFFFF, и так можно расшириться только на 4 блока в 64К, те 256К в одном слоте;
- и через порты 0xFC-0xFF, так можно расшириться до 256*16К=4МБ.
Что из этого предпочтительней и более популярно в использовании?
у меня есть два чипа памяти 44с256, вот на них хочу сделать 256К RAM, а с маперами пока не определился.
Если кто найдет программы, которые пойдут на этой версии v9938, то я бы их с удовольствием потестировал...
Attachments

msx.zip
(534.97 KiB) Downloaded 732 times

Last edited by PVV on 30 Mar 2018 15:55, edited 1 time in total.
Alekcandr
Doomed
Posts: 665
Joined: 01 Oct 2007 17:30
Location: Ukraine

Re: MSX в proteus

Post by Alekcandr »

PVV wrote:Мне на данный момент интересно отработать работу мапперов памяти, которых существует масса, и понять на каком варианте остановиться при реализации в железе.
Основные варианты, как я понял:
- через регистр 0xFFFF, и так можно расшириться только на 4 блока в 64К, те 256К в одном слоте;
- и через порты 0xFC-0xFF, так можно расшириться до 256*16К=4МБ.
Что из этого предпочтительней и более популярно в использовании?
Ага, мапперов существует масса. Только это не совсем мапперы, точнее так:
Регистр FFFF - это регистр расширения слота. Каждый из четырех слотов можно расширить, и получить еще четыре расширенных слота. Обычно расширяют 3 слот (последний).
Порты 0xFC-0xFF - это как раз и есть стандартный маппер памяти.

По хорошему надо делать и регистр FFFF, и порты FC...FF. Я у себя пока эти модули не делал. Информацию и схемы по это вопросу легко найти в интернете. Существует с десяток реализаций, поэтому ссылки приводить не буду. А мои схемы пока не готовы.

Да есть очень толковая книга по архитектуре MSX.
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
Alekcandr
Doomed
Posts: 665
Joined: 01 Oct 2007 17:30
Location: Ukraine

Re: MSX в proteus

Post by Alekcandr »

Ага. Ром/картридж начал выбираться по /SLTSL1 у мя. Но тест-рам вываливается толи в бейсик толи еще куда с ошибкой. Просьба. Выкладывайте продвижение проекта, с сам проектом в протеусе.
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 20:39

Re: MSX в proteus

Post by PVV »

Alekcandr wrote:Но тест-рам вываливается толи в бейсик толи еще куда с ошибкой.
Что за ошибка? в строке 200? это как раз проблема в x80.dll, ее надо заменить на 12ю версию, она в архиве есть, как и сам файл проекта из протеуса. Номер версии используемых dll пишется в 'консольном'(где всякие варнинги и прочее) выводе протеуса.
Alekcandr
Doomed
Posts: 665
Joined: 01 Oct 2007 17:30
Location: Ukraine

Re: MSX в proteus

Post by Alekcandr »

PVV wrote:
Alekcandr wrote:Но тест-рам вываливается толи в бейсик толи еще куда с ошибкой.
Что за ошибка? в строке 200? это как раз проблема в x80.dll, ее надо заменить на 12ю версию, она в архиве есть, как и сам файл проекта из протеуса. Номер версии используемых dll пишется в 'консольном'(где всякие варнинги и прочее) выводе протеуса.
Тут видимо все достаточно чувствительно. У меня протеус 8.6 SP2 (билд 23525). И окошко как-то у вас по другому выглядит (дисплея). Не видно обратного хода луча по кадрам и строкам.
Таки полный комплект нид, я то могу приделать чего ни будь. Но это не то.
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 20:39

Re: MSX в proteus

Post by PVV »

Alekcandr wrote: Тут видимо все достаточно чувствительно. У меня протеус 8.6 SP2 (билд 23525). И окошко как-то у вас по другому выглядит (дисплея). Не видно обратного хода луча по кадрам и строкам.
Таки полный комплект нид, я то могу приделать чего ни будь. Но это не то.
Я использую 8.5 SP0, до 8.6 не обновлялся еще.
Сделайте скриншот с тем, как это выглядит.

Снимок-7.png
Снимок-7.png (60.83 KiB) Viewed 28671 times

у меня вот так сейчас все выглядит, но v9938.dll еще дорабатываю, с цветностью не все гладко, как доделаю, выложу.
Касательно полного комплекта, так он и так полный, в архиве в первом посте этой темы, все dll_ки и проект протеуса там есть.
Last edited by PVV on 30 Mar 2018 15:56, edited 1 time in total.
Alekcandr
Doomed
Posts: 665
Joined: 01 Oct 2007 17:30
Location: Ukraine

Re: MSX в proteus

Post by Alekcandr »

Докладываю. С x80.dll мой косяк был. Обновил dll в свойствах до v1.2. Теперь тест рам запускается. Но всплыла еще проблемка, отвалилась клавиатура и на нажатие кнопок не реагирует.
Запускаю все это из проекта выложенного еще в предыдущей теме.
PVV wrote:Касательно полного комплекта, так он и так полный, в архиве в первом посте этой темы, все dll_ки и проект протеуса там есть.
В первом посте этой темы в zip архиве нет проекта протеуса. Есть только вот это msx.pdsprj.pdf.

Посмотрел pdf. В схеме на выходы U18 навешены диоды. Интересно зачем? Ведь у 74145 выходы с открытым коллектором или этот функционал не реализован в модели микросхемы.
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 20:39

Re: MSX в proteus

Post by PVV »

Alekcandr wrote:
PVV wrote:Касательно полного комплекта, так он и так полный, в архиве в первом посте этой темы, все dll_ки и проект протеуса там есть.
В первом посте этой темы в zip архиве нет проекта протеуса. Есть только вот это msx.pdsprj.pdf.
точно, мой косяк, перевыложил все с новыми dll. Теперь с цветами все ОК!
Alekcandr wrote: Посмотрел pdf. В схеме на выходы U18 навешены диоды. Интересно зачем? Ведь у 74145 выходы с открытым коллектором или этот функционал не реализован в модели микросхемы.
да, 74145 в протеусе не реализует ОК, пришлось ее 'доработать' простым способом :).

Еще, добавлю, в этом проекте используется bios(msx.bin) из b2m, а не с zx-pk, у него раскладка клавиатуры другая, но он быстрей стартует (быстрей проскакивает стартовая заставка).
Alekcandr
Doomed
Posts: 665
Joined: 01 Oct 2007 17:30
Location: Ukraine

Re: MSX в proteus

Post by Alekcandr »

Попробовал свежачек :)

Клавиатура работает.

С цветами получилось где-то около правды :) Предположу, что это связано с тем, что модель dispRGB имеет цифровые входы RGB. А нам нужен аналоговый.

Увидел маппер памяти. Жаль, что в протеусе нет модели 74670. Вот моя реализация маппера, пока не проверена.
Еще о маппере памяти. Стандарт MSX1.0 ничего не знает об этом маппере. Тут два варианта либо править биос (сделать предустановку регистров FC…FF), либо ставить уже биос MSX2.0.
PVV wrote:Еще, добавлю, в этом проекте используется bios(msx.bin) из b2m, а не с zx-pk, у него раскладка клавиатуры другая, но он быстрей стартует (быстрей проскакивает стартовая заставка).
С раскладной понятно, я ее спецом под нашу ямаху собирал и конвертор PS/2 я сейчас от caro использую. А вот почему биос с эмулятора b2m быстрей? Не понятно. Все биос-ы MSX1.0 одинаковые за исключение мелких правок, на скорость это точно не должно влиять. Хотя я подозреваю, в каком месте его хакнули, но это надо его вскрыть в IDA :)
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 20:39

Re: MSX в proteus

Post by PVV »

Alekcandr wrote: С цветами получилось где-то около правды :) Предположу, что это связано с тем, что модель dispRGB имеет цифровые входы RGB. А нам нужен аналоговый.
предположение правильное :esmile:
Alekcandr wrote: Увидел маппер памяти. Жаль, что в протеусе нет модели 74670. Вот моя реализация маппера, пока не проверена.
да, в протеусе нет симуляции 74670, скоро сделаю к ней dll, а пока сделал ее на рассыпухе.
Alekcandr wrote: Еще о маппере памяти. Стандарт MSX1.0 ничего не знает об этом маппере. Тут два варианта либо править биос (сделать предустановку регистров FC…FF), либо ставить уже биос MSX2.0.
по отсутствию обращения к портам fc-ff я догадывался, что здесь что то не так, теперь понятно что. И, что меня сбило с толку, тест памяти этот маппер не видит...
Решил сделать расширение памяти через субслот, а тест памяти упорно говорит, что у меня 64К, тогда как в схеме 128К. Дополнительную память не обнаруживает, только слот3.2, а слот3.3 не видит.
Для чего z80 тормозится по WAIT? убрал торможение, все работает, и симуляция быстрей идет, оставил пока так.

MSXtestR_FFFF.PNG
MSXtestR_FFFF.PNG (127.67 KiB) Viewed 28566 times

Попытался подключить ром от msx2, а на дисплее только черный экран... :( в vdp проходит только одна запись в регистр и все. msx2 с tms9918 будет работать или надо уже 9938? и еще, что там с часами для msx, они обязательны? равно как и субром обязательно присутствие?
Attachments

msx_FFFF.zip
(356.35 KiB) Downloaded 582 times

Alekcandr
Doomed
Posts: 665
Joined: 01 Oct 2007 17:30
Location: Ukraine

Re: MSX в proteus

Post by Alekcandr »

С этим тест-рам не все так просто, толи он сам себе на уме, толи он на биос подвязывается. Для работы тест-рам нужно рам минимум 64кБ. Без биос-а MSX2 не будет видеть видео-рам больше 16кБ.
PVV wrote:Решил сделать расширение памяти через субслот
Что слоты, что саб-слоты полностью равнозначны. Есть исключения для некоторых подключаемых железок, но это больше редкость, чем правило.
PVV wrote:а тест памяти упорно говорит, что у меня 64К, тогда как в схеме 128К.
Памяти будет 64кБ, а вот маппер с 128кБ должен увидеть.
PVV wrote:Дополнительную память не обнаруживает, только слот3.2, а слот3.3 не видит.
Без разницы в каком слоте память, должен видеть.
PVV wrote:Для чего z80 тормозится по WAIT? убрал торможение, все работает, и симуляция быстрей идет, оставил пока так.
Ну, видимо ноги растут с тех времен, когда память была медленная, еще писали что звуковые чипы подглючивали (но это не точно). Пускай без вайт-а. Поплывут времянки для магнитофона, но на этом этапе это не важно.

С MSX2 я погорячился :) Забыл написать, что без часов MSX2 не заведется. По остальным вопросам чуть позже отвечу.

И надо таки в биос-е MSX1 предустановку маппера рам сделать. Иначе все это бессмысленно проверять. Тогда этим и займусь, сегодня выложу тут.
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 20:39

Re: MSX в proteus

Post by PVV »

Alekcandr wrote:
PVV wrote:Дополнительную память не обнаруживает, только слот3.2, а слот3.3 не видит.
Без разницы в каком слоте память, должен видеть.
я память подключал в разных комбинациях и 3.0,3.1 и в просто слот1, слот2, все равно говорит 64К в слоте 3.0 или слоте1, те что первое опросил и увидел и все.
Alekcandr wrote:
PVV wrote:Для чего z80 тормозится по WAIT? убрал торможение, все работает, и симуляция быстрей идет, оставил пока так.
Ну, видимо ноги растут с тех времен, когда память была медленная, еще писали что звуковые чипы подглючивали (но это не точно). Пускай без вайт-а. Поплывут времянки для магнитофона, но на этом этапе это не важно.
буду DRAM когда подключать(сделаю dll), посмотрю что будет с времянками.
Alekcandr wrote: С MSX2 я погорячился :) Забыл написать, что без часов MSX2 не заведется. По остальным вопросам чуть позже отвечу.
мне то и нужно понимание минимальных требований для запуска msx2.
Alekcandr wrote: И надо таки в биос-е MSX1 предустановку маппера рам сделать. Иначе все это бессмысленно проверять. Тогда этим и займусь, сегодня выложу тут.
править биос смысла нет, проще нужные dll написать для запуска с оригинальным биосом.
С часами там все достаточно просто, а вот 9938 это уже серьезней...
Alekcandr
Doomed
Posts: 665
Joined: 01 Oct 2007 17:30
Location: Ukraine

Re: MSX в proteus

Post by Alekcandr »

PVV wrote: я память подключал в разных комбинациях и 3.0,3.1 и в просто слот1, слот2, все равно говорит 64К в слоте 3.0 или слоте1, те что первое опросил и увидел и все.
Ну, так биос проходит последовательно по всем слотам в поиске памяти, какую первую найдет такую и будет в дальнейшем использовать (в первом приближении). Еще возможны варианты сегментации памяти. Когда допустим 16кБ в первом слоте, а 16кб во втором слоте (но это не точно. были там какие-то глюки. надо экспериментальным путем проверить)
PVV wrote: править биос смысла нет, проще нужные dll написать для запуска с оригинальным биосом.
Не не не. У меня биос оригинальнее некуда :) Настраивать маппер задача биос-а, и только его.
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
Alekcandr
Doomed
Posts: 665
Joined: 01 Oct 2007 17:30
Location: Ukraine

Re: MSX в proteus

Post by Alekcandr »

И что есть оригинальный биос? Если взять конкретную машинку Sony HB-10. Да в ней зашит свой оригинальный биос. Но время не стояло на месте. Позже в биос-е нашли ошибки. И уже в новые машинки прошивали свой оригинальный биос с учетом исправленных ошибок. А вот возьмем, например YIS-503IIR. В его биос-е есть грубое отхождение от стандарта msx. Вот такая команда [xor a: out (0a8h),a] инициализации начального запуска. А должно быть [ld a,082h: out (0abh),a]. И нечего все работало, потому что не было у машинки ВВ55, а была ASIC микруха.

Это я к чему. Мой биос строго придерживается стандарта msx. К тому же в нем исправлены все найденные ошибки.

Пока разбирался, толи глюк словил у msx1 c с маппером памяти, толи нет. Маппер не инициализирован, а бейсик кажет наличие 32кБ. Хотя где msx1, а где маппер памяти. Не было у msx1 этого маппера в стандарте. Это потом уже такие чудные машинки появились - msx1.5.

Кстати наша ямаха YIS-503IIR и есть такой msx1.5 :)

Слепил биос спецом под msx1.5 (msx1 + маппер памяти).

Image

По поводу MSX2. Вечером постараюсь на вопросы ответить. Самому интересно. У меня конечно модульная конструкция MSX, тасуй модули как хочешь. Но не все я попробовал :)
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
Alekcandr
Doomed
Posts: 665
Joined: 01 Oct 2007 17:30
Location: Ukraine

Re: MSX в proteus

Post by Alekcandr »

PVV wrote:Попытался подключить ром от msx2, а на дисплее только черный экран... в vdp проходит только одна запись в регистр и все.
Да наблюдается черный экран. Заглянул в биос. Биос зациклился в потугах достучаться до часов.
PVV wrote:msx2 с tms9918 будет работать или надо уже 9938?
Не будет работать. По факту получаем зеленый экран. И опять вечный цикл в биосе. Даже если это пропатчить (гипотетически). Станет вопрос ребром по быстродействию VDP. V9938/58 грубо говоря по времени доступа в два раза быстрее. И тут придется много переписывать, а оно нам надо? А еще 9A, 9B регистры отзеркалятся. В общем фигня получится :)
PVV wrote:и еще, что там с часами для msx, они обязательны?
Уже ответил. Не понятно, с какого перепугу так биос написан, что без часов он тупо зависает. Надо биос патчить, отучать от часов.
PVV wrote:равно как и субром обязательно присутствие
Саб-ром обязателен. Там по сути все фичи MSX2 и реализованы. И новый маин-ром (старый с косметическими изменениями) постоянно переплетается с саб-ром-ом.
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
Post Reply