|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
Author |
Message |
PVV
Doomed
Joined: 12 Feb 2016 13:39 Posts: 463
|
Моя макетка вряд ли будет готова раньше конца лета. Я еще не решил для себя, что на ней должно быть и по какому направлению идти. Глобальный камень преткновения, сколько и какого ОЗУ делать. Если делать 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...
|
28 Apr 2018 12:50 |
|
|
Alekcandr
Doomed
Joined: 01 Oct 2007 10:30 Posts: 665 Location: Ukraine
|
На самом деле это не очень долго Тут главное начать делать. Я бы минимальную конфигурацию собрал для первого запуска. А дальше уже добавлял. Там и понимание придет, что еще нужно на основной макетке, а что вынести на модули. Для меня выбор был очевиден. По причине отсутствия, какой либо элементной базы. Прикупил статику 512Кх8. Думаю такой объем памяти можно для себя унифицировать и использовать во всех конструкциях. Ну, наверное, еще 16…32Кх8 надо по мелочи. По объему сразу делать 1024Кбайт. Этого должно хватит в 95% случаев. В моем случае я поставил один чип статики 64Кх8. Очень было заманчиво. Вуаля и вопрос с ОЗУ закрыт. Сейчас в ближайших планах сделать модуль на 1024Кбайт. Наверное, такое решение будет работать. Ну, если что потом можно будет прикупить оригинальные часы. Да, с BEER_SD есть над чем подумать. Я так понимаю официально для платформы хард-диски никто не подключал. Упоминаний о формате хранения данных тоже официальных нет. Одно можно сказать точно, что все остановилось на FAT12. Это уже потом появились хард-диски. И тут каждый делал по своему разумению с оглядкой на PC платформу. С FAT16 вроде работает только Nextor (это не точно, я пока в ту сторону не копал). Кстати у Sunrise IDE, разделы как бы идут сзади на перед. На MSX последний раздел виден как первый. А когда подкачаешь носитель к PC виден только первый раздел (последний для MSX). Т.е. выходит, что все файлы MSX изолированы. И этот первый раздел выступает как обменник между платформами Ну и загрузочный раздел должен быть FAT12, что бы ОС-и могли грузиться на любом MSX с любым железом. А там и нет почти ничего. hprep.com так и остался в зачаточном состоянии.
_________________Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
|
30 Apr 2018 11:29 |
|
|
PVV
Doomed
Joined: 12 Feb 2016 13:39 Posts: 463
|
Решил сделать совсем уж Beer SD, . Подключил SD по схеме n8vem, схема медленная, но для оценки как это все работает использовать можно. Однако, при попытке подключить 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, проверил в разных режимах, работает.
|
30 Apr 2018 23:18 |
|
|
Alekcandr
Doomed
Joined: 01 Oct 2007 10:30 Posts: 665 Location: Ukraine
|
Все же ВВ55 тут лишняя и таки надо уходить от портов (повторюсь). Положить регистры в поле 7F00…7FFF. Если не охота замарачиваться с расыпухой, то можно применить GAL-ку. Прикупил GAL16V8D тут с десяток. Вот только руки до них не доходят пока. Я так думаю
_________________Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
|
03 May 2018 10:53 |
|
|
PVV
Doomed
Joined: 12 Feb 2016 13:39 Posts: 463
|
Что с ВВ55, что без нее, особой разницы нет, прошивка универсальная. Разница лишь в замене одного корпуса на 40 ножек на два корпуса по 16 и 20 ножек. Касательно прошивки, исходник я могу дать, просто не хочу не завершенный проект выкладывать. Мне тут, на zx-pk, подсказали направление на готовое решение с SD, та самая схема SD интерфейса с msx, с ПО для нее, вот только там маппер konami SCC используется. Надо бы понять, что это за маппер такой и как его прикрутить к b2m эмулятору. Судя по конфигам msx2 в b2m как то его можно использовать, но как? Сам эмулятор b2m такой тип SD интерфейса поддерживает, можно было бы все погонять. Нашел две схемы мапперов для msx-dos2, какой из них более распространенный и правильный? первая: вторая:
|
03 May 2018 11:41 |
|
|
Alekcandr
Doomed
Joined: 01 Oct 2007 10:30 Posts: 665 Location: Ukraine
|
Доделывайте, мне бы свое разгрести пока. Вот честно не вижу смысла привязывать к konami SCC. Чипы эти не доставаемые. Раздобыть их можно только раскурочив не дешевый картридж. А так этот чип интересен не мапером, а звуком. Люди покупают такой картридж и ставят в нем переключатель. Чтобы слушать музыку и играть в игры от Konami со звуком. А если повторять этот мапер на расыпухе, то чем он лучше того что я предлагаю (отказаться от доступа через порты). Тут не скажу. Схемы видел, а вот не вникал. Можно разобранный msx-dos 2.2 посмотреть, как там страницы переключаются. Вот схемы маперов, а тут описание в текстовом виде.
_________________Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
|
03 May 2018 12:45 |
|
|
PVV
Doomed
Joined: 12 Feb 2016 13:39 Posts: 463
|
Согласно текстовому описанию маппера для msxdos2, обе схемы верны, первая это не официальная с адресом переключения 6000h, а вторая официальная, с адресом 7FFEh. Какой тогда маппер у Sunrise IDE? он не похож на msxdos2, при этом, получается, он совместим с Nextor, если можно просто менять прошивки.
|
03 May 2018 23:27 |
|
|
b2m
Devil
Joined: 26 May 2003 06:57 Posts: 870
|
Для начала нужно скачать и положить в каталог MSX файл msxromdb.xmlВ нём, конечно, только игры. Но добавить своё по аналогии, я думаю, несложно. После этого, если подключить через тулбар ПЗУ, sha1 которого будет найдено в msxromdb.xml, для него будет использован указанный маппер. Я точно не помню, но вроде бы я учитываю только теги megarom.
_________________Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
|
04 May 2018 00:30 |
|
|
PVV
Doomed
Joined: 12 Feb 2016 13:39 Posts: 463
|
Сложный механизм, однако, и все равно, даже теоретически непонятно как в этом случае подключить SD интерфейс, который, видимо будет размещаться в одной из страниц в адресном пространстве, тк konamiSCC маппер не умеет маппить порты, а только память. Тем не менее, вот беру я нужный RОМ файл(архив во вложении), считаю по нему sha1(как это сделать? я вот нашел какой то генератор, пойдет?) втавляю вот такой код в xml: запускаю конфиг по умолчанию msx2, выбираю этот файл, и у меня тишина, синий экран после заставки msx, как понять что происходит? может можно все как то проще? вот в конфиге msx2_fdd2.cfg есть такой код: может и здесь можно как то аналогично сделать? просто что означают значения через запятую не совсем понятно, предполагаю, первое - размер одного блока маппера, здесь 16Кб, а в конами: 8Кб. Второе - сколько бит адресов переключается(число страниц). Третье- начальный адрес посадки маппера- но нет, тк msxdos2 должен начинаться на 4000h, а тут 0 ну и дальше одни вопросы И сразу вопрос по мапперу SunriseIDE, с адресами, где он управляется я еще не разобрался, но там пишутся в порт маппера не младшие разряды шины данных (...D2,D1,D0), а старшие (...D5,D6,D7), как такую ситуацию разрулить, сделать разворот бит или как то (FF-xx) поставить, или же жестко прописать конструкции типа slot[][FF,FE,FD,FC...] - область ром[offset addr]?
|
04 May 2018 02:48 |
|
|
b2m
Devil
Joined: 26 May 2003 06:57 Posts: 870
|
Когда каждая игра использует свой маппер, приходится выкручиваться Вовсе необязательно использовать rom-mapper, можно сделать классическим memmap. Посмотреть в отладчике, ясное дело. Только тухлое это дело, я когда со всем этим разбирался, упарился код трассировать. Бесконечный код. Для начала поясню, что означают цифры: 1. Маска адреса, чтобы получить смещение в окне. Определяет размер окна. 2. Маска номера страницы, отображаемой в окне. 3. Базовый адрес. Вычитается из адреса, по которому обращаемся. Ниже этого адреса будут FF. 4. Количество бит, на которое сдвигается адрес, чтобы получить номер окна (если их несколько) 5. Маска номера окна. Определяет количество окон. 6. Маска проверяемых бит адреса, по умолчанию 0, т.е. не проверяем 7. Значение проверяемых бит адреса, по умолчанию 0, совместно с пунктом 6 определяет, будет ли разрешена запись номера страницы Иногда управляющий регистр декодируется отлично от декодирования самого окна, тогда пункты 3-7 задаются отдельно в поле ctl. Я точно не помню, но вроде бы ДОС обращается и в область 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 |
|
|
b2m
Devil
Joined: 26 May 2003 06:57 Posts: 870
|
Всё правильно, msxdos2 мапится на 4000h: Просто в данном случае slot[0][1] означает - нулевой слот, первая четверть (4000h). Второй индекс опциональный. Твой ROM можно подключить так: Однако портов SD/MMC, как ты заметил, там нет, и поэтому оно не работает. Начало работы можно отловить, поставив точку останова на 4080h
_________________Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
|
04 May 2018 06:33 |
|
|
b2m
Devil
Joined: 26 May 2003 06:57 Posts: 870
|
Такое чувство, что во втором окне только нечётные страницы должны показываться. Если в отладчике поставить бряк на 4080h, записать 01 по адресу 7000h, а потом запустить дальше, то появляется сообщение о версии MMC/SD Drive и оно ждёт чего-то из порта по адресу 7800h.
_________________Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
|
04 May 2018 07:12 |
|
|
PVV
Doomed
Joined: 12 Feb 2016 13:39 Posts: 463
|
Если смотреть на схему то выборка карты идет при А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КБ вариант (в будущем).
|
04 May 2018 09:47 |
|
|
Alekcandr
Doomed
Joined: 01 Oct 2007 10:30 Posts: 665 Location: Ukraine
|
У меня есть лоадер 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 |
|
|
b2m
Devil
Joined: 26 May 2003 06:57 Posts: 870
|
Во-первых, давайте определимся. Схема версии 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 |
|
|
Who is online |
Users browsing this forum: No registered users and 1 guest |
|
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
|
|