PDA

Просмотр полной версии : SD карта для ZX-Spectrum



PVV
29.10.2018, 23:59
Давно хожу вокруг идеи подключения SD карты к ZX, и для полноты картины нужно получить ответы на несколько вопросов. Недавно я прорабатывал подключение SD на портах (http://www.nedopc.org/forum/viewtopic.php?f=71&t=9407&start=270#p145375) звукового чипа UM2149F(AY3-8910), соответственно первый вопрос:
Используются ли в Spectrum_е gpio порты AY3-8910?
Сам звуковой чип установлен на многих клонах, его порты фиксированы, так что мешает эти порты задействовать под наши нужды?
Конечно, такое 'прямое' подключение SD карты достаточно медленное (будет что-то около 1-2КБ в секунду), но простота решения уж очень подкупает. Ускориться примерно на порядок можно используя другое решение, по моим прикидкам, реализуемое на 6 корпусах, подключаемых к AY3-8910 (ИР24, ИЕ5, ТМ2-2шт, ЛЕ1 и ЛА3), но это на развитие.
Следующий вопрос по программной части, и наиболее животрепещущий, каким ПО эту SD поддерживать?
Есть у меня одна идея, как максимально безболезненно сделать поддержку работы с файлами на SD с файловой системой FAT16. Я просмотрел ветку с операционными системами и не увидел реализации чего то подобного, но я очень плохо знаком с наработками в этом направлении, и возможно, эта идея уже давно кем то используется, тогда хотелось бы узнать, в чем ее минусы, а ее суть вот в чем:
Положение файлов на диске в FAT16 описывается позициями кластеров (по сути последовательными наборами групп номеров секторов, а один сектор равен 512 байт). Если специальной программой монтирования записать в определенный, строго фиксированный, участок памяти последовательность из секторов(кластеров) на TRD файл, то мы будем иметь для 640КБ TRD файла 640/0.5=1280 записей секторов, один сектор 4 байта (а если в кластерах, то существенно меньше, тк для больших дисков один кластер может быть 64КБ, но для удобства работы с таким списком вполне можно использовать посекторный список) 1280*4= 5120 байт. И хранить эти 5120 байт на той же самой SD карте в области не используемой файловой системой, между нулевым сектором и началом первой таблицы FAT диска! (для справки, эта область, по умолчанию, составляет от 8КБ до 1МБ, в зависимости от размера диска, и никто не запрещает изменить ее размер на нужный нам при форматировании - это все на 100% совместимо согласно спецификациям на разбивку диска, к примеру arm процессоры используют эту область для размещения там своего начального загрузчика - и это почти все наши смартфоны, и ничего страшного не происходит... ) при эмуляции нескольких дисководов таких 5120КБ списков, соответственно, должно быть несколько. Код поддержки работы с SD уже имеется, нужно лишь его вставить в нужные места тех операционных систем, в которых планируется работа с SD. Это примерно 500-700байт.(к примеру в TRDOS 5.04 есть почти 1.5КБ свободного места, куда это можно спокойно разместить). Работа же должна выглядеть так - при обращении к диску переводить позицию дорожки-сектора-стороны в номер элемента списка секторов, считывать 4 байта номера сектора на карте, и читать сам сектор, все! На данный момент вижу здесь только одну проблему - сектора в TRD по 256байт, а с SD за один присест читается 512байт, и если для чтения это не проблема пробросить ненужные 256 байт, то при записи (а это полностью эквивалентно и не запрещено чтение-запись) это создает проблему, нужно прочитать все 512 байт, заменить нужные 256, и записать обратно 512 (эквивалентно прочитать и сохранить 256байт, которые надо оставить и пробросить 256, которые будут перезаписаны).
Вот и второй глобальный вопрос:
В чем минусы или плюсы в реализации описанной выше идеи?
Опять же, на развитие, SD карта подключается по SPI, соответственно можно в качестве памяти для списка секторов использовать дополнительную SPI память, выбираемую вторым чипселектом (25LC256 и тд ~50руб в SO-8 корпусе).
Эта идея перекликается с идеей монтирования TRD файла в RAMдиск клонов спектрума с 1МБ ОЗУ, но не требует этого 1МБ, и будет работать даже на 48КБ спектрумах!

SoftLight
30.10.2018, 09:00
Не хотелось бы демотивировать, но интерфейсов для работы с sd-картой уже есть чуть больше чем до фига, причём вместе с по: divMMC, ZXMMC, Z-controller, Div-SD, карта Лисицына (http://zx-pk.ru/threads/24624-interfejs-micro-sd-karty-dlya-zx-spectrum.html) и д.р. Из описания не понял чем не устраивают существующие аналоги? Если что, там можно подсмотреть как решены проблемы подключения и по. Хотя идея повесить карту на ay интересная, такая ардуинизация спектрума.

PVV
30.10.2018, 09:53
Не хотелось бы демотивировать, но интерфейсов для работы с sd-картой уже есть чуть больше чем до фига, причём вместе с по: divMMC, ZXMMC, Z-controller, Div-SD, карта Лисицына (http://zx-pk.ru/threads/24624-interfejs-micro-sd-karty-dlya-zx-spectrum.html) и д.р.
Исходя из этого перечня, это как раз мотивация копать дальше в данном направлении :)

Из описания не понял чем не устраивают существующие аналоги?
Для всех интерфейсов требуются: плис-гал, авр-пик(ВЕ1), дополнительные SRAM и/или ROM, почти все это на промышленно изготовленных печатных платах, которые LUTом не изготовить нормально. Это по аппаратной части.
По программной поддержке, неоднократно встречал мнения, что хотелось бы работать в TRDOS для максимальной совместимости с имеющимся ПО - что из этого работает с TRDОS, а не в своей ОС?
Вариант же с портами на AY для запуска требует лишь начальных навыков держать паяльник в руках, подпаять 5 проводков к купленной на Ali за 30 рублей платке с разъемом SD карты( или вообще к бесплатному переходнику SD-microSD). Ну, а с ПО да, нужно будет ПЗУ с TRDOS доработать. Хотя на первом этапе можно сделать просто копировщик реальных дисков в TRD образ и обратно, вообще без внесения изменений в TRDOS!

добавлю, идею с правкой TRDOS взял здесь (http://zx-pk.ru/threads/9399-rom-disk-i-kesh.html).

Геккон
30.10.2018, 13:16
Есть еще вариант:
http://piters.tripod.com/zx.htm
https://hackaday.io/project/25957-simple-8-bit-ide-interface-for-spectrum
http://www.phantom.sannata.ru/konkurs/2008/kt0825.shtml

Djoni
30.10.2018, 13:26
Есть еще вариант:
http://piters.tripod.com/zx.htm
https://hackaday.io/project/25957-simple-8-bit-ide-interface-for-spectrum

Да, вот правильный вариант http://piters.tripod.com/zxcf.htm

http://gifok.net/images/2018/10/30/YXcbeYeN5ic.md.jpg (http://gifok.net/image/8hRY)

http://gifok.net/images/2018/10/30/cPI50XfRRJs.md.jpg (http://gifok.net/image/8hRC)

Версию https://hackaday.io/project/25957-simple-8-bit-ide-interface-for-spectrum я проверил, работает :)

http://gifok.net/images/2018/10/30/2018-08-23-23-35-08-1.md.jpg (http://gifok.net/image/8hRi)

http://gifok.net/images/2018/10/30/2018-09-04-00-01-30-1.md.jpg (http://gifok.net/image/8hRe)

http://gifok.net/images/2018/10/30/2018-09-04-00-01-43-1.md.jpg (http://gifok.net/image/8hRj)

Геккон
30.10.2018, 13:32
Вот реализация на Дельте: http://www.phantom.sannata.ru/konkurs/2008/kt0825.shtml

PVV
30.10.2018, 13:57
Эти схемы я видел, IDE - CF, аппаратно подключить не сложно, хотя проводов раза в 3-4 больше, но в абсолютном значении не много, сделать можно, с ПО там все как-то не понятно. Тем не менее, вариант идеи с реализацией списка секторов на TRD файл на файловой системе применим и к IDE-CF.
Все же я хотел бы услышать:
Используются ли в Spectrum_е gpio порты AY3-8910?
и
В чем минусы или плюсы в реализации описанной выше идеи?

Djoni
30.10.2018, 14:56
Эти схемы я видел, IDE - CF, аппаратно подключить не сложно, хотя проводов раза в 3-4 больше, но в абсолютном значении не много, сделать можно, с ПО там все как-то не понятно. Тем не менее, вариант идеи с реализацией списка секторов на TRD файл на файловой системе применим и к IDE-CF.
Все же я хотел бы услышать:
Используются ли в Spectrum_е gpio порты AY3-8910?
и
В чем минусы или плюсы в реализации описанной выше идеи?


Ну на портах AY 3-8912 фирменных аппаратов стандартно висит интерфейс RS232/MIDi

http://gifok.net/images/2018/07/26/2018-07-26_11-15-29.md.png (http://gifok.net/image/8SQH)

Было бы неплохо и в наших клонах этот интерфейс повторить.

Лучше вариант подключения через ВВ55 , вот интересный проект http://zx-pk.ru/threads/24944-interesnaya-burzhujskaya-periferiya.html?p=965388&viewfull=1#post965388

goodboy
30.10.2018, 15:01
Используются ли в Spectrum_е gpio порты AY3-8910?
на фирменных моделях - да.
там выведен разъём (rj типа как для телефона/интернета) в него втыкается доп.модуль с цифровыми кнопками для клавиатуры/световой пистолет.
и самое главное в 128ом бейсике штатно работает опрос порта на R14 (возможно это может сильно помешать)

http://www.old-computers.com/museum/hardware/sinclair_spectrum128_keypad_2.jpg

Djoni
30.10.2018, 15:17
на фирменных моделях - да.
там выведен разъём (rj типа как для телефона/интернета) в него втыкается доп.модуль с цифровыми кнопками для клавиатуры/световой пистолет.
и самое главное в 128ом бейсике штатно работает опрос порта на R14 (возможно это может сильно помешать)

http://www.old-computers.com/museum/hardware/sinclair_spectrum128_keypad_2.jpg


Плюс есть подпрограммы работы с принтером и миди интерфейсом.


https://yadi.sk/i/upIelVd8lDshdA

goodboy
31.10.2018, 18:53
ещё вспомнил что одно время на портAY подключали мышь от Корвета.
а главный минус (по сравнению с обычным портом) это сама выборка порта.
то есть нам сначала надо задать режим порта (selectR7,writeR7) и только потом с ним работать

PVV
31.10.2018, 19:48
С неудобством работы с портами AY согласен, и на ВВ55 все удобнее получается, вопросов нет, но! AY или уже есть у владельцев ZX или его достаточно легко доустановить при помощи платы-переходника в панель Z80. Дальше, допаять 5 проводников и получить функционал простой работы с TRD образами на машинках с 48 или 128КБ ОЗУ очень уж привлекает. Да медленно получится в таком варианте, согласен, но и варианты ускориться есть. Просто у меня уже есть готовый код работы с SD на портах AY, проверенный на реальном железе (и на ВВ55 есть, но проверенный только в протеусе). Осталось этот код интегрировать в TRDOS, подменив обращение к РАМдиску на обращение к SD. Для тех, кто в TRDOS разбирался это вообще труда не составит, я же это сделаю, но не так быстро, главное, что бы идея изначально правильная была.

goodboy
31.10.2018, 20:33
AY или уже есть у владельцев ZX или его достаточно легко доустановить при помощи платы-переходника в панель Z80. Дальше, допаять 5 проводников и получить функционал простой работы с TRD образами на машинках с 48 или 128КБ ОЗУ очень уж привлекает.
а откуда (переделанная) trdos (и логика работы с ней) возьмётся на этих машинках ?

PVV
31.10.2018, 20:41
а откуда (переделанная) trdos (и логика работы с ней) возьмётся на этих машинках ? :) Хороший вопрос, предполагается, что TRDOS уже есть (и ПЗУ в панельке)... ну или еще мгтф... :)

goodboy
31.10.2018, 20:49
владельцы таким компов скорее посмотрют в сторону эмулятора флопа,
я очень сомневаюсь что переделанная trdos может 100% эмулировать обращения к ВГшке.
(я тестил похожий эмуль esxdos/divide - работает, но не всё)

PVV
31.10.2018, 22:09
владельцы таким компов скорее посмотрют в сторону эмулятора флопа,
я очень сомневаюсь что переделанная trdos может 100% эмулировать обращения к ВГшке.
(я тестил похожий эмуль esxdos/divide - работает, но не всё)
Эмулятор флопа это хорошо, а вот все ли будут его собирать? и да, до 100% тут будет ооочень далеко...

Собираем вот эту (http://sblive.narod.ru/ZX-Spectrum/PseudoTR-DOS/PseudoTR-DOS.htm) и эту (http://sblive.narod.ru/ZX-Spectrum/AY-ADAPTERforLUT/AY-ADAPTERforLUT.htm) схемы, а лучше их обе на одной плате, втыкаемой в панель z80, и превращаем любой 48й ПК в ПК с TRDOS (есть у меня, к примеру, Leningrad1 и краснодар48(РУ6+РУ5+ВВ55...и не буду я на них 1МБ памяти делать), да с ограничениями, не все запустится, но и в таком виде их юзабилити повысится существенно.

goodboy
31.10.2018, 23:30
на одной плате, втыкаемой в панель z80, и превращаем любой 48й ПК
любой 48ой ПК обычно находится в корпусе под клавой и высоты на доп.платы там скорее всего вообще нет

IL_DECAMERON
04.11.2018, 17:04
Каталог в TR-DOS может содержать не более 128 файлов, размер файла не более 65 килобайт (могу ошибаться). Какой практический смысл от данной поделки? Купите прототип HxC флоппиэмуля, и все.

Djoni
04.11.2018, 19:31
Каталог в TR-DOS может содержать не более 128 файлов, размер файла не более 65 килобайт (могу ошибаться). Какой практический смысл от данной поделки? Купите прототип HxC флоппиэмуля, и все.

Что за привычка давать по рукам , пусть человек занимается :)

PVV
04.11.2018, 22:58
Каталог в TR-DOS может содержать не более 128 файлов, размер файла не более 65 килобайт (могу ошибаться). Какой практический смысл от данной поделки?
К чему вообще число файлов и их размер? Идея то монтировать TRD образ файла(один или несколько, не имеет значения), который записан на SD диске и дальше работать в TRDOS как с обычным дисководом.

Купите...
мне это не интересно.
Я хочу это сделать сам и для себя, и если это пригодится кому то еще, я только за. Мне нужны были ответы на вопросы, я их получил, на данный момент существенных препятствий не увидел.

IL_DECAMERON
05.11.2018, 07:56
Что за привычка давать по рукам , пусть человек занимается

По рукам - ни в коем случае;) Если получится годная работоспособная железка, то почему нет?

Hacker Grey
25.11.2018, 23:48
При создании подобных устройств нужно, как говорится, изучить рынок, что уже есть, что можно улучшить и с чем необходимо иметь совместимость, ибо стандарт.
Потому что первым встанет вопрос о поддержки нового устройства старым программным обеспечением.
Вот использование таких неудобных в работе портов чем обусловлено ? Проще аппаратная часть ? Допустим.
А владельцы AY мышки будут счастливы, хотя их единицы. Но что будет с SD картой, если запустится программа, опрашивающая наличие мышки? Хорошо если просто контроллер повиснет и данные не испортит.