nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 02:13



Reply to topic  [ 182 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7 ... 13  Next
MSX в proteus 
Author Message
Doomed

Joined: 12 Feb 2016 13:39
Posts: 463
Reply with quote
Моя макетка вряд ли будет готова раньше конца лета. Я еще не решил для себя, что на ней должно быть и по какому направлению идти. Глобальный камень преткновения, сколько и какого ОЗУ делать. Если делать 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...


Attachments:
SDROM19.zip [26.49 KiB]
Downloaded 463 times
HDDROM19.zip [55.96 KiB]
Downloaded 483 times
28 Apr 2018 12:50
Profile
Doomed

Joined: 01 Oct 2007 10:30
Posts: 665
Location: Ukraine
Reply with quote
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


30 Apr 2018 11:29
Profile
Doomed

Joined: 12 Feb 2016 13:39
Posts: 463
Reply with quote
Решил сделать совсем уж Beer SD, :).
Подключил SD по схеме n8vem, схема медленная, но для оценки как это все работает использовать можно.
Attachment:
SD_n8vem.PNG
SD_n8vem.PNG [ 99.12 KiB | Viewed 14024 times ]

Однако, при попытке подключить 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, проверил в разных режимах, работает.


Attachments:
msx1_SDnW1.pdsprj.zip [252.63 KiB]
Downloaded 396 times
msx1_SDn.zip [488.12 KiB]
Downloaded 360 times
30 Apr 2018 23:18
Profile
Doomed

Joined: 01 Oct 2007 10:30
Posts: 665
Location: Ukraine
Reply with quote
Все же ВВ55 тут лишняя и таки надо уходить от портов (повторюсь). Положить регистры в поле 7F00…7FFF. Если не охота замарачиваться с расыпухой, то можно применить GAL-ку. Прикупил GAL16V8D тут с десяток. Вот только руки до них не доходят пока.

Я так думаю :)

_________________
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru


03 May 2018 10:53
Profile
Doomed

Joined: 12 Feb 2016 13:39
Posts: 463
Reply with quote
Alekcandr wrote:
Все же ВВ55 тут лишняя и таки надо уходить от портов (повторюсь). Положить регистры в поле 7F00…7FFF.

Что с ВВ55, что без нее, особой разницы нет, прошивка универсальная. Разница лишь в замене одного корпуса на 40 ножек на два корпуса по 16 и 20 ножек. Касательно прошивки, исходник я могу дать, просто не хочу не завершенный проект выкладывать.
Мне тут, на zx-pk, подсказали направление на готовое решение с SD, та самая схема SD интерфейса с msx, с ПО для нее, вот только там маппер konami SCC используется. Надо бы понять, что это за маппер такой и как его прикрутить к b2m эмулятору. Судя по конфигам msx2 в b2m как то его можно использовать, но как? Сам эмулятор b2m такой тип SD интерфейса поддерживает, можно было бы все погонять.
Нашел две схемы мапперов для msx-dos2, какой из них более распространенный и правильный?
первая:
Attachment:
msxdos2_m1.PNG
msxdos2_m1.PNG [ 67.79 KiB | Viewed 13966 times ]

вторая:
Attachment:
msxdos2_m2.PNG
msxdos2_m2.PNG [ 107.8 KiB | Viewed 13966 times ]


03 May 2018 11:41
Profile
Doomed

Joined: 01 Oct 2007 10:30
Posts: 665
Location: Ukraine
Reply with quote
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


03 May 2018 12:45
Profile
Doomed

Joined: 12 Feb 2016 13:39
Posts: 463
Reply with quote
Alekcandr wrote:
Вот схемы маперов, а тут описание в текстовом виде.

Согласно текстовому описанию маппера для msxdos2, обе схемы верны, первая это не официальная с адресом переключения 6000h, а вторая официальная, с адресом 7FFEh.
Какой тогда маппер у Sunrise IDE? он не похож на msxdos2, при этом, получается, он совместим с Nextor, если можно просто менять прошивки.


03 May 2018 23:27
Profile
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
PVV wrote:
Надо бы понять, что это за маппер такой и как его прикрутить к b2m эмулятору. Судя по конфигам msx2 в b2m как то его можно использовать, но как?

Для начала нужно скачать и положить в каталог MSX файл msxromdb.xml
В нём, конечно, только игры. Но добавить своё по аналогии, я думаю, несложно. После этого, если подключить через тулбар ПЗУ, sha1 которого будет найдено в msxromdb.xml, для него будет использован указанный маппер. Я точно не помню, но вроде бы я учитываю только теги megarom.

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


04 May 2018 00:30
Profile WWW
Doomed

Joined: 12 Feb 2016 13:39
Posts: 463
Reply with quote
b2m wrote:
Для начала нужно скачать и положить в каталог MSX файл msxromdb.xml
В нём, конечно, только игры. Но добавить своё по аналогии, я думаю, несложно. После этого, если подключить через тулбар ПЗУ, sha1 которого будет найдено в msxromdb.xml, для него будет использован указанный маппер. Я точно не помню, но вроде бы я учитываю только теги megarom.

Сложный механизм, однако, и все равно, даже теоретически непонятно как в этом случае подключить SD интерфейс, который, видимо будет размещаться в одной из страниц в адресном пространстве, тк konamiSCC маппер не умеет маппить порты, а только память.
Тем не менее, вот беру я нужный RОМ файл(архив во вложении), считаю по нему sha1(как это сделать? я вот нашел какой то генератор, пойдет?)
втавляю вот такой код в xml:
Code:
  <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:
msxdos2 : rom-mapper {
  rom="MSX\msxdos22.rom"
  default=3FFF,3,0,0,0
}

может и здесь можно как то аналогично сделать? просто что означают значения через запятую не совсем понятно, предполагаю, первое - размер одного блока маппера, здесь 16Кб, а в конами:
Code:
  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]?


Attachments:
MMCSD525.zip [53.43 KiB]
Downloaded 325 times
04 May 2018 02:48
Profile
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
PVV wrote:
Сложный механизм, однако

Когда каждая игра использует свой маппер, приходится выкручиваться :)

PVV wrote:
и все равно, даже теоретически непонятно как в этом случае подключить SD интерфейс, который, видимо будет размещаться в одной из страниц в адресном пространстве, тк konamiSCC маппер не умеет маппить порты, а только память.

Вовсе необязательно использовать rom-mapper, можно сделать классическим memmap.

PVV wrote:
запускаю конфиг по умолчанию msx2, выбираю этот файл, и у меня тишина, синий экран после заставки msx, как понять что происходит?

Посмотреть в отладчике, ясное дело. Только тухлое это дело, я когда со всем этим разбирался, упарился код трассировать. Бесконечный код.

PVV wrote:
вот в конфиге msx2_fdd2.cfg есть такой код:
Code:
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/


04 May 2018 04:17
Profile WWW
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
Всё правильно, msxdos2 мапится на 4000h:
Code:
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:
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/


04 May 2018 06:33
Profile WWW
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
Такое чувство, что во втором окне только нечётные страницы должны показываться. Если в отладчике поставить бряк на 4080h, записать 01 по адресу 7000h, а потом запустить дальше, то появляется сообщение о версии MMC/SD Drive и оно ждёт чего-то из порта по адресу 7800h.

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


04 May 2018 07:12
Profile WWW
Doomed

Joined: 12 Feb 2016 13:39
Posts: 463
Reply with quote
Если смотреть на схему то выборка карты идет при А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: (в будущем).


04 May 2018 09:47
Profile
Doomed

Joined: 01 Oct 2007 10:30
Posts: 665
Location: Ukraine
Reply with quote
У меня есть лоадер Konami SCC для IDA. Так вот грузится он с 4000h банками по 8Кб. А тут что-то не то. Выходит кореец изменил адрес посадки на 8000h. Или?

Да нет инициализируется rom c 7e20h, т.е адрес посадки 4000h. Что, в общем, то логично. Дисковые rom-ы живут в первой странице. Как он использовал оставшиеся 16Кб надо разбираться.

_________________
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru


Last edited by Alekcandr on 04 May 2018 11:17, edited 1 time in total.



04 May 2018 10:37
Profile
Devil

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

И ещё интересно. Софт ожидает, что после старта во втором окне страница номер 1. И это сразу после сброса. Что-то я нигде не встречал упоминания о том, что в KonamiSCC так должно быть.

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


Last edited by b2m on 04 May 2018 11:17, edited 1 time in total.



04 May 2018 11:08
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 182 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7 ... 13  Next

Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.