nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 03 Jun 2020 06:04



Reply to topic  [ 13 posts ] 
SD для MSX, схемы и программы 
Author Message
Doomed

Joined: 12 Feb 2016 14:39
Posts: 409
Reply with quote
Обсуждение схемных и программных решений для подключения и использования SD карты к ПК семейства MSX предлагаю вести в этой теме.

На данный момент в качестве аппаратной реализации SD интерфейса используется такой вариант, а в качестве программной поддержки используется Nextor (viewtopic.php?f=96&t=18820&start=150#p151934), с маппером страниц по 16КБ размещенным в портах 0xb2 и 0xb0(SD_data).
Однако маппер в портах решение не стандартное, и для исключение возможных конфликтов с различным оборудованием предпочтительнее этот маппер разместить в памяти. Размещение в памяти подразумевает необходимость дешифратора адресного пространства, который нужно делать или на микросхеме программируемой логики или на 3-5 корпусах мелкой логики, что при 6-7 корпусах для самого SD интерфейса уже как то не очень красиво выглядит. Просматривая в очередной раз код Nextor, взгляд упал на маппер ASCII8, который этим некстором поддерживается и появилась такая идея, а что если собрать Nextor под страницы по 8КБ, в адрасах 0x4000-0x5fff, а область 0x6000-0x7fff отдать под маппер (к примеру 0x6000-0x6fff) и сам SD интерфейс (0x7000-0x7fff)? Для декодирования такой расклад памяти не потребует много корпусов мелкой логики, и все будет размещаться в одном слоте, как идея?


09 Oct 2019 04:05
Profile
Doomed

Joined: 01 Oct 2007 11:30
Posts: 511
Location: Ukraine
Reply with quote
Идея хорошая. Жаль только что с MSX-DOS2 такой ход не пройдет.

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


10 Oct 2019 04:53
Profile
Doomed

Joined: 12 Feb 2016 14:39
Posts: 409
Reply with quote
Так Nextor, по сути и есть dos2.


10 Oct 2019 09:34
Profile
Doomed

Joined: 12 Feb 2016 14:39
Posts: 409
Reply with quote
Попробовал реализовать идею с использованием регистра 74hc595. Все получилось очень даже красиво. Проверял с BeerSD, изменений в коде минимум, только убрал запись FF в SPI перед чтением и все! Во вложении схема, проект Протеуса и исходники BeerSD.
Получается, что такую схему можно использовать во всех проектах реализованных на ПЛИС с SD. Это и 3я версия SD интерфейса этого проекта и Z-контроллер в ZX, те везде, где сдвиг в SPI начинается и по записи и по чтению (для z80 можно использовать INIR/OTIR), а не так, как это было в используемых мною проектах, когда для чтения байта из SPI надо было записать прежде FF в SPI и уже затем читать. Единственный минус этого интерфейса - отсутствие его поддержки в emu.

Дальше займусь прикручиванием этого интерфейса к Nextor.


Attachments:
BeerSD.zip [482.83 KiB]
Downloaded 143 times
12 Oct 2019 04:36
Profile
Doomed

Joined: 01 Oct 2007 11:30
Posts: 511
Location: Ukraine
Reply with quote
PVV wrote:
Единственный минус этого интерфейса - отсутствие его поддержки в emu.
Как-то в давнишние времена (когда эмуляция захлестнула весь мир) мной был успешно перепилен blueMSX в ОРИОН-128 (ОРИОН-PRO). Рабочие название у того эмулятора было OrionEXT. Это я к чему, blueMSX написан на простом и понятном CИ, и в него не сложно впилить любой аддон.

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


15 Oct 2019 05:51
Profile
Doomed

Joined: 12 Feb 2016 14:39
Posts: 409
Reply with quote
Поразбирался немного с Nextor в части сборки прошивки под страницу в 8КБ и увидел возможность остаться в страницах по 16КБ без ущерба для нашего дела :).
Суть такова, в каждой 16КБ странице, в конце, записан код переключающий эти самые страницы, и этот код размещается в 0x3FE0-0x3FFF ( тк выборка этих страниц CS1, то в ОЗУ это 0x7FE0-0x7FFF). Фактически же, сам код занимает только половину этого места, те 0x3FE0-0x3FEF, а область 0x3FF0-0x3FFF остается во всех страницах свободной. Используя это можно сделать адрес переключения маппера любой из 0x7FE0-0x7FEF (это в адресах ОЗУ), а адреса SD интерфейса 0x7FF0-0x7FFF. Реализацию такой карты памяти легко сделать всего на двух корпусах - ЛА2 и ИД7. 16 байт, по которым адресуется SD интерфейс, позволяют использовать команду блочной пересылки ldi, имеющуюся у z80, что дает почти максимально возможную скорость обмена с картой. 'Почти', тк байт 16, а не 512, и 32 раза приходится перезагружать HL значением 0x7FF0.
Во вложении проект из Протеуса, для варианта с ИР24(_1) и с ИР9(_2), и исходник драйвера, в котором чтение сделано с использованием ldi.
Вся схема получается на 10 корпусах, из которых 2 корпуса это ПЗУ на 64КБ. Если поставить одну ПЗУ на 128КБ, то получится вообще 9 корпусов...


Attachments:
msx2_SDnew2_1.zip [938.9 KiB]
Downloaded 131 times
22 Oct 2019 08:35
Profile
Doomed

Joined: 01 Oct 2007 11:30
Posts: 511
Location: Ukraine
Reply with quote
Интересно. Я смотрю при наличии исходников (Nextor) DOS можно накатать на любой маппер.

Надо будет потестить. Правда у меня началась полоса FPGA (не прошло и три года). Приехала платка с 5 Циклоном (5CEFA2F23). Много воды (циклонов) уплыло за три года. Пока разбираюсь (даже проект от Grant's не взлетает). Задача построить MSX1, а потом и контроллер SD.

Ваш контроллер SD буду строить в FPGA исключительно методом схемного ввода :rotate:

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


27 Oct 2019 05:58
Profile
Doomed

Joined: 12 Feb 2016 14:39
Posts: 409
Reply with quote
Недавно пришла мысль, а что, если в качестве ножек для подключения SD карты использовать ножки уже имеющиеся в ПК? Применительно к msx, это ножки чтения и записи на магнитофон, ножка выхода звука с ВВ55 и ножка управления светодиодом CAPS... Можно и ножку управления мотором задействовать.
Припаяв к соответствующим ножкам такую
Attachment:
SD_adapter.png
SD_adapter.png [ 264.95 KiB | Viewed 2192 times ]
платку, и вставив в слот плату с 16КБ ПЗУшкой с кодом BeerSD, получим работу с SD!
Нужно лишь развязать, отключить(отрезать), выход операционника на вход AY канала чтения с магнитофона, что бы не мешался карточке.
Во вложении эта реализация с файлами конфигурации для emu. Константой DRV_TYPE при сборке определяется под какой интерфейс делать файл. Применительно к описанному выше - 2 . Различие в скорости заметно, но я не скажу, что катастрофично.

upd: обновил архив, добавил 4й тип DRV_TYPE на портах джойстика.


Attachments:
SDROM19.zip [161.46 KiB]
Downloaded 92 times


Last edited by PVV on 11 Dec 2019 03:49, edited 1 time in total.

05 Dec 2019 04:09
Profile
Doomed

Joined: 12 Feb 2016 14:39
Posts: 409
Reply with quote
Зацепила меня возможность простейшего подключения SD к ПК, решил я проверить, какую же скорость этот интерфейс может показать в приложении hdspeed
Attachment:
Nextor_n8vem.png
Nextor_n8vem.png [ 8.74 KiB | Viewed 2146 times ]

пересобрав, соответственно nextor под этот вариант подключения.

Кстати говоря, BeerIDE можно очень просто адаптировать к nextor.
Берем три бита с порта ВВ55 под старшие адреса ПЗУ, получив маппер, и подключаем SD на оставшиеся ножки, все! :rotate:


Attachments:
DRIVER.zip [69.65 KiB]
Downloaded 90 times
07 Dec 2019 08:29
Profile
Doomed

Joined: 01 Oct 2007 11:30
Posts: 511
Location: Ukraine
Reply with quote
Интересненько. Но по мне это перебор. Никто свой оригинальный MSX перепиливать не будет (оно так можно и свой уникальный ASIC чип подпалить, которого нигде уже не достать). Можно было бы эту идею минимизировать до двух проводов (с МК), но опять. Во вход/выход магнитофона много битов не задуть/выдуть (фильтр).

А вот через джой этот финт ушами можно было бы провернуть. А ах да. Это уже было сделано (какой то японец запилил, много лет назад). Все придумано до нас :mrgreen:

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


10 Dec 2019 02:54
Profile
Doomed

Joined: 01 Oct 2007 11:30
Posts: 511
Location: Ukraine
Reply with quote
Не по теме.

Если у кого вдруг появится зуд, чего бы такое подключить по последовательным интерфейсам. Джой у MSX съест все. Бо это некий HID девайс из 80г.

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


10 Dec 2019 04:50
Profile
Doomed

Joined: 12 Feb 2016 14:39
Posts: 409
Reply with quote
Alekcandr wrote:
А вот через джой этот финт ушами можно было бы провернуть. А ах да. Это уже было сделано (какой то японец запилил, много лет назад). Все придумано до нас :mrgreen:

Все новое это хорошо забытое старое... ПО с поддержкой SD от японца есть?
Джойстик это вообще красота! и питание там есть и входы-выходы... сделал и под него сборку, обновил архив выше.
на портах AY:
PA7 - miso
PB0 - mosi
PB1 - clk
PB2 - CS
PB6 - выставляю=0, те джойстик1.

Не захотела, правда, эта конфигурация сходу работать... пока разобрался, что к чему... пришлось запрещать прерывания на время доступа к карте, иначе в прерываниях идут обращения к портам AY и карта не определяется и не работает.


11 Dec 2019 03:58
Profile
Doomed

Joined: 01 Oct 2007 11:30
Posts: 511
Location: Ukraine
Reply with quote
PVV wrote:
ПО с поддержкой SD от японца есть?
Вот ссылка. Честно не разбирался что там к чему.

PVV wrote:
Не захотела, правда, эта конфигурация сходу работать... пока разобрался, что к чему... пришлось запрещать прерывания на время доступа к карте, иначе в прерываниях идут обращения к портам AY и карта не определяется и не работает.
Есть такое дело. Порт джойстика весит на прерывании и постоянно опрашивается.

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


11 Dec 2019 09:21
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 13 posts ] 

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

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