Вход

Просмотр полной версии : RS-232 disk mounter



TSL
04.05.2013, 11:33
Написал клиент, позволяющий использовать РС в качестве виртуального дисковода для ZX-Evolution.
Поддерживаются все 4 дисковода A-D.

Инструкция как сделать, чтоб было хорошо:
1. Подключаете пентеву к РС по RS-232 (COM, Serial, компот).
2. Качаете тулзу (https://zx-evo-fpga.googlecode.com/hg/pentevo/tools/rs232mnt/rs232mnt.exe).
3. Запускаете тулзу, например: rs232mnt.exe -a IRIS.TRD
4. На пентеве запускаете Wild Commander, F10, TR-DOS Mounter, <Mount RS-232>, Drive A.
5. Заходите в трдос и используете имедж с РС как реальный дисковод.

Естественно, все это работает в тсконфе (http://forum.tslabs.info/viewtopic.php?f=12&t=189).

Если запустить тулзу без параметров, выводится хелп.
Полезные ключики:
-log - печатает в консоль все операции обращения посекторно,
-com COM<nnnn> - выбирает компорт, если не подходит СОМ1 по умолчанию.

Пока поддерживается только чтение имеджей.
(Протокол для компорта разрабатывался вообще для тестовых целей, а тулза написалась ВНЕЗАПНО.
Поддержка записи будет сделана позже.)

Автор кода драйвера со стороны пентевы: JTN.
Автор WildCommander-a: Budder

alone
04.05.2013, 13:23
Поскольку никакие особенности железа тсконфы эта тулза не использует, то эта реклама тсконфы гнилая.

TSL
04.05.2013, 14:45
Использует. VDOS - фича, позволяющая перехватывать общения к ВГ93 и переадресовывать их на драйвер SD/HDD/RS-232.
Аппаратная подмена ПЗУ трдоса при обращении к ВГ93.

alone
05.05.2013, 14:41
EVODOS давным-давно перехватывает запись в порты без всякого просера ЛЕ. А вообще умные люди давно придумали #3d13.

psb
05.05.2013, 14:46
alone, если честно, выглядит как толстоватый троллинг... ну сделайте то же самое в бейз-конфу и вопрос отпадет. а щас споры ни о чем...

alone
05.05.2013, 14:49
В vTRDOS вся эта игра с перехватами и драйверами была сделана ещё в 2003 году, но никто её не использовал. Так что эта реклама выглядит как реклама автомобиля со встроенной зубочисткой, но без двигателя.

psb
05.05.2013, 15:35
В vTRDOS вся эта игра с перехватами и драйверами была сделана ещё в 2003 году, но никто её не использовал.
здесь речь не про драйвера и перехваты, а про монтирование образов с пц.

TSL
05.05.2013, 19:06
Попилил прошиву атмеги128 в пентеве.
Сделал буфера по 256 байт (256 на прием + 256 на отправку).
Теперь работает скорость 115200, авр успевает принимать больше данных от РС за ограниченный период времени. Все равно передавать от ПС пакеты длиной больше 256 байт на такой скорости НЕ РЕКОМЕНДУЕТСЯ.
Прошиву брать тут (https://zx-evo-fpga.googlecode.com/svn/branches/tslabs/pentevo/avr/current/default/zxevo_fw.bin).

Для WC рекомендуется обновить плагин маунтера для скорости 115200 (старая версия была 57600 изза ограничения буфера 16+16 байт).

Djoni
07.05.2013, 15:52
Ура заработала :)
Теперь чтобы посмотреть свежие скаченную дему Пентеве не надо возится с дискетами и флешками можно прям с PC образы подключать :v2_dizzy_roll:

Для подключения понадобилось

Кабель USB 2.0 Am/miniBm (http://novosibirsk.e2e4online.ru/shop/catalog/item/?id=247547)
драйвер для USB-RS232 моста на Пентеве
(http://www.ftdichip.com/Drivers/CDM/CDM%202.08.28%20WHQL%20Certified.zip) http://www.ftdichip.com/Drivers/VCP.htm Windows 7 сама нашла драйвера
и желание ;)

Прошлось отключить встроенный компот и переназначить виртуальный (USB-RS232) на COM1
не получилось у меня утилиту заставить подключать образы к COM4
(rs232mnt.exe -com4 -a hny2013.trd) :(


Команда LIST на Пентеве


http://s017.radikal.ru/i407/1305/5e/8468bcbcd35et.jpg (http://radikal.ru/F/s017.radikal.ru/i407/1305/5e/8468bcbcd35e.jpg.html)

на PC
http://s020.radikal.ru/i714/1305/89/7d29927fbf83t.jpg (http://radikal.ru/F/s020.radikal.ru/i714/1305/89/7d29927fbf83.jpg.html)

компот.
http://s018.radikal.ru/i518/1305/7c/c28193d610ddt.jpg (http://radikal.ru/F/s018.radikal.ru/i518/1305/7c/c28193d610dd.jpg.html)

TSL
07.05.2013, 16:01
не получилось у меня утилиту заставить подключать образы к COM4


Хммм.. Юзал ключ -com COM4?

Djoni
07.05.2013, 16:03
Хммм.. Юзал ключ -com COM4?
Да rs232mnt.exe -com4 -a hny2013.trd

Blade
07.05.2013, 16:07
Надо так:
rs232mnt.exe -com COM4 -a hny2013.trd

TSL
07.05.2013, 16:50
(см. рисунок)

Abadonna
15.05.2013, 14:00
Шикарное решение :) А можно узнать по-подробнее немного? В плане, это только для ZX-Evolution плюшка, или при некоторых ухищрениях можно на любой другой машинке так же сделать? В частности, на скорпионе?

psb
15.05.2013, 15:48
теоретически можно и на скорпе, если пропатчить как следует.

Abadonna
15.05.2013, 21:48
А патчить придется, простите, кого? Боюсь, у меня хватит смелости только на перепрошивку ПЗУ и перерезание дорожки "от третьей слева микросхемы в пятом ряду" :)

Судя по наличию этой темы, скорости RS-232 хватает, чтобы прокачать поток данных. Потихоньку ковыряюсь с аналогичным устройством: хочу повесит на шлейф FDD и в СОМ на РС пустить. Говорить о каких-либо достижениях, правда, пока рано :) Особенно пугает необходимость разгребаться с MFM :( Вся надежда на формат UDI :)

batr
15.05.2013, 22:36
Очень полезная вещь. А описание протокола обмена будет доступно? В этом случае можно будет и под линукс программу написать.

psb
15.05.2013, 23:59
А патчить придется, простите, кого?
ну, в общем-то, пзу вроде.


А описание протокола обмена будет доступно? В этом случае можно будет и под линукс программу написать.
протокол, вроде как, разрабатывается еще, будут новые более лучшие версии. и под линукс все будет тоже и не только.

Abadonna
16.05.2013, 11:05
ну, в общем-то, пзу вроде.
Ага, если так, то здорово, такую модернизацию, полагаю, многие смогут произвести :)
Если я верно себе воображаю такую систему, то получается следующая схема. Необхдимо в ПЗУ TR-DOS`a в процедурах непосредственного обмена с ВГ93 поставить переходы на наши процедуры, работающие с RS-232. И привертеть собственно этот последовательный порт. Таким образом, изменения в ПЗУ будут минимальны и совместимость, по идее, будет сохранена. Вероятно, имеются и более изящные решения. Поправьте меня, пожалуйста, если фигню спорол, эта тема небезразлична для меня :)


протокол, вроде как, разрабатывается еще, будут новые более лучшие версии. и под линукс все будет тоже и не только.

А можно посмотреть на уже реализованный протокол? С целью скопипастить, так сказать ;)

psb
16.05.2013, 12:45
Необхдимо в ПЗУ TR-DOS`a в процедурах непосредственного обмена с ВГ93 поставить переходы на наши процедуры, работающие с RS-232.
думаю, типа того. но я не очень в курсе, как сделано там.


А можно посмотреть на уже реализованный протокол?
тоже хз, спрашивать надо у авторов. но смысл? если просто попробовать - можно любой свой протокол намутить (читать сектор, писать сектор, а что еще?), а так он у них поменяется скоро.

Abadonna
16.05.2013, 13:12
Так я с Вашей подачи и спрашиваю у автора :)

Свой протокол, конечно, можно замутить. Пусть не идеальный, даже скажем прямо - откровенно паршивый, но можно :) Просто не хотелось бы плодить сущности, база спектрума и так отличается повышенным содержанием несовместимостей :) Все-таки желательно придерживаться единого стандарта, сами понимаете. Конечно, я понимаю, что никто не возьмет на себя роль авторитетного координатора, который бы с серьезным видом сидел за столом, внимательно смотрел через очки на наши прожекты и выносил резолюции: это правильно, а это в Бобруйск :)

psb
16.05.2013, 13:47
Все-таки желательно придерживаться единого стандарта, сами понимаете.
именно! а его-то еще и нет. ждем:)


Конечно, я понимаю, что никто не возьмет на себя роль авторитетного координатора, который бы с серьезным видом сидел за столом, внимательно смотрел через очки на наши прожекты и выносил резолюции: это правильно, а это в Бобруйск
БК бы взял!

Abadonna
16.05.2013, 14:10
БК бы взял!
Осталось только как-нибудь по-тактичнее ему от этом сообщить, мол, всеобщим собранием, на редкость единогласно, первым пунктом повестки дня... Как говорится, оставайся, мальчик, с нами - будешь нашим королем :v2_dizzy_king: :v2_dizzy_priest: :v2_dizzy_christmas: и все такое :v2_wink2:


Про протокол я имел в виду, пусть какой-нибудь, зато есть, чтобы не было всяких холиваров, мол, мой протокол круче твоего :mad: - от этого никто еще не выигрывал :v2_sleep:

psb
16.05.2013, 15:43
чтобы не было всяких холиваров
так не бывало, не бывает и не будет:)

Abadonna
16.05.2013, 17:17
так не бывало, не бывает и не будет:)

Минуточку, позвольте-позвольте! Вот тут я с Вами не могу согласиться! :biggrin:

TSL
31.05.2013, 04:55
В плане, это только для ZX-Evolution плюшка, или при некоторых ухищрениях можно на любой другой машинке так же сделать? В частности, на скорпионе?
Там плюшка в том, что при обращении к ВГ93 срабатывает подмена ПЗУ тырдоса на страницу ОЗУ с соответствующими процедурками. Далее процедурки переадресовывают работу драйверу соотв. девайса (HDD, SD, RS-232), где читается/пишется сектор, вертается взад в ПЗУ тырдоса, типа тут ничо и не было, и все думают, что прочиталося с ВГ93. Это фича тсконфы.

А описание протокола обмена будет доступно?
Хехе, даже находясь в одном чятике с автором протокола, я его (протокол) вычислил тупо по логу гипертерминала =)
На картинке. Тока там ошибка: перед кодом операции пропущен байт - номер дисковода (0-3).

Abadonna
04.06.2013, 15:55
Ага, понятно, спасибо. Получается, если кто-то вдруг пожелает смастерить некое гипотетическое устройство, которое будет спеком видеться как внешнее запоминающее устройство, то проще всего с ним будет работать путем подмены ПЗУ TRDOS`а? То есть, если я возжелаю прикрутить, к примеру, тот же Ethernet в качестве диска, то нужно будет подключить его к спеку к портам, на которых сейчас сидит ВГ93 и в ПЗУ нью-TRDOS по тем же адресам, где сейчас находятся процедуры работы с ВГ93 разместить свои собственные с теми же функциями? Это если с максимальной прозрачностью для софта.

В результате, чисто в теории, заменив прошивку в ПЗУ, можно вместо ВГ93 поставить микроконтроллер, который будет работать и с винтами, и с карточками, и с последовательными интерфейсами и тому делее и так подобное? Заманчивая открывается картинка :)

Хотя, наверное, можно даже ВГ93 не выкидывать :)

TSL
04.06.2013, 16:58
Тут фишка не в том, что "прошивкой ПЗУ", а как раз в противоположном! ПЗУ там девственное 5.04 со всеми своими вшами для совместимости. Подменяется ПЗУ на страницу ОЗУ - причем там лежит стандартный драйвер, не зависящий от твоего устройства. Который переадресовывает запросы на драйвер конкретного юзер девайса.
И да, можешь прикрутить что угодно, хоть ЮСБ, хоть ирду.
Из портов юзается только 2 окна (8000 и С000) на запись и они же - на чтение (есть такие порты 2 штуки, без них не вышло).
Для сравнения: обычный недостиральный порошок савельевского завода юзает:
- дохренадцать портов АТМ диспетчера,
- копию набора всех портов ВГ93,
- 10+ штук портов чтения текущей конфигурации железа
- хзчо
и при этом ПЗУ тырдоса перекоцана на британский флаг!

Abadonna
04.06.2013, 19:23
Из Вашего ответа мне только "британский флаг" понятен :)

Наверное, я не очень четко выразился. Или всего один раз прочел Ваш первый пост :). Если я верно понял Ваши объяснения в первом посте, то при обращении к RS-диску происходит двойная подмена ПЗУ: сначала на ПЗУ TRDOS, затем на страницу памяти, в которой находятся процедуры RS-mounter`a.

Судя по всему, в моей голове поднимается интересный вопрос: неужели единственный способ подключить сколько-нибудь серьезное устройство - это подмена ПЗУ?

TSL
04.06.2013, 19:31
ПЗУ тырдоса состоит из множества обращений к ВГ93, которые в сумме составляют смысл существования самого ПЗУ - работа с дисководом. В отсутствии реального дисковода т.е. для его эмуляции, все такие обращения надо заменять на эквивалентные по смыслу функции АПИ драйвера другого носителя. Примеры:
- прием сектора данных с ВГ93 заменяется на прием сектора с ИДЕ,
- позиционирование - на запись переменной, где хранится номер текущей дорожки.
ВСЕ такие процедурки известны и чотко выловлены, по соответствующим адресам на паге с трапами висят обработчики. Происходит например чтение порта статуса с дисковода, который отмечен битом как виртуальный - обращение к ВГ93 блокируется (чтение происходит впустую), а следующая инструкция выполняется уже не из ПЗУ тырдоса, а там (хоппа!) - пага с трапами, оттуда. Когда нужное действие произведено, мы коррЭктно вертаемся взад на тот же адрес где было обращение, предварительно включив опять тырдос. А все, что надо, уже лежит в памяти/переменных/на накопителе.

solegstar
04.06.2013, 19:58
TSL, а вы можете собраться как-то с JTN`ом и написать функционал VDOS`a? :) а то по поиску только обрывки фраз находятся и по крохам, вот сейчас, ты рассказываешь... JTN мне тож объяснял чуть в асе, но пока мало понятно, как это можно организовать на других машинках, например на Profi. Какие особенности схемотехники нужны, для работы VDOS`a? Например Profi уже умеет подставлять 0-ю страницу ОЗУ вместо ПЗУ. Про софто-поддержку пока рано говорить, интересует именно аппаратные условия.

TSL
04.06.2013, 20:16
Наверное можем :)
Могу послать в сорцы конфы (алоний моде = он), это проще всего и понятнее.
Эназэ вэй тут:
https://zx-evo-fpga.googlecode.com/svn/branches/tslabs/pentevo/docs/TSconf/TSconf.xls
(вкладка VDOS)
я кажется даже правильно описал поведение всей этой шняги.
Будут вопросы - задавай.

---------- Post added at 19:16 ---------- Previous post was at 19:13 ----------

Алсо, легче и проще было б проэмулить апи #3D13, если б его кто юзал... Если вы понимаете, о чем я.

creator
29.08.2015, 01:39
Для подключения понадобилось
Кабель USB 2.0 Am/miniBm (http://novosibirsk.e2e4online.ru/shop/catalog/item/?id=247547)
И как при этом заставить "TR-DOS Mounter" монтировать диск не с RS-232, а с USB?

Djoni
29.08.2015, 09:42
И как при этом заставить "TR-DOS Mounter" монтировать диск не с RS-232, а с USB?

C версии C на плате ZX Evolution стоит мост USB-RS232 через него и подсоединять.

creator
29.08.2015, 14:15
C версии C на плате ZX Evolution стоит мост USB-RS232 через него и подсоединять.
Т.е. на Rev.C RS-232 и USB по сути один и тот же порт. Я думал они по разным адресам.

Уже и nullmodem кабель (2-3, 3-2, 5-5, 7-8, 8-7) спаял, всё равно не работает. rs232mnt.exe всё хорошо делает:

rs232mnt.exe -a 0001.TRD

0001.TRD opened successfully
COM1 opened successfully

rs232mnt.exe -com COM4 -a 0001.TRD

0001.TRD opened successfully
COM4 opened successfully
TR-DOS Mounter в Wild Commander ни на что не ругается, "монтирует" без всяких вопросов. А входишь в TR-DOS, делаешь LIST — надолго задумывается и "Disc Error". Более того, TR-DOS Mounter "монтирует" без всякой ругани даже если в USB или RS-232 ничего не подключено. Wild Commander последней версии — 0.94.