MSX в proteus

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

Moderator: Shaos

PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: MSX в proteus

Post by PVV »

Моя макетка вряд ли будет готова раньше конца лета. Я еще не решил для себя, что на ней должно быть и по какому направлению идти. Глобальный камень преткновения, сколько и какого ОЗУ делать. Если делать DRAM, то автоматом нужны мультиплексоры и элементы организации рефреша для А7... ну и маппер на порт FC, а если поставить статику, то все очень упрощается, что очень заманчиво для макетки :), просто DRAM на 256КБ, что у меня есть это какая то полумера получится, не принципиально больше чем 128КБ на статике, и мало для опытов с СимбОС. Получается, что если заморачиваться с DRAM, то ставить уже SIMM на 1МБ. (сразу акцентрую, не хочу использовать имеющиеся на 512КБ, или покупать еще SRAM, а хочу использовать имеющиеся на 32КБ чипы только :) как дешевые и общедоступные). В остальном на плате будет - z80, ROM, v9958+128КБ и звук AY, а вот с устройством загрузки, делать его на макетке или , все же, вставляемым в слот, еще, то же , не решил. BeerSD, на данный момент меня вроде как устраивает, если не увижу глобальных подводных камней, то буду использовать его и сделаю его на интегрированным на макетке. Опять же, если SPI интерфейс для SD будет на плате, то сразу и часы поставить SPI_ные, в коде их поддержать проблем не вижу...

Что касается BEER_SD.
Я дизассемблировал код версии 1.9, и привел его к читаемому виду, используя исходник версии 1.8, я думаю наследники автора не будут против этого, и начал разбираться с работой FAT16. Есть непонятные моменты, в которых я не пойму, почему сделано именно так, есть ли какие то объективные на то причины или просто автор не успел это доделать :(...
В частности, при форматировании на PC диска в FAT16, в нулевом секторе нулевой дорожки создается запись о (до) четырех первичных разделах, так вот эта информация используется при начальной инициализации для определения, где читать код начального загрузчика, вычитывается этот начальный загрузчик, передается на него управление, здесь все логично, а дальше - в секторе с этим начальным загрузчиком повторяется запись о первом (только ли о первом? я еще не разобрался) разделе и идет расчет внутренних переменных(DPB) уже по этой, дублированной, записи, но! для работы эту запись нужно модифицировать, что вероятно делается в программе hprep.com (еще совсем не смотрел), но а зачем это все? почему нельзя сразу все пересчитать по данным из нулевого сектора и трека? если не модифицировать запись, параметр FIRREC занулить, то MSX-DOS.SYS не загрузится...
во вложениях исходник BeerHDD ver1.9 и BeerSDv1.9 с образом диска, который загружается как с SD так и с HDD в b2m.

Что касается функционала, то и SD v1.8 и v1.9 повторяют возможности HDD версии, я лишь функции работы с HDD заменил на SD, разве что мои ошибки могли добавиться :). SD карты поддерживаются как SDC так и SDHC(более 4ГБ, но для FAT16 на них надо создавать раздел не больше 4ГБ, соотв можно сделать 4 первичных раздела по 4ГБ, те 16ГБ задействовать).

Есть желание встроить в прошивку SDv1.9 функцию записи загрузочной boot записи, что бы можно было на PC карту разметить и отформатировать в FAT16, закинуть на нее MSXDOS.SYS и COMMAND.COM, вставить в MSX, из BASICa выполнить CALL FORMAT и записать этот boot...
You do not have the required permissions to view the files attached to this post.
Alekcandr
Doomed
Posts: 665
Joined: 01 Oct 2007 10:30
Location: Ukraine

Re: MSX в proteus

Post by Alekcandr »

PVV wrote:Моя макетка вряд ли будет готова раньше конца лета.
На самом деле это не очень долго :)
PVV wrote:Я еще не решил для себя, что на ней должно быть и по какому направлению идти.
Тут главное начать делать. Я бы минимальную конфигурацию собрал для первого запуска. А дальше уже добавлял. Там и понимание придет, что еще нужно на основной макетке, а что вынести на модули.
PVV wrote:Глобальный камень преткновения, сколько и какого ОЗУ делать.
Для меня выбор был очевиден. По причине отсутствия, какой либо элементной базы. Прикупил статику 512Кх8. Думаю такой объем памяти можно для себя унифицировать и использовать во всех конструкциях. Ну, наверное, еще 16…32Кх8 надо по мелочи.
По объему сразу делать 1024Кбайт. Этого должно хватит в 95% случаев.

В моем случае я поставил один чип статики 64Кх8. Очень было заманчиво. Вуаля и вопрос с ОЗУ закрыт. Сейчас в ближайших планах сделать модуль на 1024Кбайт.
PVV wrote:Опять же, если SPI интерфейс для SD будет на плате, то сразу и часы поставить SPI_ные, в коде их поддержать проблем не вижу...
Наверное, такое решение будет работать. Ну, если что потом можно будет прикупить оригинальные часы.

Да, с BEER_SD есть над чем подумать. Я так понимаю официально для платформы хард-диски никто не подключал. Упоминаний о формате хранения данных тоже официальных нет.
Одно можно сказать точно, что все остановилось на FAT12. Это уже потом появились хард-диски. И тут каждый делал по своему разумению с оглядкой на PC платформу.
С FAT16 вроде работает только Nextor (это не точно, я пока в ту сторону не копал).

Кстати у Sunrise IDE, разделы как бы идут сзади на перед. На MSX последний раздел виден как первый. А когда подкачаешь носитель к PC виден только первый раздел (последний для MSX). Т.е. выходит, что все файлы MSX изолированы. И этот первый раздел выступает как обменник между платформами :)

Ну и загрузочный раздел должен быть FAT12, что бы ОС-и могли грузиться на любом MSX с любым железом.
PVV wrote:hprep.com (еще совсем не смотрел).
А там и нет почти ничего. hprep.com так и остался в зачаточном состоянии.
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: MSX в proteus

Post by PVV »

Решил сделать совсем уж Beer SD, :).
Подключил SD по схеме n8vem, схема медленная, но для оценки как это все работает использовать можно.
SD_n8vem.PNG
Однако, при попытке подключить SD к ВВ55 по схеме BeerIDE протеус заглючил :( причину не нашел, но при добавлении промежуточного буфера на 74ls244 и исключения из симуляции dll дисплея, схема завелась, как этот результат расценивать я и не знаю.
Нашел ошибку в v9938.dll версии 5, поломался вывод текста в Text Mode 1, синий экран есть, а текста нет... так что в этих экспериментах использовал dll версии 4, там все ок.
Во вложении обе схемы, с ВВ55 и без, а SDROM19N.bin у них одинаков.

upd:
Изменил программу так, что бы избавиться от инвертора на SD_CS, и немного поразбирался с подключением карты к ВВ55 от интерфейса BeerIDE. Идет конфликт с Z-состоянием выходов модели ВВ55 и модели SD, при подключении через промежуточный буфер, с так же, Z-состоянием, все работает. Можно проверить работу этой схемы на уже готовой плате BeerIDE, просто отключив шлейф от IDE диска и припаяв шесть проводников на подобную платку, или используя резисторные делители и пару диодов для получения напряжения питания карты 3.3В, по подобной технологии (из темы по РК-86).
Поправил v9938.dll до версии 6, проверил в разных режимах, работает.
You do not have the required permissions to view the files attached to this post.
Alekcandr
Doomed
Posts: 665
Joined: 01 Oct 2007 10:30
Location: Ukraine

Re: MSX в proteus

Post by Alekcandr »

Все же ВВ55 тут лишняя и таки надо уходить от портов (повторюсь). Положить регистры в поле 7F00…7FFF. Если не охота замарачиваться с расыпухой, то можно применить GAL-ку. Прикупил GAL16V8D тут с десяток. Вот только руки до них не доходят пока.

Я так думаю :)
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: MSX в proteus

Post by PVV »

Alekcandr wrote:Все же ВВ55 тут лишняя и таки надо уходить от портов (повторюсь). Положить регистры в поле 7F00…7FFF.
Что с ВВ55, что без нее, особой разницы нет, прошивка универсальная. Разница лишь в замене одного корпуса на 40 ножек на два корпуса по 16 и 20 ножек. Касательно прошивки, исходник я могу дать, просто не хочу не завершенный проект выкладывать.
Мне тут, на zx-pk, подсказали направление на готовое решение с SD, та самая схема SD интерфейса с msx, с ПО для нее, вот только там маппер konami SCC используется. Надо бы понять, что это за маппер такой и как его прикрутить к b2m эмулятору. Судя по конфигам msx2 в b2m как то его можно использовать, но как? Сам эмулятор b2m такой тип SD интерфейса поддерживает, можно было бы все погонять.
Нашел две схемы мапперов для msx-dos2, какой из них более распространенный и правильный?
первая:
msxdos2_m1.PNG
вторая:
msxdos2_m2.PNG
You do not have the required permissions to view the files attached to this post.
Alekcandr
Doomed
Posts: 665
Joined: 01 Oct 2007 10:30
Location: Ukraine

Re: MSX в proteus

Post by Alekcandr »

PVV wrote:Касательно прошивки, исходник я могу дать, просто не хочу не завершенный проект выкладывать.
Доделывайте, мне бы свое разгрести пока.
PVV wrote:Мне тут, на zx-pk, подсказали направление на готовое решение с SD, та самая схема SD интерфейса с msx, с ПО для нее, вот только там маппер konami SCC используется.
Вот честно не вижу смысла привязывать к konami SCC. Чипы эти не доставаемые. Раздобыть их можно только раскурочив не дешевый картридж. А так этот чип интересен не мапером, а звуком. Люди покупают такой картридж и ставят в нем переключатель. Чтобы слушать музыку и играть в игры от Konami со звуком.

А если повторять этот мапер на расыпухе, то чем он лучше того что я предлагаю (отказаться от доступа через порты).
PVV wrote:Нашел две схемы мапперов для msx-dos2, какой из них более распространенный и правильный?
Тут не скажу. Схемы видел, а вот не вникал. Можно разобранный msx-dos 2.2 посмотреть, как там страницы переключаются.

Вот схемы маперов, а тут описание в текстовом виде.
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: MSX в proteus

Post by PVV »

Alekcandr wrote:Вот схемы маперов, а тут описание в текстовом виде.
Согласно текстовому описанию маппера для msxdos2, обе схемы верны, первая это не официальная с адресом переключения 6000h, а вторая официальная, с адресом 7FFEh.
Какой тогда маппер у Sunrise IDE? он не похож на msxdos2, при этом, получается, он совместим с Nextor, если можно просто менять прошивки.
b2m
Devil
Posts: 905
Joined: 26 May 2003 06:57

Re: MSX в proteus

Post by b2m »

PVV wrote:Надо бы понять, что это за маппер такой и как его прикрутить к b2m эмулятору. Судя по конфигам msx2 в b2m как то его можно использовать, но как?
Для начала нужно скачать и положить в каталог MSX файл msxromdb.xml
В нём, конечно, только игры. Но добавить своё по аналогии, я думаю, несложно. После этого, если подключить через тулбар ПЗУ, sha1 которого будет найдено в msxromdb.xml, для него будет использован указанный маппер. Я точно не помню, но вроде бы я учитываю только теги megarom.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: MSX в proteus

Post by PVV »

b2m wrote:Для начала нужно скачать и положить в каталог MSX файл msxromdb.xml
В нём, конечно, только игры. Но добавить своё по аналогии, я думаю, несложно. После этого, если подключить через тулбар ПЗУ, sha1 которого будет найдено в msxromdb.xml, для него будет использован указанный маппер. Я точно не помню, но вроде бы я учитываю только теги megarom.
Сложный механизм, однако, и все равно, даже теоретически непонятно как в этом случае подключить SD интерфейс, который, видимо будет размещаться в одной из страниц в адресном пространстве, тк konamiSCC маппер не умеет маппить порты, а только память.
Тем не менее, вот беру я нужный RОМ файл(архив во вложении), считаю по нему sha1(как это сделать? я вот нашел какой то генератор, пойдет?)
втавляю вот такой код в xml:

Code: Select all

  <software>
    <title xml:lang="en">SD_msx_v5.25</title>
    <system>MSX</system>
    <company>Konami</company>
    <year>2017</year>
    <country>JP</country>
    <dump>
      <original value="false" />
      <megarom>
        <type>KonamiSCC</type>
        <hash algo="sha1">74f834940c6eefedb796898075d2fc6f7df7b7e4</hash>
      </megarom>
    </dump>
  </software>
запускаю конфиг по умолчанию msx2, выбираю этот файл, и у меня тишина, синий экран после заставки msx, как понять что происходит?

может можно все как то проще?
вот в конфиге msx2_fdd2.cfg есть такой код:

Code: Select all

msxdos2 : rom-mapper {
  rom="MSX\msxdos22.rom"
  default=3FFF,3,0,0,0
}
может и здесь можно как то аналогично сделать? просто что означают значения через запятую не совсем понятно, предполагаю, первое - размер одного блока маппера, здесь 16Кб, а в конами:

Code: Select all

  KonamiSCC=1FFF,F,4000,D,3
  KonamiSCC.ctl=5000,D,3,9800
8Кб.
Второе - сколько бит адресов переключается(число страниц).
Третье- начальный адрес посадки маппера- но нет, тк msxdos2 должен начинаться на 4000h, а тут 0 ну и дальше одни вопросы :osad:

И сразу вопрос по мапперу SunriseIDE, с адресами, где он управляется я еще не разобрался, но там пишутся в порт маппера не младшие разряды шины данных (...D2,D1,D0), а старшие (...D5,D6,D7), как такую ситуацию разрулить, сделать разворот бит или как то (FF-xx) поставить, или же жестко прописать конструкции типа slot[][FF,FE,FD,FC...] - область ром[offset addr]?
You do not have the required permissions to view the files attached to this post.
b2m
Devil
Posts: 905
Joined: 26 May 2003 06:57

Re: MSX в proteus

Post by b2m »

PVV wrote:Сложный механизм, однако
Когда каждая игра использует свой маппер, приходится выкручиваться :)
PVV wrote:и все равно, даже теоретически непонятно как в этом случае подключить SD интерфейс, который, видимо будет размещаться в одной из страниц в адресном пространстве, тк konamiSCC маппер не умеет маппить порты, а только память.
Вовсе необязательно использовать rom-mapper, можно сделать классическим memmap.
PVV wrote:запускаю конфиг по умолчанию msx2, выбираю этот файл, и у меня тишина, синий экран после заставки msx, как понять что происходит?
Посмотреть в отладчике, ясное дело. Только тухлое это дело, я когда со всем этим разбирался, упарился код трассировать. Бесконечный код.
PVV wrote:вот в конфиге msx2_fdd2.cfg есть такой код:

Code: Select all

msxdos2 : rom-mapper {
  rom="MSX\msxdos22.rom"
  default=3FFF,3,0,0,0
}
может и здесь можно как то аналогично сделать?
Для начала поясню, что означают цифры:
1. Маска адреса, чтобы получить смещение в окне. Определяет размер окна.
2. Маска номера страницы, отображаемой в окне.
3. Базовый адрес. Вычитается из адреса, по которому обращаемся. Ниже этого адреса будут FF.
4. Количество бит, на которое сдвигается адрес, чтобы получить номер окна (если их несколько)
5. Маска номера окна. Определяет количество окон.
6. Маска проверяемых бит адреса, по умолчанию 0, т.е. не проверяем
7. Значение проверяемых бит адреса, по умолчанию 0, совместно с пунктом 6 определяет, будет ли разрешена запись номера страницы

Иногда управляющий регистр декодируется отлично от декодирования самого окна, тогда пункты 3-7 задаются отдельно в поле ctl.
PVV wrote:Третье- начальный адрес посадки маппера- но нет, тк msxdos2 должен начинаться на 4000h, а тут 0 ну и дальше одни вопросы
Я точно не помню, но вроде бы ДОС обращается и в область 0000-3FFF. Поэтому базовый адрес 0. А поскольку окно только одно, то оно повторяется по адресам 4000,8000,С000.
PVV wrote:И сразу вопрос по мапперу SunriseIDE, с адресами, где он управляется я еще не разобрался, но там пишутся в порт маппера не младшие разряды шины данных (...D2,D1,D0), а старшие (...D5,D6,D7), как такую ситуацию разрулить, сделать разворот бит или как то (FF-xx) поставить, или же жестко прописать конструкции типа slot[][FF,FE,FD,FC...] - область ром[offset addr]?
Тут видимо только стандартным memmap разрулить можно. Будет портянка, но работать должно.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
b2m
Devil
Posts: 905
Joined: 26 May 2003 06:57

Re: MSX в proteus

Post by b2m »

Всё правильно, msxdos2 мапится на 4000h:

Code: Select all

slot3 : MSX-MemMap {
  slot[0][1]=msxdos2
  slot[1][0]=extrom
  slot[1][1]=fddmap
  slot[2][0]=mem1.frame[0]
  slot[2][1]=mem1.frame[1]
  slot[2][2]=mem1.frame[2]
  slot[2][3]=mem1.frame[3]
  slotctl=FFFF
}
Просто в данном случае slot[0][1] означает - нулевой слот, первая четверть (4000h). Второй индекс опциональный.

Твой ROM можно подключить так:

Code: Select all

msxdos2 : rom-mapper {
  rom="MSX\mmcsd525.rom"
  default=1FFF,F,4000,D,3
  default.ctl=5000,D,3,9800
}
...
slot3 : MSX-MemMap {
  slot[0]=msxdos2
  slot[1][0]=extrom
...
Однако портов SD/MMC, как ты заметил, там нет, и поэтому оно не работает. Начало работы можно отловить, поставив точку останова на 4080h
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
b2m
Devil
Posts: 905
Joined: 26 May 2003 06:57

Re: MSX в proteus

Post by b2m »

Такое чувство, что во втором окне только нечётные страницы должны показываться. Если в отладчике поставить бряк на 4080h, записать 01 по адресу 7000h, а потом запустить дальше, то появляется сообщение о версии MMC/SD Drive и оно ждёт чего-то из порта по адресу 7800h.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: MSX в proteus

Post by PVV »

Если смотреть на схему то выборка карты идет при А11-А4 в 1, А12=0, А13 и А14=1, те 6FFx, а маппера при A15=1 и А14=0, те AFFx, комбинация А15 и А14 в 1 должна быть запрещенной. Это соответственно в нужном слоте.
Что касается страниц, то в файле сигнатура АВ(0х41,0х42) встречается с кратностью 0х8000, а не 0х4000, так что похоже, что прошивку лишь дорабатывали под имеющийся, konamiSCC маппер, а исходно она была с 16КБ адресацией, и было бы неплохо вернуть ее в 16КБ вариант :lol: (в будущем).
Alekcandr
Doomed
Posts: 665
Joined: 01 Oct 2007 10:30
Location: Ukraine

Re: MSX в proteus

Post by Alekcandr »

У меня есть лоадер Konami SCC для IDA. Так вот грузится он с 4000h банками по 8Кб. А тут что-то не то. Выходит кореец изменил адрес посадки на 8000h. Или?

Да нет инициализируется rom c 7e20h, т.е адрес посадки 4000h. Что, в общем, то логично. Дисковые rom-ы живут в первой странице. Как он использовал оставшиеся 16Кб надо разбираться.
Last edited by Alekcandr on 04 May 2018 11:17, edited 1 time in total.
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
b2m
Devil
Posts: 905
Joined: 26 May 2003 06:57

Re: MSX в proteus

Post by b2m »

Во-первых, давайте определимся. Схема версии 2.2, а софт для версии 3. Ну, может он и поддерживает версию 2.2, будем надеяться.
Во-вторых, выборка маппера там на схеме не нарисована, она от картриджа (обозначена как KONAMI SCC), т.е. соответствует стандарту. По адресу AFEx-AFFx там регистр, включающий запись во флеш.
В-третьих, по схеме выборка SD/MMC вроде как 6FEx-6FFx, однако в коде я вижу только 7800,7С00,7С01, причём там читается/пишется весь байт, а не побитно. Так что может там и не поддерживается 2.2.

И ещё интересно. Софт ожидает, что после старта во втором окне страница номер 1. И это сразу после сброса. Что-то я нигде не встречал упоминания о том, что в KonamiSCC так должно быть.
Last edited by b2m on 04 May 2018 11:17, edited 1 time in total.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/