Давай попробуем.
Да, он имеет доступ к портам смука плюс D2 #1FFD открывает их на манер GMX.
---------- Post added at 23:03 ---------- Previous post was at 23:01 ----------
Где драйвер взять?
Вид для печати
Давай попробуем.
Да, он имеет доступ к портам смука плюс D2 #1FFD открывает их на манер GMX.
---------- Post added at 23:03 ---------- Previous post was at 23:01 ----------
Где драйвер взять?
Гугль не находит. Значит завтра выложу комплект с утилитами и документацией. Там немного сложнее получается, чем с Zhdd_4. Но не сильно.
Выкладываю в свободный доступ драйвер idesmuc.blk для жёстких дисков подключенных через SMUC с открытыми портами DOS. https://yadi.sk/d/pP14dQ8TgwLuF
В комплекте с драйвером набор необходимых утилит и их описание.
Да, образ диска открывается только в новом ядре. Если кому нужно под старое ядро - пишите, я конвертну в старый формат.
---------- Post added at 11:20 ---------- Previous post was at 11:19 ----------
Исходные тексты драйвера и утилит пока не распространяю.
Поясни, как этот образ открыть и чем? что с ним делать?
А этот img на is-dos диск записать?
---------- Post added at 20:55 ---------- Previous post was at 20:48 ----------
записал на is-dos диск, запустил сисетму, сделал электронный диск.
is-dos этот img видит, но enter ничего не даёт. Что я делаю не так?
---------- Post added at 20:59 ---------- Previous post was at 20:55 ----------
сделал. оказалось надо скопировать к нему в тот же каталог image.com, а IDESMUC.IMG переименовать в image.img.
Или у меня что-то не настроено для автоматического открытия образов.
Gutten, записал так IDESMUC.IMG или так idesmuc.img? Глянь файл extent.txt. Там для img должен быть image прописан. Вот про регистр не помню - чувствителен он к нему или нет.
Да, оказалось дело именно в регистре. Я скачанный с Я.диска образ записывал в образ is-dos дискеты .fdi используя FAR. И оно записалось в верхнем регистре.
Не хочет создаваться ide_part.txt
При выборе пункта "Список разделов" выходит из настройщика, сам файл ide_part.txt имеет 0 длину и ошибку 85 "Сегментированный файл сломан" при открытии.
Что делать?
я так понимаю, проблема именно в том, что я использую CF.
Впервые сталкиваюсь с такой проблемой. Я чуть попозже гляну, что происходит и может быть предложу альтернативный вариант программы.
А у тебя драйвер idesmuc в этот момент уже установлен?
Установлен. Я иду по инструкции: idesmuc.blk ->set_ide -> ide_serv
Не уверен, что дело в карте памяти.
При запуске программы set_ide в верхнем окне выводится определённое количество секторов и головок. То, что выводит программа совпадает с паспортными данными карты памяти? Проверить можно в теневом сервисе в меню Set up hard disk.
---------- Post added at 16:37 ---------- Previous post was at 16:20 ----------
Для чтения таблицы разделов на диске используются ставшие уже классическими процедуры работы с жёстким диском, опубликованные в газете ZX-NEWS 54 Владом Сотниковым. У тебя с картой памяти работает его VEGA-COMMANDER?
---------- Post added at 16:43 ---------- Previous post was at 16:37 ----------
Если они у тебя не работают, то могу переписать их с использованием функций теневого монитора, т.е. через RST 8. При этом потеряется совместимость (по крайней мере на этапе настройки драйвера) с обычной (не Скорпионовской) версий chic.
---------- Post added at 16:47 ---------- Previous post was at 16:43 ----------
Кстати, set_ide вообще не в курсе, что на диске могут быть какие то другие разделы, кроме MFS. У тебя на диске глобальный раздел MFS в начале диска создан и начинается с нулевого цилиндра, первого сектора и первой головки?
---------- Post added at 16:54 ---------- Previous post was at 16:47 ----------
Если что, то добавить поддержку с MFS не в начале диска будет не сложно. Сделаю чуть позже.
количество секторов и головок совпадает.
Значит, дело в том, что CF разбита на FAT32 и MFS, причём MFS идёт после FAT32.
С какого сектора начинается MFS сказать не могу - это показывает Paragon Partition Manager, но его значения C/S/H не совпадают с теми, как считает теневик.
---------- Post added at 17:23 ---------- Previous post was at 17:21 ----------
Если FAT32 разместить после MFS, то тогда Win7 не видит раздела, я об этой проблеме писал раньше. Да и вообще она не очень любит разделы на CF.
Я сделал новую версию set_ide.com. Теперь перед сканированием разделов на диске осуществляется поиск MFS в MasterBootRecord и в дальнейшем работает с первым найденным разделом MFS.
Кроме того кое чего исправлено по мелочам, что давно напрашивалось, но не было особой необходимости. Новый комплект идет следом через несколько минут.
---------- Post added at 17:59 ---------- Previous post was at 17:45 ----------
https://yadi.sk/d/pP14dQ8TgwLuF
Это точно изменённый файл? У меня ничего не изменилось.
---------- Post added at 18:35 ---------- Previous post was at 18:29 ----------
SoftFelix, а ты пробовал этот драйвер? Поделись твоими результатами.
Да, я сейчас скачал с я.диска образ и посмотрел его в текстовом виде. Файлы новые. По-прежнему вываливается из программы при попытки получить список разделов?
---------- Post added at 19:39 ---------- Previous post was at 19:37 ----------
Посмотри контрольную сумму файла set_ide.com. Должна быть 63252, у предыдущей версии была 10434
Да, файл новый.
Да, вываливается и файл ide_part.txt имеет 0 длину.
Я сделал на карте памяти два раздела - первый FAT32, второй MFS и подтверждаю наличие проблемы. Программа находит в MBR первый раздел MFS, но обращается "мимо" раздела MFS и создаёт файл нулевой длины. Возможно, что описание MBR, которым я пользовался, не совсем верное.
Позже скажу точнее...
Либо я чего то не так понимаю, либо статья на википедии чего то важное умалчивает.
Вот эта статья
https://ru.wikipedia.org/wiki/%D0%93...B8%D1%81%D1%8C
В структуре описателя раздела указано где брать координаты начала разделов. В моём случае, на карте памяти 1 Гб создано два раздела - первый FAT32 на 512 Мб, второй MFS до конца карты. Так запись для раздела MFS выглядит так:
00 05 05 10 53 0F 3E C0 3F 00 10 00 00 80 0E 00
Вторая цифра указывает номер головки с которого начинается раздел
Третья цифра совмещает в себе номер сектора (первые 6 разрядов), а старшие два разряда это 8 и 9 разряды номера цилиндра
Четвёртая цифра младший байт номера цилиндра
Т.е. у меня получается Головка=5, Сектор=5, Цилиндр=16. Но это явно бред.
Кроме того в статье указано, что такой способ хранения позволяет адресовать 7,8 Гб. Однако если посчитать максимальные допустимые значения для указанных разрядностей координат, то получится:
Четыре разряда для головки (16 максимум)
Пять разрядов для сектора (63 максимум, так как сектора нумеруются с единицы)
Десять разрядов для цилиндра (1024 максимум)
16*63*1024 = 1032192 сектора или 504 Мб.
Есть у кого мысли по этому поводу? Что же на самом деле хранит в себе МБР и в каком виде?
Цитата:
формат CHS устарел и может адресовать только 8 ГБайт дискового пространства. CHS адрес занимает три байта или 24 бита, что при длине сектора в 512 байт дает 512 * (2^24) = 8 ГБайт.
http://itreant.narod.ru/MBR.htmКод:Смещение Размер Назначение
Раздел 1 Раздел 2 Раздел 3 Раздел 4
1BEh 1CEh 1DEh 1EEh 01h Флаг загрузочности раздела
1BFh 1CFh 1DFh 1EFh 01h Начало раздела — головка
1C0h 1D0h 1E0h 1F0h 02h Начало раздела — сектор (биты 0-5), цилиндр (биты 6-15)
1C2h 1D2h 1E2h 1F2h 01h Код типа раздела
1B3h 1C3h 1D3h 1E3h 01h Конец раздела — головка
1C4h 1D4h 1E4h 1F4h 02h Конец раздела — сектор (биты 0-5), цилиндр (биты 6-15)
1C6h 1D6h 1E6h 1F6h 04h Смещение первого сектора
1CAh 1DAh 1EAh 1FAh 04h Количество секторов раздела
Ну я о том же - адресовать то 8 Гб может и можно, но вот добраться до раздела за границей 504 Мб я не знаю как. Пока занимаюсь поиском способа...
Я к тому, что в той статье упоминается адресация 2^24 бита, а адресация 504Мб явно 2^20 занимает. Может в этом дело?
---------- Post added at 22:26 ---------- Previous post was at 22:23 ----------
число головок получается 255, а не 16.
---------- Post added at 22:29 ---------- Previous post was at 22:26 ----------
https://ru.wikipedia.org/wiki/CHSЦитата:
В жёстких дисках объёмом более 524 Мб со встроенными контроллерами эти координаты уже не соответствуют физическому положению сектора на диске и являются «логическими координатами». Так, механизм адресации Large сообщал BIOS вдвое большее число головок и вдвое меньшее число цилиндров. Затем контроллеры стали сообщать, будто в дорожке 63 сектора, а в цилиндре 255 дорожек (максимально допустимые значения), число же цилиндров подбирается сообразно объему. Представить жесткий диск с такими характеристиками трудно — он бы состоял из 128 пластин, поэтому контроллер занят преобразованием логических адресов в физические координаты. Реальное число секторов в современном диске — около ста, и дорожек бывает не больше шести.
---------- Post added at 22:32 ---------- Previous post was at 22:29 ----------
Но теневик нормально работает с CF 2Gb и отключенным LBA. Драйвер ZHdd тоже. Посмотри, что они получают из координат MFS раздела, когда он после FAT32.
У менятеневик определяет геометрию какрты как C/H/S=3900/16/63. LBA отключен.
Попробую вычислять координаты начала раздела через поле "Количество секторов раздела" предыдущих разделов или же через поле "Смещение первого сектора". На пальцах вроде получается
---------- Post added at 19:11 ---------- Previous post was at 18:45 ----------
Другой способ.
В моём случае MFS раздел начинается с 1048639-го абсолютного сектора. Если это число разложить в CHS адресацию, то получаются следующие значения:
S = 5
H = 5
C = 1040
Но из-за ограничения разрядности для номера цилиндра можно вписать только 10 разрядов, т.е. 1024.
1040 - 1024 = 16
Как раз мой случай - остаток 16 записан в таблице разделов. Теперь понять бы как проще определить, что в номере цилиндра произошло переполнение?
---------- Post added at 19:28 ---------- Previous post was at 19:11 ----------
Вторым способом попробовал на скорую руку - set_ide.com выдала мне нормальный файл ide_part.txt. Осталось только внедрить эту самую "скорую руку" в программу капитально.
Особо интересно, когда переполнение происходит несколько раз, как у меня на C=3900
---------- Post added at 20:30 ---------- Previous post was at 20:18 ----------
Посмотри:
http://www.island-formoza.ru/ustroys...ata-ue_39.html
http://citforum.ru/hardware/bookide/...ml#Translation
---------- Post added at 20:39 ---------- Previous post was at 20:30 ----------
Кстати, проверил сейчас - драйвер Zhdd чудесно работает с включенным LBA. Может попробовать set_ide с таким режимом?
Нет, не стоит. Дело не в этом.
Я добавил в set_ide.com расчёт координат раздела по смещению от начала. По сути это был LBA адрес начала раздела. Проверил, у меня работает.
Новая версия тут:
https://yadi.sk/d/pP14dQ8TgwLuF
---------- Post added at 22:32 ---------- Previous post was at 22:31 ----------
Кто заинтересован - можете по тестировать.
---------- Post added at 22:33 ---------- Previous post was at 22:32 ----------
Для визуального отличия от предыдущей версии изменил цвет курсора в главном меню - теперь голубые буквы на синем фоне.
Уже лучше - не выкидывает и файл не 0 размера, но:
при его открытии выдаёт ошибку 130,
ide_serv подключает разделы, можно зайти в некоторые каталоги, но в некоторые не пускает с ошибкой 85.
---------- Post added at 23:00 ---------- Previous post was at 22:56 ----------
85 ошибка бывает при включенном LBA
---------- Post added at 23:01 ---------- Previous post was at 23:00 ----------
130 ошибка на многих текстовых файлах появляется, если после установки idesmuc.blk, даже если они на разделе, подключенном через zhdd
---------- Post added at 23:04 ---------- Previous post was at 23:01 ----------
при удалении idesmuc через eliminat текстовые файлы начинают открываться нормально, даже ide_part.txt
---------- Post added at 23:06 ---------- Previous post was at 23:04 ----------
Да, при установленном idesmuc.blk текстовые файлы не открываются с ошибкой 130.
---------- Post added at 23:07 ---------- Previous post was at 23:06 ----------
Т.е. ide_serv.com работает корректно. Некорректно работает idesmuc.blk.
cache у меня установлен 40 блоков.
---------- Post added at 23:12 ---------- Previous post was at 23:11 ----------
Да, если поставить 16, то ошибка пропадает.
40 я поставил, когда arzt+ не хватало памяти. Теперь её опять не хватает, но надо уменьшать кэш.
На чём же остановиться, чтоб всех устроило?
Учти ещё, что сам по себе ide_serv не умеет подключать драйвер к буквам дисков. Он только пишет в тело драйвера координаты разделов. Тебе нужно подключить драйвер к буквам дисков с помощью dev.com.
---------- Post added at 23:14 ---------- Previous post was at 23:13 ----------
40 это очень много для версии classic. Уменьшай хотя бы до 29.
Для запуска arzt+ кеш нужно наоборот уменьшать, а не увеличивать. Оставь в системе 29 блоков, а arzt+ запускай через батник:
cache /6
arzt+
cache /29
Для arzt+ его приходится уменьшать постоянно. Иногда даже снятие всех резидентов и блочников не достаточно для работы arzt+. Для этих случаев я держу версию Chic, но как основную использую Classic
---------- Post added at 23:19 ---------- Previous post was at 23:17 ----------
idesmuc.blk тестировался на протяжении 11 лет и это только у меня. К нему претензий не должно быть. Единственное, что он написан под старый стандарт ATA и может просто не работать с современными устройствами. Но он должен делать это всегда, а не только на некоторых каталогах.
Я посмотрю, что можно улучшить в плане совместимости с современными устройствами. У меня пока нет ис-доса на карте CF. Завтра буду гонять драйвер на карте памяти.
Да, при уменьшении кэша всё работает.
Кэш я увеличивал на позапрошлой неделе, когда разбирался с zhdd. Какой-то программе его было мало. Может и не arzt+. Поиск в инете подсказал увеличить кэш и это помогло.
Рассказывай, что дальше делать, чтобы перевести систему на idesmuc.blk и при этом не угробить её.
От настроек LBA в теневом сервисе работа драйвера и утилит вообще никак не должны зависеть. Они не используют вызовы RST 8 в работе и потому изменение настройки LBA никак на них не влияет.
---------- Post added at 23:29 ---------- Previous post was at 23:26 ----------
Загрузись с дискетки.
Установи драйвер в память.
Подключи к драйверу диски в dev.com.
Подключи разделы к драйверу.
Назначь системный и быстрый диски в gmen.com (можно этого не делать, а настроить через autoexec.bat).
Сохрани систему с помощью zhddsv
Подключи загрузчик командой idecon+ is
Да, и потестируй скорость чтения программой bad.com
по работе bad уже видно, что скорость выше.
а вот с установкой через дискетку пока сложности. разберусь, можно ли через флоппиэмуль писать файлы.
---------- Post added 02.06.2015 at 00:33 ---------- Previous post was 01.06.2015 at 23:53 ----------
Пока застрял. Флоппиэмуль не может записать загрузчик на свою карточку.
---------- Post added at 00:39 ---------- Previous post was at 00:33 ----------
проверка bad раздела 16кб (турбо включено):
zhdd: 2мин 46 сек
idesmuc: 1 мин 9 сек
При проверке в памяти одновременно два драйвера, система подключена через zhdd, второйраздел через idesmuc.
---------- Post added at 00:42 ---------- Previous post was at 00:39 ----------
А можно загрузившись с zhdd, на работающей системе установить idesmuc, сделать его основным драйвером, записать ситсему, потом перезагрузиться и удалить zhdd и снова записать систему? Никто не пробовал такой фокус провернуть?
Можно. Я так делал. Только это всё одним этапом можно сделать и без перезагрузок вообще.
Ставишь idesmuc. Подключаешь к нему системный раздел. Потом в gmen.com (ss/9) указываешь, что у тебя системный диск с другой буквой, на которой сидит idesmuc. После этого становится возможным удалить драйвер zhdd_4. Сохраняешь систему.
Если же тебе под системный диск необходима строго та буква, на которой сидел zhdd_4, то подключаешь к idesmuc тот же самый системный раздел на нужную, уже освободившуюся букву, потом опять в ss/9 меняешь букву системного диска.
---------- Post added at 10:21 ---------- Previous post was at 10:18 ----------
Более того, у меня пока нет даже возможности получить прямой доступ к портам, так как плата не доработана.
Спасибо, всё получилось.
Теперь всё работает через idesmuc, zhdd можно удалить.
Следующий этап - Chic на скорпионе с idesmuc.blk. Попробуем?
---------- Post added at 21:42 ---------- Previous post was at 21:40 ----------
Кстати, а в "менеджере дисков" по Cs/1 или CS/2 можно ли сделать вывод не драйвера "C: idesmuc", а имя раздела "C:System"?
---------- Post added at 22:01 ---------- Previous post was at 21:42 ----------
Мда.. Сделал по инструкции из каталога C:Chic!.txt
Получил ошибку 86 при попытке входа в каталог UTIL. Как её победить?