nedoPC.org

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



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

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
И ещё интересно. Софт ожидает, что после старта во втором окне страница номер 1. И это сразу после сброса. Что-то я нигде не встречал упоминания о том, что в KonamiSCC так должно быть.

А нет, нашёл: http://bifi.msxnet.org/msxnet/tech/megaroms, оказывается это для всех мапперов так должно быть. Надо эмуль подправить.

P.S. Подправил.

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


04 May 2018 11:16
Profile WWW
Doomed

Joined: 12 Feb 2016 13:39
Posts: 463
Reply with quote
Что бы уйти от вариантов под какой вариант схемы какое ПО, берем вот этот архив, там файл MMCDISK1.ROM, он на 512КБ. Судя по описанию в текстовом файле это прошивка для схемы версии 1. Схемы в этом архиве, то же, есть.
По составу этот файл содержит помимо прошивки некий образ 'дискеты' с системным ПО.
Далее, в тексте есть указание, что все это работает на основном слоте, а не расширенном.
соотв. я делаю такую вставку в конфиге:
Code:
slotB : rom-mapper {
  rom="MSX\mmcdisk1.rom"
  default=1FFF,F,4000,D,3
  default.ctl=5000,D,3,9800
}
mm : MSX-MemMap {
  slot[0]=bios
  slot[1]=slotA
  slot[2]=slotB
  slot[3]=slot3
}

отключаю ром для msxdos2 и в таком варианте после трех перезагрузок заставки MSX проскакивает текст от SD и вылетает в Disk BASIC
Attachment:
SD.png
SD.png [ 12.77 KiB | Viewed 14435 times ]

собственно теперь вопрос как сам SD интерфейс прицепить по адресу 6FF0 и 6FF1?
видимо нужно SlotB разбить как MemMap?
Code:
mm2 : MemMap2 {
  map[00]=sdcard.ss
  map[01]=sdcard.data
}
MMslotB : rom-mapper {
  rom="MSX\mmcdisk1.rom"
  default=1FFF,F,4000,D,3
  default.ctl=5000,D,3,9800
}
slotB : MemMap {
  map[0][0-6fef]=MMslotB
  map[1][6ff0-6fff]=mm2
}

только как так? а как быть с памятью 7000-bfff ? это же 3я и 4я банки? да и карта в середине второй банки :(

и еще
b2m wrote:
...По адресу AFEx-AFFx там регистр, включающий запись во флеш.
В-третьих, по схеме выборка SD/MMC вроде как 6FEx-6FFx...

откуда схема выборки 6FEx-6FFx ? А4 в 1, а это только 6FFx (AFFx)!


04 May 2018 12:30
Profile
Doomed

Joined: 12 Feb 2016 13:39
Posts: 463
Reply with quote
b2m wrote:
А нет, нашёл: http://bifi.msxnet.org/msxnet/tech/megaroms, оказывается это для всех мапперов так должно быть. Надо эмуль подправить.
P.S. Подправил.

Вот это оперативность! Спасибо! :esurprised: Теперь этот ром запускается с первой попытки и по включению и по сбросу. Теперь бы понять как карту прикрутить...


04 May 2018 12:38
Profile
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
PVV wrote:
видимо нужно SlotB разбить как MemMap?

Мыслишь правильно. Только нужно учитывать, что MemMap не умеет с точностью до байта, границы должны быть кратны 100h. Для более мелкого деления я сделал MemMap2.

PVV wrote:
только как так? а как быть с памятью 7000-bfff ? это же 3я и 4я банки? да и карта в середине второй банки :(

Без паники! rom-mapper поддерживает смещение, т.е. можно писать MMslotB[7000]

PVV wrote:
откуда схема выборки 6FEx-6FFx ? А4 в 1, а это только 6FFx (AFFx)!

А я версию 2.2 смотрел. А ты оказывается первую прикручиваешь. Тады ой.

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


04 May 2018 14:15
Profile WWW
Doomed

Joined: 12 Feb 2016 13:39
Posts: 463
Reply with quote
b2m wrote:
PVV wrote:
видимо нужно SlotB разбить как MemMap?

Мыслишь правильно. Только нужно учитывать, что MemMap не умеет с точностью до байта, границы должны быть кратны 100h. Для более мелкого деления я сделал MemMap2.

PVV wrote:
только как так? а как быть с памятью 7000-bfff ? это же 3я и 4я банки? да и карта в середине второй банки :(

Без паники! rom-mapper поддерживает смещение, т.е. можно писать MMslotB[7000]

тогда так:
Code:
MMslotB : rom-mapper {
  rom="MSX\mmcdisk1.rom"
  default=1FFF,F,4000,D,3
  default.ctl=5000,D,3,9800
}
mm2 : MemMap2 {
  map[00-ef]=MMslotB[6f00]
  map[f0]=sdcard.ss
  map[f1]=sdcard.data
  map[f2]=sdcard.ss
  map[f3]=sdcard.data
  map[f4]=sdcard.ss
  map[f5]=sdcard.data
  map[f6]=sdcard.ss
  map[f7]=sdcard.data
  map[f8]=sdcard.ss
  map[f9]=sdcard.data
  map[fa]=sdcard.ss
  map[fb]=sdcard.data
  map[fc]=sdcard.ss
  map[fd]=sdcard.data
  map[fe]=sdcard.ss
  map[ff]=sdcard.data
}
slotB : MemMap {
  map[0][0-6eff]=MMslotB
  map[0][6f00-6fff]=mm2
  map[0][7000-ffff]=MMslotB[7000]
}

?
мне вот только непонятно, а как реальный чип исключает из своего адресного пространства эту область для SD? , или если выбрать страницу за пределами 512КБ, те записать число больше 0х3F, то /OE ROM не сработает?... видимо так...
b2m wrote:
PVV wrote:
откуда схема выборки 6FEx-6FFx ? А4 в 1, а это только 6FFx (AFFx)!

А я версию 2.2 смотрел. А ты оказывается первую прикручиваешь. Тады ой.

точно, а я А4 и не заметил во второй версии...


04 May 2018 14:45
Profile
Doomed

Joined: 12 Feb 2016 13:39
Posts: 463
Reply with quote
Если здесь
Code:
MMslotB : rom-mapper {
  rom="MSX\mmcdisk1.rom"
  default=1FFF,F,4000,D,3
  default.ctl=5000,D,3,9800
}

записать так
Code:
  default=1FFF,3F,4000,D,3

то запускается РОМ диск зашитый в прошивке, у нас страниц то много и маску надо расширить, ПЗУ 512КБ...

PVV wrote:
мне вот только непонятно, а как реальный чип исключает из своего адресного пространства эту область для SD? , или если выбрать страницу за пределами 512КБ, те записать число больше 0х3F, то /OE ROM не сработает?... видимо так...

а если это так, тогда не надо ли сделать что то типа
Code:
slotB : MemMap {
  map[0-3f][0-ffff]=MMslotB
  map[40-77][6f00-6fff]=mm2
}

а mm.page , будет то, что пишется по адресу 7000. И не надо ли где то писать .wo , иначе при записи по адресам переключения страниц память будет портится?


04 May 2018 23:40
Profile
Doomed

Joined: 01 Oct 2007 10:30
Posts: 665
Location: Ukraine
Reply with quote
PVV wrote:
мне вот только непонятно, а как реальный чип исключает из своего адресного пространства эту область для SD? , или если выбрать страницу за пределами 512КБ, те записать число больше 0х3F, то /OE ROM не сработает?... видимо так...
Действительно не понятно. Как я понял кодом 3Fh мы включаем звуковой чип в окне 9800...9FFFh. Все остальное по прежнему доступно как ПЗУ. Надо видимо эмулятор или FPGA курить.

Существующие схемы на рассыпухе не раскрываю полностью тему.

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


05 May 2018 00:14
Profile
Doomed

Joined: 12 Feb 2016 13:39
Posts: 463
Reply with quote
Alekcandr wrote:
Действительно не понятно. Как я понял кодом 3Fh мы включаем звуковой чип в окне 9800...9FFFh. Все остальное по прежнему доступно как ПЗУ. Надо видимо эмулятор или FPGA курить.

3F это маска страниц в окне, те 0x3F=63, при счете страниц от 0 делаем +1, таким образом 8КБ*64=512КБ.
Как вот здесь http://bifi.msxnet.org/msxnet/tech/megaroms сказано:
Quote:
Unlike the Konami without SCC (konami4/8Kb) one this mapper does repeat the ROM just after the last ROM page.

и учитывая, что с чипа konamiSCC идет на ПЗУ сигнал /OE, получается, что при выборе страниц выше 3F сигнал /OE остается в 1, и ПЗУ не активирует свой выход, вот и получили возможность работать со своим устройством, в нашем случае SD.
Alekcandr wrote:
Существующие схемы на рассыпухе не раскрываю полностью тему.

и не то, что не раскрывают, а получается, что ни одна из существующих и мною увиденных схем не реализует ни один из РОМ мапперов! Все схемы на 74ls670 не поддерживают такой момент как при включении питания инициализация в каждом банке своим кодом:
Quote:
By default, bank 1 has the value 0 and bank 2 the value 1, etc, etc. In this way the first 32Kb of the ROM is selected into 4000h - BFFFh.
те то, что b2m вчера добавил в эмулятор... и вариант на 155РУ2, который я встречал, аналогично, не поддерживает этот момент.
Получается, что самый правильный вариант можно сделать, фактически, только на рассыпухе с тм2 с предуcтановкой ее по сбросу /set_ом и /reset_ом(ну или инверторы по входу и выходу на определенных ножках к защелкам). А если еще добавить проверку на превышение страниц 3F, для деактивации /OE, то вообще тот еще огород получится.


05 May 2018 01:30
Profile
Doomed

Joined: 12 Feb 2016 13:39
Posts: 463
Reply with quote
Сделал конфиг, который 'почти' работает, хотя карты и не видит. На первый взгляд аппаратное не соответствие схемы SD интерфейса в эмуляторе и том, что ожидает программа. В программе после любой посылки cmd идет завершающий FF, а только потом вычитка, что ответила карты, и получается, что этот 'лишний' FF выбирает из карты ее ответ, и когда программа читает сам ответ, то ответ уже был вычитан на предыдущем шаге и читается только ff. (Если поставить точку останова на 61Е2, то к этому моменту карта уже ответила 01 по адресу 6FFD, это начало. ) Я в паре мест за NOP_ил передачу этого завершающего FF, и карта стала видится, но проблема в том, как написан этот код, там нет единой функции передачи или приема, равно как нет единой функции передачи cmd или вычитки ответа, все просто линейно в коде идет :evil: , похоже, что и вычитка 512 байт из карты сделана вызовом 4 раза одной функции в которой 128 раз повторяется 11и байтный код чтения одного байта из карты... и все это править в HEX, просто жесть.


Attachments:
MSX2 fdd2_SD.zip [1.1 KiB]
Downloaded 304 times
06 May 2018 00:28
Profile
Doomed

Joined: 01 Oct 2007 10:30
Posts: 665
Location: Ukraine
Reply with quote
Я вот тоже сунулся в код. Есть лоадер для IDA. Проблема в том, что этот лоадер хорош для простых игровых картриджей, где исполняемый код и данные, как правило, строго разделены и нет бешеных переключений маппера SCC. Да еще маппер SCC за уши притянут для msx-dos2. В общем, под уныл и подумал да ну этого корейца :) Ждем b2m.

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


06 May 2018 03:39
Profile
Doomed

Joined: 12 Feb 2016 13:39
Posts: 463
Reply with quote
Каким образом вообще пишутся программы, работающие с мапперами? Контролируется размер кода кратно выбранной странице и программно переключаются страницы или просто пишется большой код, а затем прогоняется через некий упаковщик-маппер, который уже распределяет код по страницам?


06 May 2018 11:45
Profile
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
PVV wrote:
В программе после любой посылки cmd идет завершающий FF, а только потом вычитка, что ответила карты, и получается, что этот 'лишний' FF выбирает из карты ее ответ, и когда программа читает сам ответ, то ответ уже был вычитан на предыдущем шаге и читается только ff.

Вполне возможно, что моя реализация эмуляции SD-карты далека от реальности. До сих пор всё работало, но это не означает, что работало как надо. Можно попробовать добавить "лишние" FF после принятия команды. Лишь бы всё остальное, что работало до сих пор, не сломалось. А такое может быть запросто.

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


07 May 2018 01:48
Profile WWW
Doomed

Joined: 12 Feb 2016 13:39
Posts: 463
Reply with quote
b2m wrote:
PVV wrote:
В программе после любой посылки cmd идет завершающий FF, а только потом вычитка, что ответила карты, и получается, что этот 'лишний' FF выбирает из карты ее ответ, и когда программа читает сам ответ, то ответ уже был вычитан на предыдущем шаге и читается только ff.

Вполне возможно, что моя реализация эмуляции SD-карты далека от реальности. До сих пор всё работало, но это не означает, что работало как надо. Можно попробовать добавить "лишние" FF после принятия команды. Лишь бы всё остальное, что работало до сих пор, не сломалось. А такое может быть запросто.

Я уже не первый раз сталкиваюсь с описанием, что после того как SD карта получила cmd, она должна этот cmd обработать, выдавая FF пока идет эта обработка, и только после того, как она подумает, она выдает ответ. Вот здесь, на этой картинке, есть такое описание
Quote:
как видно ответ SD карты приходит на втором пакете, увеличим развертку на этом фрагменте….

те карта на первый пакет clk выдает FF, а на второй уже ответ. Да и во всех боевых программах стоит цикл ожидания ответа с таймаутом, после любого cmd и лишний ff там повредить не должен. Я могу проверить работу SDOS с msx SD интерфейсом на любой из поддерживаемых платформ с этим дополнительным FF, а это тот же код, что и в исходном Вашем (b2m's) варианте xsd.

Однако я в коде увидел, что используется cmd18, а это групповая вычитка секторов, а не только cmd17, возможно и запись есть такая, я это не встретил еще. Так вот, cmd18 поддерживается? Сейчас эмулятор ответ на нее выдает 04, те не поддерживает- это после моих правок в hex коде, возможно я сделал что то не так...


07 May 2018 09:30
Profile
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
PVV wrote:
Я уже не первый раз сталкиваюсь с описанием, что после того как SD карта получила cmd, она должна этот cmd обработать, выдавая FF пока идет эта обработка

Я тоже это знаю, но я не знал, что это может быть обязательным.

PVV wrote:
Да и во всех боевых программах стоит цикл ожидания ответа с таймаутом

Ну, это-то понятно.

PVV wrote:
Я могу проверить работу SDOS с msx SD интерфейсом на любой из поддерживаемых платформ с этим дополнительным FF

Отлично. Как найду время, поправлю эмулятор.

PVV wrote:
Однако я в коде увидел, что используется cmd18, а это групповая вычитка секторов, а не только cmd17, возможно и запись есть такая, я это не встретил еще. Так вот, cmd18 поддерживается?

К сожалению - нет. Надо будет почитать, как это работает, видимо придётся добавлять.

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


07 May 2018 23:31
Profile WWW
Doomed

Joined: 12 Feb 2016 13:39
Posts: 463
Reply with quote
b2m wrote:
PVV wrote:
Я уже не первый раз сталкиваюсь с описанием, что после того как SD карта получила cmd, она должна этот cmd обработать, выдавая FF пока идет эта обработка

Я тоже это знаю, но я не знал, что это может быть обязательным.

Вот документ, весьма неплохо описывающий работу протокола SD и во второй его половине побитовая растактовка для разных cmd, и там есть параметры Ncr, Nwr и тд, так вот они должны быть минимально от 2х тактов CLK (стр. 59), те практически 8 бит это обязательный минимум.
Возможно, что бы не менять уже прижившийся код, можно добавить еще один тип SD интерфейса к имеющимся sdcard.data и sdcard.data8, какой нибудь - sdcard.data2, в котором будет этот дополнительный FF...
В этом же документе сказано, что два байта CRC вычитывать надо обязательно после чтения данных.


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

Who is online

Users browsing this forum: No registered users and 4 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.