Собственно да, только 8 и наблюдаю.
Собрал на макетке делитель, уже можно различить красный и розовый, но нужно подобрать номиналы.
Собственно да, только 8 и наблюдаю.
Собрал на макетке делитель, уже можно различить красный и розовый, но нужно подобрать номиналы.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Разбираюсь потихоньку с интерфейсом IDE-устройств на Орионе. В связи с этим родилась небольшая утилита вывода ТТХ винчестера, может кому-нибудь пригодится в хозяйстве:
Утилита униплатформенная, традиционно поддерживаются Орион-128 и Орион-ПРО (автодетект средствами API DSDOS).
КНЖМД на Орион-128 ищется по базовому адресу F790h (DS-Card), на Орион-ПРО - 50h (карта IDE-RTC).
В случае ошибки выводится её подробная расшифровка (не безликий код, как в популярных тестах).
Ссылка для скачивания - http://denn.ru/8bit/orion/soft/hdd/hddinfo.ori - обновлена 03.03.2018 !
П.С. фото с Орион-128:
Ссылки по теме:
Программирование жесткого диска
Описание стандарта ATA с командами
Коды обязательных команд АТА
Немного про LBA режим
Информация о жестких дисках
Последний раз редактировалось Denn; 03.03.2018 в 22:52. Причина: добавил ссылки
Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел
Мини отчёт, вести с полей так сказать.
Наконец-то, дошли руки до жёстких дисков. Разработан оптимизированный под 8-битные реалии формат хранения данных, написана утилита форматирования диска и драйвер под ОС DSDOS.
Вариант подключения по схемотехнике от ОРИОН-ПРО (карта IDE-RTC, как я понимаю - калька с "вражеского" NEMO_IDE).
Скорость работы порадовала безумно! Файлы летают со скоростью самолётаВот небольшой наколенный ролик:
Пилотная версия драйвера пока не поддерживает подкаталоги, впоследствии данный функционал будет добавлен.
Утилита форматирования выполняет разметку с учётом будущего расширения функционала драйвера. Поддерживаются накопители от 16 Мб до 1 Тб! Однако нижний предел теоретический.. Дело в том, что работа с НЖМД организована строго в режиме LBA, который, судя по информации из интернетов, поддерживают только накопители от 512 Мб и выше.
Организация информации на диске следующая. Традиционно, ОС DSDOS ничего не "знает" о больших носителях и подкаталогах, она работает с текущим диском, максимальное количество файлов на котором - 255, соответственно суммарный (теоретический) объём не более 16 Мб.
В случае больших носителей вводится понятие подкаталога (диск в диске), т.о. в основном (корневом каталоге) может быть до 255 подкаталогов (на самом деле 254 из-за особенностей устройства FAT DSFS). Подкаталог представляет собой 16-мегабайтный сегмент общего пространства. Т.о. суммарно корневой каталог + 254 подкаталога займут 16 Мб х 256 = 4096 Мб = 4 Гб. Для возможности использования ещё большего пространства используется второй уровень виртуализации - каждый подкаталог также может содержать подкаталоги. Т.о. возможно использование до 4 Гб х 256 = 1024 Гб = 1 Тб дискового пространства.
В результате имеем следующее. Если объём диска менее 4 Гб, то доступен корневой каталог и некоторое кол-во (в зависимости от объёма) подкаталогов первого уровня, если объём диска ровно 4 Гб, то доступно максимальное кол-во подкаталогов - 254. Если объём диска равен 8 Гб, то доступен корневой каталог + 254 подкаталога + по одному подкаталогу второго уровня в каждом подкаталоге первого уровня. И так далее: каждые 4 Гб добавляют ещё один "слой" подкаталогов второго уровня.
Организация достаточно мудрёная, однако её поддержка использует минимум ресурсов ПРК и при этом скорость работы чрезвычайно быстрая!
Аналогично будет сделана поддержка карт SDHC в ОС DSDOS. В следующей версии ОС поддержка больших накопителей будет включена.
Последний раз редактировалось Denn; 09.03.2018 в 23:32.
Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел
Врут интернетчики, еще когда начинал играть с IDE и с разбора еще были диски мелких размеров, успел пощупать несколько ноутбучных винтов середины прошлого века (2.5" но толстенькие - одни из первых выпущенных такого формфактора, я брал только ноутбучные чтобы было питание только +5В) все они были объемом от 100 до 200 Мб и все поддерживали LBA.
Сразу предлагаю определиться со схемотехникой. КМК лучшим вариантом для Ориона был бы вариант схемы на ИР24(29) - максимальная возможная для Z80 скорость при затратах (в минималке) в полдюжины корпусов дешевой мелкой логики. Предлагаю вариант от PVV из соседней профильной темы. У него получился самый быстродействующий вариант (думаю, по скорости уделает IDE любой схемы) т.к. в моем варианте на ИР24 я сэкономил один корпус за счет выполнения двух IN/OUT (второй для запуска счетчика пакета), а у него запуск регистра автоматизирован и байт с SD читается за один IN/OUT. Единственно, я бы добавил узел предустановки обеспечивающий пакеты не кратные 8 (как в моей схеме), но это уже детали к списку TODO.
- - - Добавлено - - -
Планируешь ли добавить вариант для схемы на ВВ55? Вариант от ПРО хотя и побыстрее, но он проблемный (у меня на нем запустилось куда меньшее количество приводов чем на ВВ55), а схема с ВВ55 есть "искаропки" на всех реализациях Ревизии-512, да и ручками паяется за вечер (чего там паять - разъем IDC40 и одна ЛН1).
Тем более что драйвер тоже уже есть (например в варианте для Z80, думаю что тип проца не проблема).
- - - Добавлено - - -
В итоге я свой ПРО переделал под схему с ВВ55, прямо на ВВ55 на материнской плате (бывший порт принтера и конфигурации, конфиг DIP теперь у меня читается с АП6 - в версии 3.20 для этого есть слепыши под ВВ55).![]()
Последний раз редактировалось Error404; 10.03.2018 в 11:50.
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Насчёт ПРО пока не знаю. Если будет готовое работающее и быстрое решение, то вполне можно поддержать его.
На О-128 уже разработана схемотехника аппаратного контроллера SDHC, и даже сделан опытный образец, осталось дело за программной поддержкой (после того, как до конца разберусь с НЖМД, сразу возьмусь за карты). Если контроллер покажет рекордную скорость обмена, тогда имеет смысл ориентироваться на него, имхо. Если чудо не случится, тогда будем ориентироваться на схемотехнически простое решение.
Если будет готовая схемотехника для ПРО, то можно попробовать спаять. В любом случае, без железки отлаживать ПО невозможно.
В своём ПО я использую два вида чтения сектора: целосекторное (512 байт) и побайтное. Запись всегда целосекторная. Это связано с особенностью работы НЖМД: он всегда читает целый сектор в свой буфер, а выдавать содержимое буфера хосту может как угодно. Т.о. для экономии времени читается только нужное кол-во данных (N целых секторов "оптом" + некратный хвост). Запись неполного сектора, к сожалению, физически невозможна, поэтому пишем всегда N секторов, с округлением в большую сторону ((
Т.е. требуется возможность чтения кратно одному байту.
Если останется место в финальной версии драйвера (после добавления поддержки подкаталогов), то можно сделать.
У меня весь зоопарк имеющихся винтов прекрасно работает с ПРОшной "нэмой". Были какие-то странные проблемы с тестами из интернетов (типа не работали механические "винты" на длинных шлейфах), но в итоге я изучил оригинальную документацию по протоколу АТА, согласно "учебникам" написал свои п/п работы с IDE-устройствами, и все винты и шлейфы любой длины заработали без каких-либо проблем.
На рев.512 я запаял насмерть ВВ55, до ЛН1 мне уже не добраться ))
Вроде в эмуле b2m есть поддержка КНГМД на ВВ55+ЛН1, как-нибудь поковыряю этот вариант. В любом случае, нужна аппаратная часть для отладки ПО.
На 10 МГц она тоже стабильно работает?
Насколько проигрывает по скорости "нэме" ?
Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел
Схемотехника у нас с PVV в виде платы подключающейся к ШД/ШУ любого 8080/Z80 компа, только селект требуемого порта определить. Готовой платы для ПРО конечно нет.
И процессор Ориона там работает с SD с той же скоростью, с какой он работает с памятью (или портами), и при этом следующий байт всегда готов (т.е. тупо цикл "читай да клади в буфер" из трех опкодов). Поэтому на "сырых" секторах (т.е. чтении/записи без ньюансов обработки) контроллер SD на внешнем микроконтроллере может быть быстрее только если он кладет сектор в память Ориона через DMA, во всех других случаях скорость внешнего контроллера будет такая же, а всего вероятнее она будет меньше, т.к. не думаю, что 10-МГц Z80 удастся так подружить с внешним контроллером, чтобы внешний был всегда готов для очередного обращения Z80, кроме того наверное внешнему нужно время на чтобы после получения номера сектора этот сектор прочитать (а схеме на регистре - нет), вряд ли он будет успевать между двумя соседними обращениями Z80 (4 такта) еще на SD лазать? Также, есть тема с мультисекторным чтением (когда "одной командой" а не посекторно можно прочитать с SD-карты хоть сотню секторов начиная с какого-то, а внешнему контроллеру такой объем просто негде буферизировать, да и если поставить дорогой контроллер с сотнями килобайт ОЗУ, то задержка хоста на предварительное чтение {там же не сквозной канал прямого доступа к SD} большого блока уже станет сильно заметной в сравнении с задержкой которую внешний дает при подсасывании одного очередного сектора).
Если попадутся ошибки в моей реализации, телеграфируй.
Исходники уж не прошу.
Работает нормально на обоих частотах. Там у меня так получалось: те экземпляры приводов что работали в данной из схем (ПРО/ВВ55) работали (или не работали) на любой частоте проца. Поэтому у меня даже мыслю была убрать такты WAIT что делает ПРО при обращении к портам (типа ускорить работу с IDE). Хотя как по мне, скорости и так вполне хватает даже для CP/M (активно пользующей носитель).
Те приводы что работали в схеме ВВ55 на ПРО тоже работали все, а вот наоборот нет. Но тут я должен заметить, что именно HDD (т.е. привод с блинами и магнитными головками) я проверял только один (других нет, т.к. не планирую ими пользоваться ввиду меньшей удобности носителя), а вот CF попробовал до десятка от разных производителей и адаптеров CF->IDE четыре штуки разных.
При том, я пробовал и код написанный авторами ПРО (их загрузчик с НДД стартующий из ПЗУ, он урезанный по части команд АТА, я уже не помню точно в чем, помню только что мне не понравилось как там написано) и мой код (который отчасти тоже подсмотренный и Инете), приводы работали или не работали одинаково.
- - - Добавлено - - -
По скорости вариант ПРО с ВВ55 я не мерял, но если заглянуть в код, то вариант с ВВ55 думаю раза в два-три медленнее.
Последний раз редактировалось Error404; 10.03.2018 в 16:48.
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
А Compact Flash разве не все в режиме LBA работают? А то у мня валяются парочка на 128Мб...
Не могу сказать, всё многообразие накопителей в мире не изучал. Ранее выкладывал утилиту, которая расскажет всю правду о накопителе, в т.ч. и про поддержку LBA. Также можно "пробить" в гугле ТТХ своего диска.
Утилита форматирования проверяет факт поддержки режима LBA, и в случае её отсутствия, выдаст соответствующую ошибку.
Последний раз редактировалось Denn; 09.03.2018 в 15:03.
Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел
Возник вопрос.
Возможна ли работа с ORI-сервером на "Орион-Про" через "прошную" плату COM-портов?
Вроде порты определяются, выделяется диск "G". На РС запускаю oriserv.exe, но связь не устанавливается.
DSDOS сборки 3.87. Как я понимаю, link.exe на "Орионе" в этой сборке отсутствует, вернее запускается с загрузкой ОС. Верно?
Прежние версии ОС не скачать, т.к. выходит сообщение, что сайт на реконструкции.
Последний раз редактировалось АлександрПП; 15.03.2018 в 13:01.
Да, конечно.
Прекрасно. Все шансы на успех есть!
Порты, собранные по родной схемотехнике, ОС настраивает на скорость 38400 Бод (8-N-1). Не самые древние ВВ51А должны работать нормально.
Аналогичные настройки порта должны быть и на PC (конкретно в oriserv.exe). Ещё в настройках порта на сервере нужно правильно выставить контроль протокола ("hardware" или "none" - в зависимости от аппаратной реализации соединения). Само собой должен быть аппаратный линк между портами Ориона и PC (нуль-модемным кабелем), порты должны быть исправны.
В сборках ОС есть тесты COM-портов (если нет в сборке, то можно взять тут), со стороны PC можно использовать эту утилиту. Т.о. можно наглядно проверить соединение.
link$ уже давно не используется в виду неактуальности, поэтому в сборки и не включается. Но работать он по-прежнему может, разумеется.
При загрузке ОС устанавливается не link, а драйвер поддержки более продвинутого протокола файлообмена.
Последний раз редактировалось Denn; 15.03.2018 в 17:23.
Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)