nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 13 Nov 2019 11:06



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

Joined: 12 Feb 2016 14:39
Posts: 360
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: 493
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: 360
Reply with quote
Так Nextor, по сути и есть dos2.


10 Oct 2019 09:34
Profile
Doomed

Joined: 12 Feb 2016 14:39
Posts: 360
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 16 times
12 Oct 2019 04:36
Profile
Doomed

Joined: 01 Oct 2007 11:30
Posts: 493
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: 360
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 10 times
22 Oct 2019 08:35
Profile
Doomed

Joined: 01 Oct 2007 11:30
Posts: 493
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
Display posts from previous:  Sort by  
Reply to topic   [ 7 posts ] 

Who is online

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