PDA

Просмотр полной версии : Вектор-06Ц: Контроллер HDD



Vadik
28.10.2008, 11:27
Где можно найти документацию по подключению HDD к Вектору и какие из ос приспособлены для HDD? Вроде всё посмотрел а про НDD ничего не нашёл.

b2m
28.10.2008, 11:42
Тут где-то проскакивала информация по портам Вектора.
Фактически, это то-же самое, что и спецификация ATA/IDE.


Описание портов контроллера жесткого диска

50H Регистр данных. Чтение(запись) данных в(из) буфер сектора контроллера
51H Запись: Write Precompensation register. Turn on write precompensation.
Чтение: Регистр ошибок. Содержит признаки последней ошибки.
╓7┬6┬5┬4┬3┬2┬1┬0╖
║ │ │0│ │0│ │ │ ║
╙╥┴╥┴─┴╥┴─┴╥┴╥┴╥╜ бит
║ ║ ║ ║ ║ ╚═ 0: адресный маркер данных не найден
║ ║ ║ ║ ╚═══ 1: ошибка на дорожке 0
║ ║ ║ ╚═════ 2: команда отвергнута
║ ║ ╚═════════ 4: ID сектора не найден
║ ╚═════════════ 6: ошибка ECC: некорректируемая ошибка данных
╚═══════════════ 7: плохой блок
52H Счетчик числа секторов для операции чтения/записи
53H Текущий/начальный номер логического сектора для чтения/записи
54H Цилиндр, старшие (биты 0-1 - это биты 8-9 10-битового номера цилиндра)
55H Цилиндр, младшие (биты 0-7 10-битового номера цилиндра)
56H Биты определяют устройство и головку для операции чтения/записи
57H Запись: регистр команды (См. Tech Ref о подробностях)
1xH = сброс на цилиндр 0 (x = step rate)
7xH = искать до цилиндра (x = step rate)
2xH = сектор чтения (x = retry and ECC-read)
3xH = сектор записи (x = retry and ECC-read)
50H = форматировать дорожку
4xH = чтение для верификации (x = retry)
90H = диагностика
91H = уст.параметры (число головок, секторов) для выбр.устр.
Чтение: регистр статуса
╓7┬6┬5┬4┬3┬2┬1┬0╖
║ │ │ │ │ │ │ │ ║
╙╥┴╥┴╥┴╥┴╥┴╥┴╥┴╥╜ бит
║ ║ ║ ║ ║ ║ ║ ╚═ 0: 1=предыдущая команда закончилась с ошибкой
║ ║ ║ ║ ║ ║ ╚═══ 1: уст. в 1 при обнаружении индексного отверстия
║ ║ ║ ║ ║ ╚═════ 2: данные исправлены. Была ошибка, но ECC исправил.
║ ║ ║ ║ ╚═══════ 3: запрос данных. Буфер ждет данных (занято)
║ ║ ║ ╚═════════ 4: поиск завершен
║ ║ ╚═══════════ 5: сбой записи
║ ╚═════════════ 6: устройство готово к операции (если бит 4=1)
╚═══════════════ 7: занято. 1=работает команда (другие биты неверны)
58H Регистр данных. Чтение(запись) данных в(из) буфер сектора контроллера
5fH Системный сброс (лучше не пользоваться, сходство с 57Н без обнуления
микросхем жесткого диска).


Добавлено через 4 минуты
В этой же теме есть и ДОС http://zx.pk.ru/showpost.php?p=158871&postcount=127

Vadik
28.10.2008, 22:24
По поводу HDD на Векторе, мне интересно как аппаратно реализованы порты 50Н и 58Н регистры данных, и как в них заносить информацию? Насколько я знаю что шина данных у НDD шестнадцатиразрядная ,а при записи и чтении в Hdd нужно приводить считывание или запись блоками по 512байт, на Векторе т.к. он восмиразрядный : например считать один блок, надо последовательно считывать байты из порта 50Н, и так 256 раз. Таким образом получается считывается младший байт слова данных.Вопрос - а можно не использовать старшую часть слова данных вообще т.е. не задействовать порт 58Н.

b2m
28.10.2008, 23:05
не использовать старшую часть слова данных вообще т.е. не задействовать порт 58Н
Нет, нельзя. Порт 58Н это просто буферный регистр (старшие 8 бит), и этому порту не соответствует ни один порт IDE (в смысле это часть порта данных). При чтении нужно считывать сначала 50Н, а потом 58Н, а записывать наоборот, сначала 58Н (байт по адресу+1), а потом 50Н.

Vadik
29.10.2008, 15:33
Получается что 50Н это порт обрачается прямо к HDD, а 58Н это какая то микросхемка,(регистр защёлка) наверно? Я правильно понял?

Tim0xA
29.10.2008, 15:46
Я спрашиваю потому что нет схемы подключения. Пытаюсь понять чтобы собрать схемку.
Тут я давал схему http://zx.pk.ru/showpost.php?p=157618&postcount=17

svofski
29.10.2008, 16:39
Добавил в Базис: http://sensi.org/~svo/scalar/ware/537/

Jons
23.03.2010, 13:16
есть у когонить разводки под ЛУТ для контроллера HDD?
собрал на макетке, провода до пола висят, не красиво

Jons
18.04.2010, 13:31
по переподключал кучу винтов:
+Seagate 203МБ
WD Caviar 21000 1083МБ
+Seagate ST31277A 1280МБ
Quantum 2100МБ
WD Caviar24300 4311МБ
+Hitachi DK239A-65 6400МБ(ноутбук)
Maxtor 8ГБ
+Toshiba 10ГБ (ноутбук)
+Seagate ST340016A 40ГБ
IBM MH17951 40ГБ
подключал и 80-ки и 120-ки, из всех заработали только те которые я + отметил, все винты рабочие кроме Toshiba 10ГБ (ноутбук)-у него сектора сыпятся, и собсна вопрос, отчего зависит читабельность винтов на этом и подобных контроллерах?
зы:контроллер по схемотехнике почти аналогичен NemoIde

ivagor
18.04.2010, 14:05
Jons, а как ты проверял? Заменил в векторе начальный загрузчик, заливал на винт образ HDD и пробовал грузить на вектор?

Jons
18.04.2010, 14:12
а как ты проверял?
при считывании по всем портам выдаёт FF, то есть какбудто ничего не подключено
загрузчик у меня стандартный, мне нечем перепрошивать=(

ivagor
18.04.2010, 14:29
Написал свою программку, читающую порты контроллера HDD?

Jons
18.04.2010, 14:45
это так набросок, только для чтения определенного сектора.
ORG 100
IN 56
ANI F0
OUT 56
CALL TEST
MVI A,01
OUT 52
CALL TEST
MVI A,01
OUT 53
CALL TEST
MVI A,0
OUT 54
CALL TEST
MVI A,0
OUT 55
CALL TEST
MVI A,20
OUT 57
CALL TEST
LXI H,1000
MVI B,0
CHTEN IN 50
MOV M,A
INX H
IN 58
MOV M,A
INX H
DCR B
JNZ CHTEN
RET
TEST IN 57
ANI 80
JNZ TEST
RET
почемуто немогу вложить файл в пост, требуется авторизация
зы: при чтении из порта 57h на нечитаемых винтах, выдает FFh, и при заходе в TEST комп подвисает, всё это делаю в Мониторе-отладчике.
ззы:мне видится две причины, разные серии микросхем, используемые мной в контроллере или не все линии ide-интерфейса используются

ivagor
18.04.2010, 18:02
Может в цикле TEST добавить счетчик и, если слишком долго в нем сидим, то выйти из цикла и прочитать регистр ошибок? Вобще-то регистр ошибок в любом случае неплохо читать, хотя бы чтобы убедиться, что на "нормальных" винтах в нем нормальные значения.
Еще можно для очень старых винтов попробовать альтернативный код команды 21h (хотя это вряд ли хоть как-то скажется).

---------- Post added at 20:02 ---------- Previous post was at 19:49 ----------

Еще можно попробовать более "жестко" задать значение для старшего регистра цилиндра. Например после IN 56h добавить ORI 0A0h (или 0E0h для LBA). Бит выбора устройства тоже можно попробовать задать принудительно.

Jons
18.04.2010, 19:26
опрос регистра ошибок у меня реализован в более полной версии процедур, я не про это, дело в том что на этом контроллере нечитаются(т.е. необнаруживаются) больше половины винтов, как сделать так чтобы они все читались? или это не возможно изза особенностей схемы контроллера?

ivagor
18.04.2010, 19:35
Если проблема в аппаратной части, то я пас.

dk_spb
23.01.2011, 20:02
Рискну продолжить тему.
Собрал я себе контроллер.
Есть три проблемы:
1) программы testhdd, testhdd2 при "поверхностном тесте портов" ругаются что "не работает порт IN 57h или индекс HDD". Дальше работают с HDD без проблем. Программа testhdd так не ругается. Это нормально?
2) с CF через ide переходник testhdd* при контрольной записи/проверки сектора ругаются ошибкой "мало данных". Хотя ни с верификацией секторов, ни с работой в mdos проблем нет.
3) Загрузчик "boots" v3.0 by TIMSoft почему-то грузит систему с hdd с адреса 0 (не пропускает первый квадратик). И она не работает. Пробовал пинудительно указывать sysgen'у адрес 100 - не помогает.

Что посоветуете?

---------- Post added at 20:02 ---------- Previous post was at 19:41 ----------

TIMSoft'у на заметку:
hdd_boot.bin 2Кб с картотеки (ты, видимо, с него брал процедуру загрузки с HDD) также криво грузит систему с FDD (не пропускает квадратик ;-)

Jons
28.01.2011, 09:36
при детальном изучении и исследовании винчестеров выяснил что Вектор на данном контроллере в принципе не сможет работать с винтами у которых RPM больше 4500, при значениях выше надо играться с линией IORDY (может я и не прав :) ), что касается CF то надо обратить внимание на её скоростные характеристики (может в этом проблема?) по третьему пункту, если ничего не помогает можно добавить в начале 256 нулей, записать такой файлик и попробовать загрузиться с ним

dk_spb
28.01.2011, 10:22
Jons, Автор загрузчика работает над проблемой.
Про RPM - у меня не работают именно тесты, работа с файлами - без проблем.

dk_spb
29.01.2011, 23:03
по третьему пункту, если ничего не помогает можно добавить в начале 256 нулей, записать такой файлик и попробовать загрузиться с ним
Не помогло.

dk_spb
30.01.2011, 14:26
при детальном изучении и исследовании винчестеров выяснил что Вектор на данном контроллере в принципе не сможет работать с винтами у которых RPM больше 4500, при значениях выше надо играться с линией IORDY (может я и не прав :) ),
Похоже Вы неправы. Мой Hitachi 2.5" 100Gb выражал классовую неприязнь к несвоевременной подаче сигнала -CS (37 нога IDE). После того как я ему принудительно дал туда "0" - работает.
Пока тестирую. Если у себя тоже протестируете - буду признателен.

---------- Post added at 14:26 ---------- Previous post was at 14:12 ----------

Да, еще можно ресет (1я нога IDE Отключить для теста)

---------- Post added at 14:26 ---------- Previous post was at 14:26 ----------

Да, еще можно ресет (1я нога IDE Отключить для теста)

dk_spb
30.01.2011, 17:14
В общем, коллеги, всё достаточно печально:
тесты testhdd никуда не годятся.
Во-первых они проверяют приход индекса, чего уже давно на железе либо не бывает, либо не поймать на векторе.
Во-вторых, ограничение по цилиндрам до 2000h (8192), не говоря уже о том что кол-во цилиндров они определяют перебором цилиндров с командой seek (70h), которая уже тоже не всеми винтами поддерживается.
В-третьих, при контрольном чтении записи получаем ошибку мало данных, хотя файлы пишет/читает в системе нормально.
Утилита delete у меня вызывает непонимание: на CF работает, на HDD Видно что отрабатывает, а потом зависает, при этом она делает всё через системные вызовы, так что внутрь ей не особо заглянешь.
Да и самое главное, похоже никому это не интересно, а мне без моральной поддержки время тратить скучно и жалко :-(

Jons
30.01.2011, 21:41
CS0 и CS1 насколько я понимаю это выбор контроллера и линии накоторых сидит нужный винт, я же говорил про линию IORDY, на Векторе к сожалению не могу запустить эти тесты, они работают только с МикроДОС, а у меня ЭД нету, я тестил своими тестами(можно сказать почти ручками :) ) в Мониторе отладчике, у Вашего 100ГБ винта какой показатель RPM? у меня только на 6ГБ и 10ГБ, у них у обоих RPM 4300, и они оба прекрасно работают на Векторе, ещё 2 Seagate по 1200МБ RPM4500, тоже прекрасно работают

dk_spb
30.01.2011, 22:07
У меня тоже все прекрасно работает (5400 RPM), кроме утилиты delete.
Она после зачистки диска виснет при работе с HDD. При работе c CF через переходник на IDE проблем с delete нет.
Понять что не нравится delete я не могу, так как там вся программа - пара-тройка вызовов 32h функции BDOS, которой отдается ссылка на буфер, где первый байт - команда. Что это за функция, какие ей команды отдавать можно - тайна великая есть.
В RDS, вроде бы, такой функции BDOS вообще нет.
Казалось бы ну его этот delete нафиг, но поймал багофичу: после E *.* получил NO FILES, но после записи около 10 маленьких файлов сказали что больше места нет (причем похоже в директории). После delete стало всё нормально.
Тесты testhdd вообще кривые. Кстати, вроде была версия MDOS без ЭД? Или мне приснилось?
С линией IOR Вы ничего путного не сделаете, хотя в БК&УКНЦ её подтормаживают контером. Тут я тоже так пробовал - результат нулевой, хотя это как раз понятно - в Векторе ЧТВВ и ЗПВВ по заднему фронту идут. У меня винт тоже давал сплошные FF, пока я с CS не справился.

dk_spb
30.01.2011, 22:07
У меня тоже все прекрасно работает (5400 RPM), кроме утилиты delete.
Она после зачистки диска виснет при работе с HDD. При работе c CF через переходник на IDE проблем с delete нет.
Понять что не нравится delete я не могу, так как там вся программа - пара-тройка вызовов 32h функции BDOS, которой отдается ссылка на буфер, где первый байт - команда. Что это за функция, какие ей команды отдавать можно - тайна великая есть.
В RDS, вроде бы, такой функции BDOS вообще нет.
Казалось бы ну его этот delete нафиг, но поймал багофичу: после E *.* получил NO FILES, но после записи около 10 маленьких файлов сказали что больше места нет (причем похоже в директории). После delete стало всё нормально.
Тесты testhdd вообще кривые. Кстати, вроде была версия MDOS без ЭД? Или мне приснилось?
С линией IOR Вы ничего путного не сделаете, хотя в БК&УКНЦ её подтормаживают контером. Тут я тоже так пробовал - результат нулевой, хотя это как раз понятно - в Векторе ЧТВВ и ЗПВВ по заднему фронту идут. У меня винт тоже давал сплошные FF, пока я с CS не справился.

Jons
30.01.2011, 22:25
У меня винт тоже давал сплошные FF, пока я с CS не справился


После того как я ему принудительно дал туда "0" - работает.
надо будет у себя тож попробовать, вот только как быть если на шлейфе 2 устройства?

Кстати, вроде была версия MDOS без ЭД? Или мне приснилось?
не приснилось :) но эта ОС не поддерживает винты, или это не обязательно?

dk_spb
30.01.2011, 22:44
надо будет у себя тож попробовать, вот только как быть если на шлейфе 2 устройства?
А у Вас есть хоть одна программа под Вектор, которая понимает ДВА hdd ?
Там, что характерно, и контроллер IDE не умеет с двумя работать....


не приснилось :) но эта ОС не поддерживает винты, или это не обязательно?
testhdd, testhdd2, testhdd3 от системы используют только вывод текста.
Поддержка HDD в системе им не нужна.

Jons
30.01.2011, 23:02
Там, что характерно, и контроллер IDE не умеет с двумя работать....
я цеплял два винта и оба нормально определялись, вторым устройством не обязательно должен быть винт, есть же ещё CDROM-ы[COLOR="Silver"]

dk_spb
30.01.2011, 23:07
Jons, Где определялись?!?!?! В Векторе?
Чем определяли?
Вы по схеме посмотрите, там СS заведен на АП6, то есть читать Вектор умеет только с одного IDE устройства. Есть схема контроллера с разведенными CS и CS1, но только софта-то нету.......

Jons
31.01.2011, 10:37
чего то я туплю, cs0 и cs1 это выбор магистрали, т.е. выбор контроллера если их 2, на Векторе он один, а то к какому устройству, на шлейфе, будет обращаться контроллер определяется битом 4 порта 56H

зы: при изучении винтов я пользовался двумя книгами и гуглем,
Программирование дисковых подсистем Автор: Владимир Кулаков
Интерфейсы устройств хранения. Гук

dk_spb
31.01.2011, 10:44
Jons, Ой, так Вы про сферического коня в вакууме.... ;-)
А я про Вектор и его понимание IDE.
Так Вектор умеет (если мы говорим о самой распространенной схеме контролера) только с одним HDD работать. Поэтому -CS0 вроде как можно смело землить.

b2m
31.01.2011, 11:11
чего то я туплю, cs0 и cs1 это выбор магистрали, т.е. выбор контроллера если их 2, на Векторе он один
Нет, насколько я понял, это выбор одного из чипов интерфейса внутри контроллера. К какому контроллеру обращаться, определяется диапазоном портов: первый контроллер 50h-5Fh, второй контроллер X0h-XFh, где X - выбирается по желанию человека с паяльником.


а то к какому устройству, на шлейфе, будет обращаться контроллер определяется битом 4 порта 56H
А вот это абсолютно верно. Я в эмуляторе так и сделал.

dk_spb
31.01.2011, 11:20
Нет, насколько я понял, это выбор одного из чипов интерфейса внутри контроллера. К какому контроллеру обращаться, определяется диапазоном портов: первый контроллер 50h-5Fh, второй контроллер X0h-XFh, где X - выбирается по желанию человека с паяльником.
А какой софт умеет со вторым набором портов работать?

---------- Post added at 11:20 ---------- Previous post was at 11:14 ----------

b2m, а Ваш эмулятор умеет Вектор с IDE?

b2m
31.01.2011, 11:27
К какому контроллеру обращаться, определяется диапазоном портов
Хотя, правильнее было бы сказать: к какой паре контроллеров. Контроллер-то имеется на каждом винте, но в зависимости от перемычки master/slave он работает чуть-чуть по разному - реагирует только на команды с определённым значением бита 4 порта 56h (в нашем случае).

---------- Post added at 13:27 ---------- Previous post was at 13:23 ----------


А какой софт умеет со вторым набором портов работать?
Пока, скорее всего, никакой :) Не было стандарта на второй контроллер.


b2m, а Ваш эмулятор умеет Вектор с IDE?
При наличии образа винчестера. В конфиге указан путь к файлу "Vector06c\vector.hdd". При желании можно добавить и второй контроллер на свободные порты :)

dk_spb
31.01.2011, 11:38
b2m, Спасибо!
То есть получается что в новейших разработках железа ;-)
сигналом -CS можно пренебречь, так как второй контроллер вряд ли кому-то вообще понадобится.
Тем более что второй контроллер, скорее всего, имеет смысл сажать на отдельный шлейф со своим CS.
А вот почему у меня тесты не работают как надо и DELETE не работает с HDD - непонятно :-(

b2m
31.01.2011, 12:15
сигналом -CS можно пренебречь, так как второй контроллер вряд ли кому-то вообще понадобится
Ещё раз - второй контроллер тут ни при чём. Сигнал -CS (или как он ещё выше назывался cs0) выбирает основной набор регистров контроллера, а сигнал -CS1 - расширенный. Однако расширенный набор регистров контроллера на Векторе не используется, поэтому на схеме -CS1 посажен на лог. 1. Насколько правильно сажать -CS на лог. 0 - я не знаю.

dk_spb
31.01.2011, 13:11
b2m, Речь шла о том, чтобы для тестов подать на CS0 нолик. Думаю что для тестов это если и не правильно, то вполне допустимо. ;-)
У меня в схеме на CS0 нолик подан не постоянно, а с адресного дешифатора.
То есть по оригинальной схеме при совпадении нужной комбинации на AA0-AA7 и наличии одного из ЧТВВ или ЗПВВ выдаем CS0. Но это получается для современных винтов поздно. Поэтому я выдаю CS0 сразу при совпадении нужной комбинации на AA0-AA7 (ЧТВВ и ЗПВВ приходят сильно позже адресов). Естественно, бывают ложные срабатывания, когда идёт обращение к похожим адресам ОЗУ, но зато работает.
Хотя тесты не пашут, что меня продолжает бспокоить. :-(

dk_spb
31.01.2011, 18:28
Так, теперь я понял почему контрольное чтение сектора выдает "мало данных".
Так и должно быть

---------- Post added at 18:28 ---------- Previous post was at 17:52 ----------

В общем получается что так всё и должно быть c тестами, только с подсчётом кол-ва цилиндров осталось разобраться.
Можно переходить к работе в пикаде.

KTSerg
12.09.2015, 18:05
Собрал контроллер HDD, подключил CF на 256МБ (оставшуюся от старого фотоаппарата)...
Как загрузчики грузят систему с HDD в упор понять не могу...
Смотрел процедуры загрузки из двух загрузчиков...
Вроде ничего сложного, но как они операционку в память грузят не понимаю...
Протестировал подпрограммки из загрузчиков SIDом, какие-то данные с карты читаются, но дальше тупик... Судя по коду, адрес куда загружать берётся прямо из считанных данных... странно это...

Инициализация HDD выдала ошибку.
Сравнил считываемые из первого сектора данные с образом HDD, чётные байты совпадают, не чётные отличаются... :(
Вот интересно как можно понять запись глючит или чтение...
Наверное придётся анализатор шины подключать...

Syntal
13.09.2015, 10:33
Тоже бьюсь с контроллером HDD последнее время - вопросов больше чем ответов.

Кучу винтов переробовал, проги testhdd частично отрабатывают, inithdd выдают ошибку. Удалось на CF 2Gb залить образ на 8 Мб под Windows98. Загрузчик by Timoha на 2 кб с винта грузит, но с 0-го адреса, а не 100-го и система не стартует.

KTSerg
13.09.2015, 11:02
Тоже бьюсь с контроллером HDD последнее время - вопросов больше чем ответов.
Кучу винтов переробовал, проги testhdd частично отрабатывают, inithdd выдают ошибку. Удалось на CF 2Gb залить образ на 8 Мб под Windows98. Загрузчик by Timoha на 2 кб с винта грузит, но с 0-го адреса, а не 100-го и система не стартует.
А я кажется разобрался чуток...
Проблема с записью/чтением не чётных байт была из-за того, что я не те регистры поставил... вместо ИР23 воткнул 74нс373 (по справочнику - выбросить его надо), а нужно было 74нс374. Пришлось доработку делать, сигнал записи в регистр инвертировать.
Сейчас заработало!!!
Тесты проходят, кроме индекса 57-го порта.
Инит отработал без ошибок.
Sysgen, операционку записал (я её sid-ом с флешки прочитал).
Сейчас нужно либо загрузчик перешивать, либо свой написать, ибо в "штатных загрузчиках" такое наворочено...
Кстати, начальный загрузчик считывает служебную область и берёт с неё адрес в который операционку загружать. Так что скорее всего криво образ HDD записан, можно подправить один байт служебной области и ось будет с первого квадратика грузиться а не с "нулевого".
Посмотри, что в образе с адреса 400h записано, там должно быть 00 01
(если я правильно посмотрел в дамп sid-а).

А как ты образ HDD на флешку записал?

KTSerg
13.09.2015, 11:15
Вот такой контроллер hdd у меня получился...
Не нашел под рукой "маму" на 40-пин, пришлось допаять штырьков и использовать 3 по 16-пин...

Syntal
13.09.2015, 13:15
Сейчас заработало!!!
Поздравляю, а схемой какой пользовался? Хотя она вроде одна имеется. Кроме инверсии clocka для ИР22 все остальное также?

Тесты проходят, кроме индекса 57-го порта.
Инит отработал без ошибок.
Sysgen, операционку записал (я её sid-ом с флешки прочитал).
У меня на приход индекса не ругался, правда я проверял с доисторическим винтом аж на 40 Мб, тесты поначалу вообще не ругаются, только при проверке перезаписи сектора выдают ошибку, ну и inithdd сразу вываливается с ошибкой.

Сейчас нужно либо загрузчик перешивать, либо свой написать, ибо в "штатных загрузчиках" такое наворочено...
Кстати, начальный загрузчик считывает служебную область и берёт с неё адрес в который операционку загружать. Так что скорее всего криво образ HDD записан, можно подправить один байт служебной области и ось будет с первого квадратика грузиться а не с "нулевого".
Посмотри, что в образе с адреса 400h записано, там должно быть 00 01
(если я правильно посмотрел в дамп sid-а).
Спасибо, это гляну, но только завтра скорее всего получится.

А как ты образ HDD на флешку записал?
В дистре старого эмулятора ve27a есть проги для работы с образами hdd. Прога hddgrab называется, с ее помощью записал на стареньком пентюшке образ на CF через такой же как у тебя переходник. Образ лежит на сайте эмулятора B2M

KTSerg
13.09.2015, 13:47
Поздравляю, а схемой какой пользовался? Хотя она вроде одна имеется. Кроме инверсии clocka для ИР22 все остальное также?

Да, больше ни каких доработок, только инверсия сигналов на 11-ые ноги ИР22. Правда я схитрил, чтобы сигнал сильно не запаздывал, я не инверторы в разрывы поставил, а два элемента 2ИЛИ-НЕ (ле1). На вход одного подал сигналы "ЧВВ" и "IOR", его выход на ИР22 вместо "IOR". На вход второго "ЗВВ" и "3", его выход на ИР22 вместо "3". Получилось, что сигналы инвертируются, но задний фронт приходит тогда, когда приходил бы родной (не инверсный).
Схема, которая в тхт-файле шла.


В дистре старого эмулятора ve27a есть проги для работы с образами hdd. Прога hddgrab называется, с ее помощью записал на стареньком пентюшке образ на CF через такой же как у тебя переходник. Образ лежит на сайте эмулятора B2M
Спасибо, гляну.

Кстати, пока я не перепрошил загрузчик Вектора, сделал отдельную загрузку ОСи с HDD, с помощью программы. Её можно запустить например из ЕЕПРОМ или ЛВС. Память она не чистит, запускается с адреса 100h. Полоса по левому краю, это длительность состояния "сброс" HDD - чем длиннее полоса, тем дольше HDD не отвечал после сброса. Моя CF не отвечает оооочень долго...
Попробовал запустить программку из под ОСи с КвазиДиска - тоже сработала.

KTSerg
20.09.2015, 21:47
Чойта запарился я с этим HDD на CF... :(
Почистил Delet-ом пару первых дисков, закинул на них утилиты, sysgen-ом ось записал... Решил ещё дисков почистить написал командный на несколько команд delete. Потом пробую перегрузиться, а с hdd не грузится, стартую с дискеты ось виснет на ошибке диска А (HDD). Перепробовал несколько разных операционок - все виснут... Запустил inithdd3, переписал служебную инфу, попробовал запускать разные ос-и, все перестали выдавать ошибку диска А. Т.е. Delete - затёр служебную инфу...
Кстати, под MDOS31HD записал пару первых дисков, проверил всё нормально, запускаю MDOS30HD - инфа есть только на первом диске, второй пустой.
Запускаю снова MDOS31HD - инфа на втором снова есть...
Запускаю FDIR *.* он начинает мне показывать один и тот-же каталог на всех дисках, даже тех, на которые я ещё ничего не записывал, останавливаю, запускаю снова - теперь нормально, показывает только списки фалов первых двух дисков...

KTSerg
22.09.2015, 09:01
...


... можно подправить один байт служебной области и ось будет с первого квадратика грузиться а не с "нулевого".
Посмотри, что в образе с адреса 400h записано, там должно быть 00 01
Спасибо, это гляну, но только завтра скорее всего получится.

Нашел у себя в архиве текстовый файл с описанием структуры служебной области дискеты, там действительно написано, что первое слово - это адрес начала загрузки, второе - адрес, куда передать управление после окончания загрузки (это не используется загрузчиком). Так что по идее служебная зона должна начинаться байтами 00 01 00 01. В образе HDD с адреса 400h.
Будет время поэеспериментирую с чтением/записью, может получится поправить эту область с самого Вектора, без перезаливки образа на РС...
Хотя проще думаю sysgen-ом ещё раз систему переписать...
sysgen os.com A:100 (если считать, что A - это дискета на HDD)

KTSerg
23.09.2015, 21:25
Разобрался с утилитой Delete.com.
Ничего в ней нет супер страшного...
Простое "форматирование" (запись Е5 во все сектора) "дискеты".
Задаёт номер дискеты для диска А, а потом в цикле перебирает номера блоков (128байт) с 1го по 40 (получается 5КБайт) и дорожки с 8ой по 164ю (82 дорожки 2е стороны), давая команду "запись буфера на диск".
Вот и всё. Почему зависали при работе с винтами, это вопрос... не в утилите дело, может OS не правильно пересчитывала логические сектора в физические... и требовала от винта то чего у него нет... (номер головы или сектора)...
Кстати у утилиты по созданию образа hdd (creathdd.exe) есть "фишка", произведение количества секторов и головок не должно превышать 127 (или 128 точно не разобрался). Если превысить это значение образ не создаётся (получается файл размером 512 байт).
Т.е. образ с 10ю секторами 12ю головками создать можно, а 10 сект. 13 головок - уже нельзя.
Я к тому, что может в БИОСе HDD-шной оси то-же есть подобные казусы...

Syntal
24.09.2015, 12:53
Так что по идее служебная зона должна начинаться байтами 00 01 00 01. В образе HDD с адреса 400h.
В том образе все так и есть - 00 01 00 01 с адреса 400h. Боюсь, что у меня косяк в железе, но найти не могу, вроде все перепроверил.

Нет ли возможности написать процедурку, которая бы считывала дамп одного сектора в память? Интерфейса никакого не нужно, я бы отладчиком глянул, что вообще читается. Желательно правда иметь возможность как-то задавать значение читаемого сектора (через инициализацию регистров?).

Сам начал дизассемблировать загрузчик, чтобы написать подобное, но что-то туго идет.

KTSerg
24.09.2015, 17:13
...
Нет ли возможности написать процедурку, которая бы считывала дамп одного сектора в память? Интерфейса никакого не нужно, я бы отладчиком глянул, что вообще читается. Желательно правда иметь возможность как-то задавать значение читаемого сектора (через инициализацию регистров?).
...
А тот загрузчик, который я тут выложил, то-же не правильно считывает?
Его можно из под любой ОСи запустить или загузить. Правда его отладчиком не посмотреть, он как исходный загрузчик, использует облати Е000 ...
а сам работает с адреса F000...
Могу дать исходник, адреса поменять и отладчиком смотреть...

KTSerg
26.09.2015, 08:39
Выложу исходник загрузчика ОСи с HDD.
В архиве оригинальный исходник рабочего загрузчика, и модифицированный, который работает с адреса 100h, служебный сектор грузит в 1000h, саму ОСь грузит в 2000h.
Поскольку загруженное запускать нельзя, после загрузки мигает рус/лат-ом (как и при обнаружении ошибок).
to Syntal.
Для проверки корректности загружаемых данных имеет смысл перед началом загрузки заполнить область с 1000 по 3000 (хотя бы) кодами например 55h, тогда будет видно, что считывается с HDD. Может действительно читаются 00, поэтому и загрузка начинается с "нулевого" адреса а не с "сотого"...

Syntal
28.09.2015, 12:53
Выложу исходник загрузчика ОСи с HDD.
Спасибо! Вроде разобрался, удалось стартануть ось с винта из загрузчика, но только после того как заземлил CS (37 н) и подтянул к питанию RES (1 н). У тебя эти ноги подключены в соответствии со схемой?

Времени особо не было, нужно еще проверить как себя поведет в работе с реальным винтом и потестить разбивку/запись/работу в ОС.

KTSerg
28.09.2015, 15:31
Спасибо! Вроде разобрался, удалось стартануть ось с винта из загрузчика, но только после того как заземлил CS (37 н) и подтянул к питанию RES (1 н). У тебя эти ноги подключены в соответствии со схемой?

Времени особо не было, нужно еще проверить как себя поведет в работе с реальным винтом и потестить разбивку/запись/работу в ОС.

У меня они подключены как в схеме. Подозреваю, что обычный загрузчик CF карту будет игнорировать, и считать что нет HDD... Моя по крайней мере очень долго не отвечает после команды "Ресет". А в загрузчике циклов ожидания очень мало. Уже не помню, возможно если "заставить" грузиться с HDD F-кнопками, то он и дождётся, но автоматом навряд-ли.

То-же буду экспериментировать с чтением/записью, т.к. утилита delete странно работает... разобрал её "по полочкам", буду модифицировать и смотреть на результаты...

Syntal
28.09.2015, 16:30
Подозреваю, что обычный загрузчик CF карту будет игнорировать, и считать что нет HDD... Моя по крайней мере очень долго не отвечает после команды "Ресет".
У меня так было - оторви RESET и будет мгновенно отвечать.

KTSerg
28.09.2015, 17:17
У меня так было - оторви RESET и будет мгновенно отвечать.
:)
А тот загрузчик, что я выкладывал, у тебя, длинную полосу по левому краю рисовал? Сейчас ясно, что "не рисует" т.к. ресета нет.
Я бы на Ресет кнопку припаял, или на крайняк RC-цепочку для ресета по включению питания.
Осталось не ясно, почему с "нулевого" адреса грузил...

KTSerg
28.09.2015, 20:36
Чуток поигрался с форматированием HDD на эмуле ve27a (он на моём компе не тормозит).
Обнаружилась некоторая "фишка" записи на HDD. Пока не понял, особенность это эмуля или БИОСа.
Пользователь из своей программы может писать на HDD через функцию БИОСа только блоками по 128 байт, а запись на HDD происходит сектора целиком по 1КБ (8 х 128).
Т.е. если программа записала не 8 блоков (по 128) а только 1, то остальные 7 на HDD то-же будут записаны только туда попадёт "мусор" буфера обмена.
Чем это чревато... да тем, что если производится например корректиравка каталога диска, то нужно считывать обязательно 8 блоков по 128 байт (весь сектор), и записывать его весь, с начала и до конца (для уверенности).
Хотя можно наверное и извращаться, типа считывать 8 блоков (сектор), первый блок модифицировать и только его записывать, надеясь, что остальные прицепом запишутся...
Обратил внимание на эту "фишку" из-за счетчика блоков на дорожке в утилите delete.com.
В утилите перебор номеров блоков происходит с 1, после записи счетчик увеличивается, и его значение проверяется на равенство максимуму - 28h (это 40d)... если равно, переход к форматированию следующей дорожки...
НО при счетчике 28h - записи блока не происходит, а блоков на дорожке 40 штук... Хотя программа записывает только с 1 по 39тый дорожка форматируется полностью (по крайней мере на эмуле, CF пока не терзал).
Так что нужно подробно разбираться... пишет ли БИОС весь сектор при записи каждого блока, или следит за границами сектора, когда происходит обращение к другому сектору - содержимое текущего записывается на диск.
Если в этом кто-то уже разбирался, объясните в чем я ошибаюсь, или чего я не понял...
Кстати для общей эрудиции, параметры для функции БИОСа 32h, регистровая пара DE - содержит начальный адрес буфера дополнительных параметров.
В буфере доп. параметров сначала идёт байт команды, за ним байты параметров.
например:
0Ch A4h 02h - установка буфера обмена (чтения/записи на диск) на адрес 02A4h
0Ah 08h - установка номера текущей дорожки 08h на активном диске
0Bh 01h - установка номера текущего блока (128байт) на дорожке, для чтения/записи
0Dh - чтение текущего блока (128байт) текущей дорожки в буфер обмена.
0Eh - запись буфера обмена (128байт) в текущий блок на диске.
09h 00h - выбор диска 00h - диск A: другие значения параметра 01h-B: 02h-C: 03h-D:.

Syntal
29.09.2015, 10:29
А тот загрузчик, что я выкладывал, у тебя, длинную полосу по левому краю рисовал?
Рисовал, покуда была стандартная схема.

Сейчас ясно, что "не рисует" т.к. ресета нет.
Я бы на Ресет кнопку припаял, или на крайняк RC-цепочку для ресета по включению питания.
Мне кажется, если использовать с современными CF, то все это уже не нужно. Проверю со старым IDE на 40 Мб, если будет пахать, то себе оставлю как есть. Ось из загрузчика стартует, мне особо больше ничего не надо.

Осталось не ясно, почему с "нулевого" адреса грузил...
Там была запущенная ситуация: изначально Combodevice не хотел как надо с IDE работать. Я потыкался, но глюк не отловил, припаял для проверки вариант на дискретах, чтобы иметь с чем сравнивать. Все провода перепаял на реализацию на дискретах, но забыл, что у меня в ПЛИС на шине данных остались болтаться "две ИР23" и вся сопутствующая обвязка, которая и конфликтовала. В результате уже после прошивки образа на CF ось не загрузилась, я потом всякими утилитами inithdd скорее всего еще больше побил загрузочный сектор. Когда отладчиком смотрел дамп считываемых данных по всем нечетным адресам нули читались, так что загрузчик правильно отрабатывал.

KTSerg
09.10.2015, 09:59
Копаю утилиту delete, интересно, что ОСь не сообщает результат выбора дискеты на HDD в виде значения регистра. Т.е. если выбрал для форматирования не существующую дискету, то на экран сообщение будет а в регистрах на выходе из функции выбора это не отображается. Интересно, какая дискета будет "форматироваться" если выбрана не существующая... Поскольку сама утилита это отловить не может и будет продолжать что-то форматировать...

Дмитрий2012
05.03.2016, 10:40
А как ты образ HDD на флешку записал?

В дистре старого эмулятора ve27a есть проги для работы с образами hdd. Прога hddgrab называется, с ее помощью записал на стареньком пентюшке образ на CF через такой же как у тебя переходник. Образ лежит на сайте эмулятора B2M
Существует ли еще какой-нибудь способ записи образа HDD ( http://bashkiria-2m.narod.ru/files/disk/vector_hdd.rar ) на Compact флешку не используя прогу hddgrab? есть доступ только к Windows 7.

KTSerg
05.03.2016, 16:56
Я думал о записи образа на CF с РСшки...
Теоретически, структура образа довольно проста, можно было-бы попробовать создать файл и записать его в FATе (он будет расположен в области первой дискеты)...
После записи образа на CF, её останется только "инициализировать" на Векторе, отформатировать первую дискету, накатить ОСь на системные дорожки, и образ должен быть вполне работоспособным...
Но это только размышления, нужно точно знать распределение инфы по адресному пространству CF-карты как для РС так и для образа Вектора... Что-то я уже рассматривал, но до практической реализации дело не дошло... :(

vazman
20.03.2016, 13:53
Пытаюсь оживить хдд с комбодевайсом. Изначально с помощью hddgrab скопировал образ на CF 32 Mb(видимо, как то криво, причём попутно грохнув каким то образом основную винду :) ) - Вектор с неё грузиться, но потом выдаёт ошибку диска а (а диск а-это должна быть дискета на хдд)
Если загрузить ось, понимающую хдд, с дискеты - то то же самое. при выборе 1-й дискеты - ошибка и виснет.
Т.Е., когда вставлена эта флеш - запустить дос, поддерживающий хдд невозможно

Эту флешку пока не трогаю. эксперементирую с такой же другой. так вот. там на диске 1 (и на остальных) d показывает какие-то кракозябры.
попытки INITHDD - ошибка. INITHDD2 подсказывает параметры 20H секторов, 4 головки и 1E9H цилиндров. при этом пишет доступный объём 1E H (30D).. (флешка на 32мб)
потом при попытке инициализации пишет - ошибка сравнения

delete 1 что то долго делает.. но ничего не меняется
отсюда вопросы.
1 карточка как - то должна быть предварительно отформатирована? Как?
2 какие параметры указывать inithdd? Я правильно понимаю - это он размечает хдд, создаёт и записывает всякие служебные области?

KTSerg
20.03.2016, 14:38
Я инитил карту с квазидиска.
Записал всё необходимое на квазидиск. Стартовая ОСь работающая только с квазидиском.
inithdd - вроде только на превом секторе карточки записывает параметры разбивки на головки/дорожки.
Потом я чистил каждую дискету отдельно утилитой delete.
Но сначала запускал тесты, только не помню, что это дало, вроде проверяется работоспособность схемы..

vazman
20.03.2016, 16:33
Ну вот не хочет инитить. Пишет - ошибка. Какрта как должна быть отформатирована?
Поскольку вектор с карты грузит ос (при нажатии F2+F3 при перезагрузке) - прихожу к выводу, что сама схема то рабочая.. Да и чему бы там не работать, всё внутри плис, а остальное работает(квазидиск и Fdd)

- - - Добавлено - - -


nithdd - вроде только на превом секторе карточки записывает параметры разбивки на головки/дорожки.
А у Вас inithdd сам параметры эти определял? Правильно?

KTSerg
20.03.2016, 17:02
Ну вот не хочет инитить. Пишет - ошибка. Какрта как должна быть отформатирована?
Поскольку вектор с карты грузит ос (при нажатии F2+F3 при перезагрузке) - прихожу к выводу, что сама схема то рабочая.. Да и чему бы там не работать, всё внутри плис, а остальное работает(квазидиск и Fdd)
...
Стоп, если ОСь уже грузится загрузчиком, значит карта уже инициирована. Т.к. Загрузчик считывает данные инициализации, и только если они правильны, ОСь загрузится.
Дальше она (каждая дискета) форматируется утилитой delete.

vazman
20.03.2016, 17:43
ось то грузится. но с этой картой выдает ошибку и зависает. до delete дело не доходит.

- - - Добавлено - - -

а если грузить ос без поддержки хдд (а с этой картой только такие грузятся) - то не работает delete (она первым делом даёт команду 9 а:1)

- - - Добавлено - - -

:) попробовал записать ещё один образ хддграбом.. чтобы не рисковать своими винтами - записал всё на флешку и поотключал винты
при записи получил рантайм еррор - неудивительно, ведь писал на флешку ту же, с которой и читал :)
С этой флешкой примерно всё так же, как и с первой. но с первой ось даже запускалась. с это нет. при загрузке с F2+F3 - заполянет прямоугольники, мигает рус латом, но при старте мгновенно виснет. Если грузиться с дискеты с поддержкой хдд - то как с первой - после запуска ошибка диска а: и зависон

- - - Добавлено - - -

блин. уже не знаю.. идти в подвал - откапывать реальный винт..

KTSerg
20.03.2016, 17:58
Я заранее не записывал на CF-ку ничего. Просто подключил и начал тестировать.
Тесты проходят? ошибка на CF-карте только в индексе (вроде), остальное должно быть без ошибок.
Когда стартует ОСь (ХДДшная) удерживанием УС - квазидиск форматируется?

vazman
20.03.2016, 19:40
тест хдд не работает порт ин 57 или индексный маркер хдд
не работает порт 56 или хдд включён не как нужно

тестхдд2 - опять не работает ин57 или...
нет ошибок внутренней диагностики
внутренние параметры хдд - вроде, правильно
ное чтение сектора - мало данных

KTSerg
20.03.2016, 20:54
Про ошибку индекса тут обсуждалось, что для CF-карт так и должно быть. Про мало данных, то-же нормально...
А вот ошибка порта 56, что-то не помню, нужно искать причину ошибки.
Тут говорили, что приходилось ресет и CS отключать от схемы и подавать на них постоянные лог. уровни. Это пробовали?

Syntal
21.03.2016, 09:36
блин. уже не знаю.. идти в подвал - откапывать реальный винт..
Смотрю я на все эти мытарства - все один к одному тоже, что у меня было. С CompactFlash как-то с самого начала не пошло. Я надыбал старые винты, один вообще просто кошерный на 40 Мбайт. Мучался и так и эдак, что-то в ПЛИСе менял, потом вообще как в оригинале на дискретах спаял схему, RESET и CF по-разному подключал. Кажется добился, что на 650 Мбайтном винте стартовала ОС, но какие-то другие проблемы имелись.

Имхо все упирается в программную реализацию работы с винтом, нужен человек, который мог бы софт поковырять. Изучить работу загрузчика, посмотреть что ожидает увидеть софт, что отдает железо. У меня к сожалению к софту душа не лежит, пытался найти доку по работе с IDE для PC, мало чего смог найти, какие-то основные команды и все, по железной части вообще ничего толкового.

KTSerg
21.03.2016, 18:10
...
Изучить работу загрузчика, посмотреть что ожидает увидеть софт, что отдает железо. ...
Ничего там сверх-естественного, запись регистров и чтение их состояния, проверка флагов регистров... Схема подключения HDD (из текстового файла) вполне обеспечивает данный режим. Видел правда в и-нете 8-битный протокол, подключение значительно проще. Но видимо когда подключение HDD к Вектору разрабатывалось о нём ещё в доступе инфы не было.

vazman
21.03.2016, 20:14
подключил реальный ХДД тестхдд2:
поверхностный тест портов ок
внутренняя диагностика хдд ок
вычисление параметров хдд - прошло неправильно. вычислил 31(D) сектор (на самом деле 52)
головок 7 (на самом деле - 16(D)
цилинров 263 (d) - на самом деле - 1002
ввел правильные параметры - доступный объём 407 Мб - вроде, правильно.
Верификация секторов - быстрая - ошибка.

инитхдд - неправильно определяет параметры.Инициализация ХДД - o{ibka
нинтхдд2 - параметры определил практически правильно. (Ошибся на один сектор и на примерно 800 цилинров :)))
ввёл правильные значения.
proizwesti inicializaci` HDD (Y/N)Y
o[ibka

При вычилении параметров хдд слашно, что винт головки двигает.

- - - Добавлено - - -


Тут говорили, что приходилось ресет и CS отключать от схемы и подавать на них постоянные лог. уровни. Это пробовали?
Жаль платку резать.. Если бы были исходники для плисины.. то не пришлось бы :) Попозже попробую отрезать CS и заземлить. а, если не поможет - отрезать и ресет

KTSerg
21.03.2016, 21:48
На сколько я помню алгоритм тестов, они перебирают значения в регистрах секторов/головок/дорожек, и смотрят состояния флагов, типа нашёл/не нашёл. Если он сказал, что 31 сектор, значит контроллер сообщил, что сектор 32 не найден, и т.д.
А если для эксперимента попробовать оставить те параметры, которые он вычислил?
В крайнем случае думаю, что только объём диска будет меньше... а вдруг...
Я реальный винт не подключал, самому не попробовать.
А дорожки резать конечно не стоит, если бы просто проводки отпаять/перепаять имело бы смысл...

vazman
22.03.2016, 21:07
Всё-таки не пожалел плату - посадил CS на вечный 0. Ничего не изменилось. Вечером попробую ресет

- - - Добавлено - - -

Отрезал сигнал ресет. Вроде, заработало.
Только немного всё-таки странно. Система встала криво.. грузится - потом вместо нормальной таблички выводит мусор.. но в конце приглашение и работает, вроде. Встала так со второго сисгена. после первого - грузилась и зависала.
Тесты хдд тоже не очень то проходит.. как и описывалось здесь ранее...
Ну главное - инитхдд сработал и теперь можно пользоваться виртуальными дискетками на хдд
делете тоже, вроде, сработал

- - - Добавлено - - -

Да, всё это на CF. Живой хдд сегодня не подключал
Подключил железный хдд.. Он тоже инитнулся, дискета почистилась делетем и сисген поставил ос. С него грузится нормально

KTSerg
22.03.2016, 21:16
Про Ресет с CF-картой я писал раньше, у моей CFки он (Ресет) вешает карту на ооочень долго, и штатный загрузчик Вектора считал, что ХДД отсутствует, и соответственно не грузил ОСь.
Можно попробовать загрузить ОСь с CF-карты той программкой которую я выкладывал, она рисует длительность ожидания после Ресета (когда он подключен к схеме).

vazman
22.03.2016, 21:39
так с ресетом не работал и железный ХДД - это раз
второе - с криво сделаного образа на cf однако, система грузилась - это было до отрезания ресета и принудительного 0 на CS
Причём грузилась и штатным загрузчиком, и Вашим.
Но не отрабатывался инит . Вывод - система весьма глюкава.. Даже сейчас, когда, вроде, всё более-менее работает, тесты хдд выдают ошибки порта 57 и 56

и поставить систему нормально на CF так и не смог. несколько раз переставлял.. и либо виснет при загрузке.. либо загружается, но табличку правильно начальную не оприсовывает. но работает :) На железный встала нормально, но пользоваться им не очень удобно

KTSerg
23.03.2016, 06:22
Нда, такая устойчивая "не стабильность" в работе... и с CF, и с реальным ХДД...
Подозрения только два. Первое это не достаточная нагрузочная способность входов/выходов контроллера. Но с совершенно разными устройствами, одинаковые симптомы, значит это маловероятно.
Второе это не совпадение временных характеристик работы контроллера и устройства. Ну типа контроллер читает/пишет, выставляет/забирает данные - раньше или позже, чем устройство (карта/ХДД). Выяснить это можно наверное только осциллографом или анализатором шины, сравнивая уровни на шине данных с импульсами чтение и запись.
Если исключить вероятность, что длительность импульсов чтения/записи слишком короткая, то других причин сбоев, в голову не приходит...

Dennion
11.06.2018, 22:56
Может кто добил подключение к hdd и скинет свои наработки образа диска С в формате img? Подключаю через комбодевайс. Заранее спасибо. Как-то умерла тема, уверен что многие пробовали.

KTSerg
13.06.2018, 17:30
Теоретически возможен альтернативный подход при записи образа на HDD Вектора.
Поскольку уже появились наработки чтения программ с SD-карт в Вектор. То можно подумать о перезаписи образа HDD с SD-карты на CF-карту самим Вектором. Такая перезапись конечно займёт какое-то время, но перспектива получения готового к использованию "HDD" в виде CF с инфой, возможно компенсирует некоторые неудобства...

Dennion
13.06.2018, 20:27
А просто переходничек с SD на CF - IDE не сработает? Образ можно снять/поставить через утилитку dd за пару минуток 1 к 1.

KTSerg
14.06.2018, 06:27
А просто переходничек с SD на CF - IDE не сработает? Образ можно снять/поставить через утилитку dd за пару минуток 1 к 1.
Чойто не сообразил, если утилитой dd можно за пару минут залить в CF чё угодно, то зачем переходник с SD на CF ?
Честно говоря, утилитой dd пользовался последний раз наверное в 90-ых, уже и не помню её возможностей...

Dennion
14.06.2018, 10:32
dd if=Откуда of=Куда, на linux/mac примерно так sudo if=/dev/disk4 of=hdd.img Есть и для винды такая же портированная.

KTSerg
14.06.2018, 10:44
dd if=Откуда of=Куда, на linux/mac примерно так sudo if=/dev/disk4 of=hdd.img Есть и для винды такая же портированная.
Вроде понял.
Если речь о копировании образа с одного носителя на другой, то это не тот случай.
Я говорил о том, что образ HDD Вектора создаётся на компе в виде файла, всё что нужно (разметка, запись на него инфы), делается в эмуляторе Вектора, записывается на SD-карту (в виде файла). Подключаем к Вектору контроллер HDD (с CF-картой), карт-ридер с SD, и "форматируем" CF, используя файл образа HDD с SD-карты.
Если утилита dd может записать на CF образ, подготовленный в виде файла, то конечно, это можно сделать и без Вектора.

Improver
14.06.2018, 10:58
Если утилита dd может записать на CF образ, подготовленный в виде файла, то конечно, это можно сделать и без Вектора.Если в файле образа есть только данные с содержимым секторов диска, сплошным потоком начиная с первого (без какой-либо дополнительной служебной информации), то dd справится с этим без проблем...

Dennion
15.06.2018, 00:45
dd чудо утилита, проверена на ПК-8000 и ВКашках. Все делает на ура :)

KTSerg
29.07.2018, 09:29
Хотел попробовать записать образ HDD на CF-карту с помощью какого нибудь Partition-меджика...
Оказалось, что на моём переходнике CF-IDE разъём "мама". Пришлось подключать переходник непосредственно к разъёму материнки, но комп (старенький IP4) не переваривает такой наглости и BIOS намертво вешается на определении дисков... Так и не получилось даже стартонуть с подключенным переходником. :(
И слэйв/мастер переключал и в разные разъёмы IDE. Есть прогресс если ещё по SATA подключить CD-ROM, но винда не грузится, постоянный ребут...

ivagor
29.07.2018, 09:49
Есть прогресс если ещё по SATA подключить CD-ROM, но винда не грузится, постоянный ребут
А если попробовать с CD загрузить какой-нибудь linux?

KTSerg
29.07.2018, 10:15
А если попробовать с CD загрузить какой-нибудь linux?
Я самостоятельно не смогу подготовить загрузочный диск linux.
К огромному сожалению не нашел возможности взяться за его изучение. :(

svofski
29.07.2018, 10:24
KTSerg, его для этого не нужно изучать.
http://help.ubuntu.ru/manual/загрузка_с_livecd
Достаточно записать образ LiveCD диска и загрузиться с него.

- - - Добавлено - - -

Если проц старый, может быть понадобится билд для i386, можно взять более старый релиз: https://mirror.yandex.ru/ubuntu-releases/16.04/

Dennion
29.07.2018, 10:59
Хотел попробовать записать образ HDD на CF-карту с помощью какого нибудь Partition-меджика...
Оказалось, что на моём переходнике CF-IDE разъём "мама". Пришлось подключать переходник непосредственно к разъёму материнки, но комп (старенький IP4) не переваривает такой наглости и BIOS намертво вешается на определении дисков... Так и не получилось даже стартонуть с подключенным переходником. :(
И слэйв/мастер переключал и в разные разъёмы IDE. Есть прогресс если ещё по SATA подключить CD-ROM, но винда не грузится, постоянный ребут...
Откуда образ и что на нем, можете поделиться?

KTSerg
29.07.2018, 11:13
Откуда образ и что на нем, можете поделиться?
Для эксперимента любой из папки эмулятора VE27A.
Для начала скачать в образ с CF-карты, посмотреть, что я там на экспериментировал, и как это выглядит, а потом попробовать закинуть туда, чего-нибудь работающее в эмуляторе.

Зреет идея утилиты, с помощью которой можно на РС накидать образов FDD, и она из этих образов склеит образ HDD.
Но нужно сначала попробовать относительно не сложно читать/писать CF-карту на РС, не доставая для этого 486-ой из кладовки...

Dennion
29.07.2018, 11:24
Для эксперимента любой из папки эмулятора VE27A.
Для начала скачать в образ с CF-карты, посмотреть, что я там на экспериментировал, и как это выглядит, а потом попробовать закинуть туда, чего-нибудь работающее в эмуляторе.

Зреет идея утилиты, с помощью которой можно на РС накидать образов FDD, и она из этих образов склеит образ HDD.
Но нужно сначала попробовать относительно не сложно читать/писать CF-карту на РС, не доставая для этого 486-ой из кладовки...
Идея супер. Я подключаю CF через универсальный usb картридером копеечным, работает запись стабильно. Usb на винде хорошо работаеи через dd там есть версия для винды и инструкция как определить путь до диска на ней.

svofski
29.07.2018, 11:38
Но нужно сначала попробовать относительно не сложно читать/писать CF-карту на РС, не доставая для этого 486-ой из кладовки...
У меня есть копеечный USB-кардридер Transcend, который принимает все возможные виды карт. Под виндой есть утилиты, которые сырые образы заливают на такие USB-читалки в том числе. По-моему это проще, чем доставать 486 из кладовки (хотя романтика кладовочного 486 манит, я понимаю). Утилиты, которые я помню, что точно работают: rawrite32 и https://etcher.io/ (последняя выглядит так модно, что боюсь, что не запустится на XP :)

KTSerg
29.07.2018, 13:05
... Утилиты, которые я помню, что точно работают: rawrite32 и https://etcher.io/ (последняя выглядит так модно, что боюсь, что не запустится на XP :)
Скачал вплоть до 1.1.2 все требуют минимум Вин7.

svofski
29.07.2018, 15:00
Ну я так и предполагал. Но rawrite все равно есть и она точно работает на XP. Было что-то еще, но я не вспомню так сходу название. Как правило руководства об установке Линуксов упоминают способы записи образов линукса на USB-носители. У нас цели другие, но методы можно позаимствовать.

KTSerg
29.07.2018, 16:40
Вспомнил, что уже пользовался RAWCopy. Откопал прогу HDDRawCopy(чего-то там).
Прога работает, читает-пишет CF-карту через USB-кард ридер.
Слил с CF-ки свои эксперименты на реале, посмотрел структуру, в принципе совпадает с тем, что создаёт "creathdd".
Склеил вручную 16 образов FDD, проверил на эмуляторе ve27a - образ рабочий.
Залил его на CF-карту... а дискеты то чистые... по команде d пишет "not found"...
В результате оказалось, что образ заливаемый на CF-карту должен иметь по адресу 80h (описание головок, секторов, дорожек ...) данные характерные для данной CF-карты, а не выбранные при создании образа.

ivagor
29.07.2018, 16:59
Правда под ОСью FPH511 ничего запустить не смог
А в emu с этого образа эти программы под FPH511 запускаются?
Сам я пробовал в emu запускать и cp/m-овские программки и игрушку rom, все работало (и под FPH511 и под более ранним досом).

KTSerg
29.07.2018, 17:07
Так и есть, была ошибка в склеивании образа, сейчас проги из под FPH511 запускаются.

Проверил ещё раз: в образе HDD, по адресу 80h выставлял разные данные (считанные с реальной CF-карты и созданные прогой "creathdd". В результате, в эмуляторе ve27a образ воспринимается в обоих вариантах, диски переключаются, каталоги отображаются, программы с разных дисков запускаются.
А вот эти образы переписанные на CF-карту, на реале, работают только если по адресу 80h проставлены "родные" для этой карты данные.

Так что с автоматической генерацией образов будет проблеммс... нужно предусмотреть считывание с карты параметров, и запись их в создаваемый образ...

Ещё, для размещения в образе HDD, подходят только образы дискет размером 820КБ (839680 Байт). Наткнулся на образы дискет размером 830КБ (849920 Байт) - от них кусок нужно будет откусывать...

ivagor
29.07.2018, 18:19
подходят только образы дискет размером 820КБ (839680 Байт)
А стандартные 80 дорожечные (800 Кб, 819200 байт)?

dbk
29.07.2018, 18:34
Опять же извиняюсь, что влажу, но для создания образов дисков стандартной утилитой от os/2 xdfcopy воспользоваться пробовали? Приложил в аттаче 65870

KTSerg
29.07.2018, 18:49
А стандартные 80 дорожечные (800 Кб, 819200 байт)?
Нужно будет добавить :)

Принцип такой.
1. Берём бут. Он занимает адреса 0h...3FFh
2. Дописываем к нему первый образ FDD целиком. Он должен занять адреса 400h...CE7FFh.
Если мало - пописать E5h, если много - обрезать.
Для проверки: директорий первой дискеты должен начинаться с адреса A400h, а данные с адреса B400h.
3. От образа второй (и последующих) дискет отрезаем только полезную инфу с адреса A000h и до конца.
Получается все последующие дискеты начинаются сразу с директория.
Длина получаемых (обрезанных) образов должна составлять 785КБ (803840 Байт).
4. Дописываем к создаваемому образу HDD, вторую дискету.
Для проверки: директорий начинается с адреса CE800h, данные CF800h, конец дискеты 192BFFh.
...
Третья дискета начинается с 192C00h.
Четвёртая - 257000h.
И т.д.

Останется, только поправить инфу с адреса 80h.

Честно сказать пока не выяснил, важно ли, что образ HDD создаваемый программой "creathdd" длиннее полезной инфы...

KTSerg
23.09.2018, 20:05
Ну, как-бы это...
Набросал я за сегодня HDDCreator - прогу, склеивающую образы FDD Вектора в образ HDD. Который потом можно накатывать на CF-карту.
На эмуляторе образ работает, на реале пока не проверил.

Замечания по программе:
1. При выборе MBR - нужно выбирать файл образа считанный с CF-карты, прога копирует из него первые 400h байт. Можно выбирать любой файл размером более 400h содержащий MBR для CF-карты.
2. При выборе Boot - можно выбрать образ FDD, на котором в загрузочную область уже записана OS.COM. А можно выбрать любой другой файл (rom, com, ...), который будет прочитан и запущен загрузчиком.
3. Добавлять в образ HDD желательно "стандартные" образы FDD (820Кб и 830Кб).

Образ HDD можно только записать, "открыть" - в меню есть, но ничего не делает.

PS.
Обновил прикреплённый файл.
Кое-что поправил по мелочи (нумерацию дискет).
Добавил сохранение в текстовом файле списка FDD использованных в образе HDD. И предупреждение при попытке добавить в образ более 40 дискет.

KTSerg
25.09.2018, 21:17
Чёй-то странные весчи творятся с реальной CF-картой...
Склеил своей прожкой образ HDD из 94-ёх FDD.
Накатил образ на CF-карту 256МБ. Читаются дискеты только до 42-ой (2Ah). Начиная с дискеты 2B , пишет - нет файлов, либо мусор вместо имён файлов.
С MBR-карты тоже какие-то сомнения. Похоже я анализировал MBR CF-карты созданный Вектором. На нём были понятные значения секторов, головок и дорожек, которые давали общий реальный объём карты 256МБ. Именно с этими значениями Вектор хоть что-то на этой карте видит. Если ставлю другие значения (секторов, головок и дорожек) - вообще ни одна дискета не читается.
Но, откопал ещё одну CF-карту, которую видит PC (с родным MBR). А он похож на MBR считанный с SD-карты.
Только значения (секторов, головок и дорожек) другие, и "где что" я вычислить не могу.
PS.
Нашел в нете описание разметки SD-карт, похоже на правду. Статистики бы больше...

KTSerg
26.09.2018, 21:03
Печалька...
Провёл следующий эксперимент с CF-картой на 256МБ:
Создал образ дискеты с двумя файлами: PIP и текстовик t.txt - длиной в пару байт.
Создал образ HDD, который состоит только из одной дискеты с PIP и t.txt.
Увеличил размер образа HDD до 256МБ, и заполнил всё добавленное пространство кодом E5h (отформатировал все дискеты, которых по идее поместилось 319шт.).
Подключил CF-карту к контроллеру HDD Вектора.
Переключал дискеты командой: 9 B:hh (где hh- номер дискеты в HEX)
И копировал на них текстовик, командой: PIP B:hh.txt=t.txt (где hh - номер выбранной дискеты).
Таким образом я записывал один файл на дискету, и номер дискеты совпадал с именем файла.
Повторил эту процедуру для нескольких дискет.
Скачал образ CF-карты на РС, и поиском определил адреса на карте, куда были записаны имена текстового файла (т.е. определил место положения каталога дискеты - её начала).
Результат меня опечалил...
Положение каталогов дискет от 1 до 41 (29h) - совпадают с расчетными.
А вот дискеты которые должны находиться на CF-карте за адресом 2000000h - записываются не на свои места.
Например дискета 2B записана по адресу 3CC00h (поверх первой дискеты) вместо расчётного 2B*C4400+A400=2101000h.
Дискета 70h - по адресу 1522000h (поверх дискеты 1B) вместо расчётного 55E6400h.

Явная проблема перехода через максимальный адрес 2000000h.
Но я не могу понять. Эмулятор Вектора спокойно воспринимал дискеты с номерами более 2A. Значит МикроДос вроде как не виноват... (хотя на эмуляторе я этот эксперимент не повторял).
Остаётся железо. Либо контроллер, либо сама CF-карта.
У меня идеи закончились...

Если у кого-то будет возможность, повторите мой эксперимент.
Интересно, какой будет результат.

PS.
Проверил на эмуляторе... проверил только с дискетой 30h.
Результат совпал с результатом на реале. Запись "не на своём месте"... :mad:
Значит всё-же БИОС МикроДос-а... не понимает диски размером более 32МБ... :(

b2m
27.09.2018, 08:53
Явная проблема перехода через максимальный адрес 2000000h.
Размер сектора 200h, проблема при переходе через сектор 10000h. Тут вроде понятно - номер сектора 16-битный.

KTSerg
27.09.2018, 17:28
Размер сектора 200h, проблема при переходе через сектор 10000h. Тут вроде понятно - номер сектора 16-битный.
Согласен, это более правдоподобное объяснение.

Похоже нужно вставить в свою программу предупреждение, в случае превышения количества дискет в 40 шт.

Обновил архив с программой HddCreator.

Dennion
30.09.2018, 18:15
Выложите плиз готовый образ заполненной CF с дискетами для заливки и тестирование на реальном железе. Снять образ желательно dd, им буду заливать.

KTSerg
30.09.2018, 18:30
Выложите плиз готовый образ заполненной CF
Какого размера CF-карта? 32/64/128/256МБ ?

с дискетами для заливки и тестирование на реальном железе. Снять образ желательно dd, им буду заливать.
А что, разве выложенный мной HDDCreator не склеивает образы FDD в готовый для заливки образ HDD?
Если возникла проблема, или есть вопросы по работе программы, пишите.

Думаю ещё желательно выяснить характеристики конкретной CF-карты, запустив из под МикроДоса 3.1 (для HDD) программу inithdd.com. Как рекомендовано в доках. Она вычислит важные параметры карты, кол-во секторов, голов, цилиндров. Хотя их нет на карте, но не верное их значение приводит к потере инфы в образе.

Dennion
30.09.2018, 19:07
Какого размера CF-карта? 32/64/128/256МБ ?. 256, у меня сейчас нет по рукой винды для запуска утилиты креатора. Если 256 не встанет, то буду утилиткой уже.

KTSerg
30.09.2018, 20:21
256, у меня сейчас нет по рукой винды для запуска утилиты креатора. Если 256 не встанет, то буду утилиткой уже.
Есть вот начало для CF-256МБ. На образе только одна Дискета с некоторыми HDD-утилитами.
Добавь к файлу коды E5h увеличив размер образа до 32МБ. И можно заливать на карту, для экспериментов должно хватить.

Исправил адрес загрузки ОS.

ivagor
30.09.2018, 21:19
Изменил геометрию hdd в emu в соответствии с параметрами из заголовка. Если загрузить дос отдельно, то образ в эмуляторе видится, попробовал запустить asc - он запустился. А вот загрузка с этого образа в эмуляторе не работает. Интерес академический, но все же почему так?

KTSerg
01.10.2018, 05:40
... А вот загрузка с этого образа в эмуляторе не работает. Интерес академический, но все же почему так?
Этот образ у меня давно, уже не помню работает ли с него загрузка. У моего Вектора штатный заводской загрузчик, и в нём нет поддержки HDD. Загружаюсь с внешнего ПЗУ.
Вспомнил, что файлов boot-hdd.com и 111.com нет на диске, есть только заголовки в каталоге. Возможно что есть ещё якись "приколы".

ivagor
01.10.2018, 08:14
Если в образе поправить 2 байта (с 00 на 01) по адресам 401h и 403h, то и система начинает грузиться с hdd в эмуляторе.
Если отрезать от исходного образа килобайт, то c fdd система грузится и без коррекций.

- - - Добавлено - - -

Уточнение - для загрузки с hdd достаточно поправить только байт по адресу 401h.

KTSerg
01.10.2018, 08:16
Если в образе поправить 2 байта (с 00 на 01) по адресам 401h и 403h, то и система начинает грузиться с hdd в эмуляторе.
Если отрезать от исходного образа килобайт, то c fdd система грузится и без коррекций.
Странно, честно говоря я ничего не понял. Перед тем как выложить архив с образом, специально проверял, чтобы по этим адресам было 01h, т.к. это адрес загрузки ОSи. Это был вариант с экспериментами...
Пардон, приношу свои извинения. Сейчас заменю архив.

По идее, один адрес указывает куда грузить данные с БУТ-сектора, другой - на какой адрес передать управление после загрузки. Для Корвета например это актуально. А в Векторе используется только первая пара байт (первый адрес).


... то и система начинает грузиться с hdd в эмуляторе. ...
А каким эмулятором пробовал?

ivagor
01.10.2018, 08:32
А каким эмулятором пробовал?
Только emu (b2ma) поддерживает hdd, тут вариантов нет.

KTSerg
01.10.2018, 08:40
Только emu (b2ma) поддерживает hdd, тут вариантов нет.
Я бы не был так категоричен :)
Я пользовался точно не b2m.

ivagor
01.10.2018, 08:46
Остается один вариант - эмулятор Романа Пантелеева (ve27 и варианты), но он на современных компьютерах работает только в DOSbox (возможно и в других виртуальных машинах, не пробовал). Т.е. формально я не прав насчет того, что emu - единственный с поддержкой hdd, но на практике сейчас использовать ve27 очень затруднительно.

KTSerg
01.10.2018, 09:06
Остается один вариант - эмулятор Романа Пантелеева (ve27 и варианты), но он на современных компьютерах работает только в DOSbox (возможно и в других виртуальных машинах, не пробовал). ...
Точно, я не был уверен в названии. У меня древний комп, ve27 запускается под ХР-шкой. Правда выход из него мне не нравится, Фар переходит из оконного режима в полноэкранный с изменением шрифтов на "крокозябы". Приходится закрывать его и снова запускать.

Improver
18.12.2018, 10:22
Интересную вещь нашёл тут случайно на соседней ветке -- схема контроллера IDE для ПК8000 (https://zx-pk.ru/threads/8600-pk8000-rasshiryaemsya-podklyuchaem-chasy.html?p=702021&viewfull=1#post702021). А интересна эта схема тем, что если выбросить из неё всю обвязку для ПК8000/MSX, то останется всего одна микруха, КР580ВВ55 (она же 8255):
67366

Таким же образом можно сделать свой контроллер IDE для Вектора, и схема его будет заметно проще, чем у имеющегося (http://www.sensi.org/scalar/ware/537/). Но если развить идею дальше, то даже и схему-то делать не надо, IDE диск вообще можно напрямую подключить в порт ПУ. Кто что думает по этому поводу?

Плюсы тут есть, но сразу вижу и минусы:
- для этого нужно исправлять/писать свою БСВВ, или даже ДОС.
- эмуляторы не знают о таком подключении диска, а значит отладку надо будет делать на реальном железе.

marinovsoft
18.12.2018, 10:52
Правда выход из него мне не нравится, Фар переходит из оконного режима в полноэкранный с изменением шрифтов на "крокозябы". Приходится закрывать его и снова запускать.
Попробуйте дважды нажать Alt-F9 в FARе.

b2m
18.12.2018, 10:57
Кто что думает по этому поводу?
В эмуляторе можно хоть щас попробовать. Можешь начинать писать софт под это дело.

ivagor
18.12.2018, 11:21
Сугубое имхо - если уж переделывать софт, то лучше под что-то более современное, например SD. Пробный вариант v06сс (svofski) + xsd (b2m) для DE1 я выкладывал несколько лет назад, но с тех пор так и не собрался сделать к нему нормальный биос (а ведь уже появилась и доработка xsd by PVV с поддержкой SDHC, что еще лучше). Отлаживал в emu с пересадкой поддержки SD из конфига 86РКxsd (название конфига надо уточнить). Если переделывать hddшный микродос, то кое в чем будет даже проще, хотя кое в чем и сложнее.

svofski
18.12.2018, 11:37
Я поддерживаю ivagor-а. Начинать ваять что-то новое лучше для SD. Простая плата-адаптер SD для порта ПУ может, в отличие от например прекрасных но очень сложных Шадков, получиться легко повторимой и популярной и разойтись по всем Вектористам-реалистам широким тиражом в 3, а то и 4 экземпляра. Я и сам охотно присоединюсь к владельцам такого устройства.

dk_spb
18.12.2018, 11:49
Существующая схема HDD - это, грубо говоря, 4 микросхемы. Куда уже проще.
Если нужен SD - переходники IDE->CF->SD никто не отменял.
И это всё поддержано родным софтом, который вряд ли кто будет переделывать.

Если же речь идёт о картридже с софтом, который на SD и к разъему ПУ, то это, на мой взгляд, несколько другая тема.

tnt23
18.12.2018, 11:58
Я поддерживаю ivagor-а. Начинать ваять что-то новое лучше для SD. Простая плата-адаптер SD для порта ПУ может, в отличие от например прекрасных но очень сложных Шадков, получиться легко повторимой и популярной и разойтись по всем Вектористам-реалистам широким тиражом в 3, а то и 4 экземпляра. Я и сам охотно присоединюсь к владельцам такого устройства.

Если все это будет цепляться к 8255 и из дополнительных деталей требовать только светодиод и пару керамических конденсаторов, то пользователи РК86 и, например, "Океана" смотрят в будущее с надеждой на бэкпорт.

ivagor
18.12.2018, 12:08
Оффтоп. Для РК86 b2m как раз уже сделал софтинку (xsd), контроллер там очень простой (но очень медленный), это вроде был один из вариантов контроллера SD для msx, ссылку на схему лучше b2m даст, я не помню.

svofski
18.12.2018, 12:30
Предполагаю, что там битбенг одним битом ВВ55. Если можно усложнить схему сдвиговым регистром, ускорив при этом обмен в 16 раз, я за такое усложнение.

ivagor
18.12.2018, 12:44
Предполагаю, что там битбенг одним битом ВВ55.
Типа того

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

b2m
18.12.2018, 12:52
Предполагаю, что там битбенг одним битом ВВ55.
Предполагалось вешать устройство вместо ВВ55. Основан на сдвиговом регистре, но сдвиг происходит при записи в него, т.е. обмен побитный.

svofski
18.12.2018, 13:28
Предполагалось вешать устройство вместо ВВ55. Основан на сдвиговом регистре, но сдвиг происходит при записи в него, т.е. обмен побитный.
У Вектора на ПУ выведен канал 1 таймера, если не изменяет память. Им можно пользоваться для тактирования сдвигового регистра.

b2m
18.12.2018, 13:34
А подсчитывать биты есть чем? ;)

svofski
18.12.2018, 13:49
b2m, нужно просто рассчитать частоту так, чтобы 8 импульсов проходило между разрешающим и запрещающими out-ами.

PVV
18.12.2018, 14:43
Все гораздо проще можно сделать, какие подсчеты тактов?! вот (https://zx-pk.ru/threads/29742-minimalnyj-kontroller-microsd-dlya-uknts-s-nebolshim-zagruzochnym-pzu.html?p=988979&viewfull=1#post988979) в соседней ветке я выкладывал наработки по SD. 7 простых корпусов мс, скорость ~10КБ/с, а то и больше, файлов больших нет, оценить сложно :).

Improver
18.12.2018, 15:20
Вопрос подключения SD-карты интересный, но вернёмся к IDE... Прикинул, как будет работать контроллер, если смотреть по используемым стандартным контроллером портам, то на ВВ55 будет примерно так:

Порт Описание
стд. ВВ55
▀▀▀▀ ▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀� �▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀� ��▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀� �▀▀▀▀▀
50h порт A | Регистр данных 16-бит: 50-мл.,58-ст.байт.
58h порт B | Чтение(запись) данных в(из) буфер сектора контроллера
+ перед операцией однократно:
порт РУС+ >> порты A и B на чтение(запись), порт С на запись
порт С + >> 01010000b -- перед чтением
порт С + >> 10110000b -- перед записью
+ >> читаем/пишем в порты
порт С + >> 10010000b -- после записи
-------------------------------------------------------------------------------
51h порт A | Запись: Write Precompensation register. Turn on write precompensation.
+ перед операцией однократно:
порт РУС+ >> порты A и С на запись, порт B на чтение
порт С + >> 10110001b -- перед записью
+ >> пишем в порт A
порт С + >> 10010001b -- после записи

51h порт A | Чтение: Регистр ошибок. Содержит признаки последней ошибки.
+ перед операцией однократно:
порт РУС+ >> порты A и B на чтение, порт С на запись
порт С + >> 01010001b -- перед чтением
+ >> читаем из порта A
-------------------------------------------------------------------------------
52H порт A | Счетчик числа секторов для операции чтения/записи
+ перед операцией однократно:
порт РУС+ >> порт A на запись, порт B на чтение, порт С на запись
порт С + >> 10110010b -- перед записью
+ >> пишем в порт A
порт С + >> 10010010b -- после записи
-------------------------------------------------------------------------------
53H порт A | Текущий/начальный номер логического сектора для чтения/записи
+ перед операцией однократно:
порт РУС+ >> порт A на запись, порт B на чтение, порт С на запись
порт С + >> 10110011b -- перед записью
+ >> пишем в порт A
порт С + >> 10010011b -- после записи
-------------------------------------------------------------------------------
54H порт A | Цилиндр, старшие (биты 0-1 - это биты 8-9 10-битового номера цилиндра)
+ перед операцией однократно:
порт РУС+ >> порт A на запись, порт B на чтение, порт С на запись
порт С + >> 10110100b -- перед записью
+ >> пишем в порт A
порт С + >> 10010100b -- после записи
-------------------------------------------------------------------------------
55H порт A | Цилиндр, младшие (биты 0-7 10-битового номера цилиндра)
+ перед операцией однократно:
порт РУС+ >> порт A на запись, порт B на чтение, порт С на запись
порт С + >> 10110101b -- перед записью
+ >> пишем в порт A
порт С + >> 10010101b -- после записи
-------------------------------------------------------------------------------
56H порт A | Биты определяют устройство и головку для операции чтения/записи
+ перед операцией однократно:
порт РУС+ >> порт A на запись, порт B на чтение, порт С на запись
порт С + >> 10110110b -- перед записью
+ >> пишем в порт A
порт С + >> 10010110b -- после записи
-------------------------------------------------------------------------------
57H порт A | Запись: регистр команды (См. Tech Ref о подробностях)
+ перед операцией однократно:
порт РУС+ >> порт A на запись, порт B на чтение, порт С на запись
порт С + >> 10110111b -- перед записью
+ >> пишем в порт A
порт С + >> 10010111b -- после записи

57H порт A | Чтение: регистр статуса
+ перед операцией однократно:
порт РУС+ >> порты A и B на чтение, порт С на запись
порт С + >> 01010111b -- перед чтением
+ >> читаем из порта A
-------------------------------------------------------------------------------
5fH порт C | Системный сброс (лучше не пользоваться, сходство с 57Н без обнуления
микросхем жесткого диска).
+ перед операцией однократно:
порт РУС+ >> порты A и В на чтение, порт С на запись
порт С + >> xxx0xxxxb

Настройку ВВ55 (т.е. запись в РУС), а также, в некоторых случаях, конфигурацию IDE (запись в порт C) можно вынести за циклы, но в любом случае кода будет явно больше, чем со стандартным контроллером...

Подключение диска к ВВ55 такое же, как и на исходной схеме с одним исключением:
- Порт A -- D0-D7 на IDE
- Порт В -- D8-D16 на IDE
- Выводы порта С0-C2 -- A0-A2 на IDE
- Вывод порта С4 -- /RESET на IDE
- Вывод порта С5 -- /CS1FX на IDE
- Вывод порта С6 -- /DIOW на IDE
- Вывод порта С7 -- /DIOR на IDE

Если я правильно понял, в стандартной схеме сброс будет выполняться при любой записи в порты 5Ch-5Fh, на ВВ55 для пришлось задействовать для сброса IDE вывод C4.

b2m
18.12.2018, 15:29
Всё хорошо, вот только при программировании порта С на вывод все пины этого порта устанавливаются в ноль, а следовательно получишь и RESET, и недопустимое сочетание DIOW DIOR.

Improver
18.12.2018, 16:05
Всё хорошо, вот только при программировании порта С на вывод все пины этого порта устанавливаются в ноль, а следовательно получишь и RESET, и недопустимое сочетание DIOW DIOR.Да, в таком случае или понадобится инвертор, или... мне надо освежить в памяти документацию по КР580ВВ55, в частности по работе портов в режиме "2". :)

Improver
21.12.2018, 11:52
В общем, почитал я "гросбух" и склоняюсь к выводу, что использовать "режим 2" на ВВ55 не получится, потому что простыми средствами там синхронизацию с IDE не сделаешь... Да и в схеме для ПК8000/MSX использовался только "режим 0", судя по подключению управляющих сигналов.

И ещё, про:
недопустимое сочетание DIOW DIOR.Это не страшно, т.к. чтение и запись, по стандарту IDE, выполняются по положительному фронту на этих выводах, так что их совместное зануление, думаю, не будет критичным для диска. С другой стороны, смену настроек через РУС нужно будет свести к минимуму.

Потом, нашёл ещё одну интересную разработку: IDE2LPT - адаптер IDE-винчестера для подключения к параллельному порту PC -- Л.Слободчиков, журнал Радиохобби, №2 1999 г., с.55 (http://info.linuxoid.in/journals/%d0%a0%d0%b0%d0%b4%d0%b8%d0%be%d1%85%d0%be%d0%b1%d 0%b1%d0%b8/1999/02.PDF)
По виду, там схема имеет не только много общего со стандартной Векторовской схемой IDE-контроллера, но и подключается к LPT-порту, во многом схожему с портом ПУ. На основе этих разработок, думаю, можно будет сделать супер-простую схему подключения IDE-дисков в порт ПУ, на одних проводах.

Improver
06.08.2019, 09:55
Анализируя ошибки при тестировании собранного мной контроллера HDD (https://zx-pk.ru/threads/29342-novyj-staryj-kvazidisk.html?p=1019998&viewfull=1#post1019998), дизассемблировал TESTHDD3 Фролова, и заодно немного его улучшил. Вот получившиеся исходники: 69751

С моими исправлениями назвал TESTHDD4: 69752 (в архиве исходники и откомпилированная версия)

Изменения по отношению к третьей версии:

1. Заменил все обращения к порту 5Fh на 57h, кроме первого, при этом оказалось, что линию "reset" можно не размыкать, диск и с ней работает нормально. Собственно, в документации к контроллеру и было сказано, что порт 5Fh лучше не использовать часто, и, возможно, также нужно будет пропатчить ДОСы...

2. При "поверхностном" тестировании портов с моим диском выдаётся ошибка "не работает порт IN 57 или индексный маркер HDD". Разбор исходного алгоритма показал, что там считывается байт из порта и анализируется изменение его второго бита, если оно не произошло за 65536 х 16 циклов, то и выдаётся эта ошибка. В найденном описании из инета (http://programming-lang.com/ru/comp_hard/guk/0/j336.html) сказано, что это "индекс, трактуется особо каждым производителем", поэтому я не исключаю, что на моей модели диска он просто не меняется. В этом тесте я значительно переработал алгоритм проверки и добавил вывод значения порта, по которому можно судить о его работе: если с порта 57 читается значение 50h или 51h, то скорее всего проблема в индексном маркере.

3. При тестировании чтения/записи сектора выдавалась малопонятная ошибка "мало данных", дополнил её выводом числа считанных/записанных байт. Кроме того поправил подпрограмму сравнения считанных данных, теперь она проверяет не больше, чем было считано и выводит номер байта, на котором возникла первая ошибка. Собственно, это тоже связано с моделью диска: в тесте изначально читается сектор 512 байт и дополнительно ещё 16 байт (контрольные суммы?), мой же диск отдаёт только 8 дополнительных байт. Не думаю, что эти дополнительные данные как-то влияют на работу программ, но вывод этих ошибок в тесте я оставил.

4. Ну и напоследок, убрал неиспользуемые части, исправил найденные ошибки, добавил новые... :)

electroscat
01.01.2020, 16:27
Доброго времени дорогие друзья ! Хотел бы поделиться своими наработками в области сопряжения контролера HDD с CF картой, подробно.
В ходе выполнения работ выяснил опытным путем, что не со всеми CF картами контроллер ведет себя правильно. Самый лучший вариант на данный момент это CF Kingston 256 mb. Китайские малой емкости - которые есть на али - не одну не получил в рабочем состоянии, лучше искать на авито. Еще, не рекомендую Transcend, не знаю все или нет, у меня были два экземпляра по 128 мб, оба искажали большие контрастные файлы при записи на диск, сдвигали произвольный кусок файла на 2 байта,. В обшем, приводили в негодность. Эти же карточки резко реагировали на тип и положение шлейфа IDE, на сложенном и скрученном шлейфе могла вообще не читать ничего, или искажать сильно при записи, вообще не писать, на развернутом - гораздо получше. На Kingston - вообще проблемы нет, работает на любом шлейфе в сложенном и развернутом виде, пишет без искажений.
Для предотвращения заворота и удобного пользования диском при помощи программы ASC.COM - обрезал диск до 41 дискеты (32мб), путем инициации его INITHDD2 - c параметрами 124C16H32S

кол-во цилиндров - 20H 32B
кол-во головок - 10H 16B
кол-во клайстеров - 7СH 124B

Так работает идеально, без завоторов, 41B 29H дискет, в целом больше и не нужно...

Программа ASC.COM - с зеленым интерфейсом прекрасно переносит перемонтирование диска - не вываливается, как многие другие, спасибо автору, жаль что он не известен.
Кстати, хотелось бы сразу поинтересоваться, у кого есть рабочие исходники ASC ? Или кто знает как можно поменять цвет интерфейса, где он прописан в коде программы, по какому адресу, зеленый - очень яркий.

Хочу так же поделиться образом диска - вот тут по ссылке можно скачать, там же описание - что на каком диске, и программа HDDRawCopy1.10Portable для записи образа на CF и последующего считывания.
Считывается вся CF, так как она у меня 256 mb - обрезаю ее в hex редакторе, для экономии места.

Скачать можно тут: https://yadi.sk/d/wrH30lL4UGK_3Q

И есть еще один нюанс, на aliexpress доступно несколько типов CF to IDE плат. Так вот, они не все работают с картами Transcend (по крайней мере теми, которые у меня были). Те которые подключаются без шлейфа, у которых разъем "мама" - не работают, шлейф для этих карт очень критичен, должен быть. Так же на сильно коротком шлейфе тоже не работают. Но с картами Kingston проблемы нет, все читается и пишется на любой плате CF to IDE.

https://sun9-13.userapi.com/c857620/v857620260/13e33b/hB3GBuX4FCg.jpg

Поменял на яндекс диске файл описания, добавил некоторые важные элементы описания...

Еще один важный момент вспомнил,без него не заработает, не помню, писал в предидущих сообщениях или нет, если повторюсь, простите.

На разьеме IDE (в моем случае, разьем на плате combodevise) вывод 37 (выбор контроллера) с выводом 40 (общий) спаял перемычкой и вывод 1 (reset) убрал, обрезал - все пошло. До этого жесткий диск не видился контроллером, или видился, но производил одни ошибки..

https://sun9-19.userapi.com/c857720/v857720633/fd107/yJNIJBt5b_4.jpg


Обновил образ CF на файлсервере, это наверное окончательная версия, тут уже вроде как все поисправлял что хотел, покрякал кое что, наделал ASC гармоничных расцветок, ну и там кое что из софта понаходил еще, в общем, кому интересно качайте.... https://yadi.sk/d/wrH30lL4UGK_3Q


И еще кое что, на мой взгляд интересное. Попробовал как носитель CF карту на 32 мб от CANON - отлично работает, пишется и читается прекрасно, на векторе. На PC она в 3 раза медленнее чем Kingston И Transcend, и вместо 5 мб\сек еле набирает 1,9мб\сек. В целом это ничего, скорость работы с вектором не меняется из за этого, там максималка... Но есть одно но.... Kingston И Transcend, если зажать F2+F3 до включения компа, и включить - успевают инициализироваться и загрузка происходит с HDD. А в случае с CANON инициализация не проходит до опроса готовности HDD и старт переводится на касету. по этому, лучше ничего не трогать, тогда загрузка начинается с дискеты, и тогда можно нажать ввод+блк +F2+F3 и загрузка пойдет с HDD. То есть, CANON не успевает показать свою готовность до опроса контроллером HDD.

CF CANON 32 мб имеет другие параметры,

кол-во цилиндров - 20H - 32B
кол-во головок - 4H - 4B
кол-во клайстеров - 1EAH - 490B

но в целом, на нее можно так же залить дамп с файлсервера https://yadi.sk/d/wrH30lL4UGK_3Q только предварительно поправить в дампе с 80 адреса 5 байт, вместо 20 10 7C 00 29 вписать 20 04 EA 01 28 или попросту запустить с FDD - программу INITHDD.COM и дать программе инициализировать диск уже после записи дампа, все данные останутся целыми, поменяются только 5 байт образа с 80 адреса.

Improver
09.01.2020, 10:01
На разьеме IDE (в моем случае, разьем на плате combodevise) вывод 37 (выбор контроллера) с выводом 40 (общий) спаял перемычкойКстати, да, возможно это имеет смысл. В оригинальной векторовской схеме контроллера сигнал CS1FX# отключается после DIOR#/DIOW# с задержкой до 10-14нс (которую обеспечивает микросхема КР1533ЛИ1), какую задержку делает комбодевайс не знаю, но возможно этой задержки мало для нормальной фиксации данных CF-картой с переходником на IDE. Думаю, этот глюк можно решить в прошивке комбодевайса, просто увеличив там задержку отключения CS1FX# до 20 или более нс.

Stas Bergich
02.03.2020, 23:31
ASC.COM мой, правда он был с синим интерфейсом. Исходники тут: http://sensi.org/scalar/ware/794/

electroscat
17.03.2020, 22:21
- - - Добавлено - - -


ASC.COM мой, правда он был с синим интерфейсом. Исходники тут: http://sensi.org/scalar/ware/794/


Доброго времени! Пытался ваши исходники скомпилить, и в TASM и в Pretty Assembler, в итоге получается только синий фон и красный прямоугольник выделения файла, без букв и прочего Я нашел в коде 3 ошибки, но результата это никакого не дало, код так же компилится в синий экран с красным прямоугольником с лева, меняющим своре положение по нажатию "таб" на правое... Программа запускает файлы, запрашивает подтверждение при попытке выхода, выход работает. Но на экране синий фон и прямоугольники выделения имен файлов, букв и псевдографики нет.. Что это может быть? Где то еще есть ошибки в коде. И когда компилится, файл получается на 1 кб меньше чем тот ASC что я использовал. Ваш код очень помог мне найти в машинном коде ASC место где цвета находятся, и еще некоторые другие интересные места, код местами очень похож на код ваших исходников, но лишь местами. В итоге, я из 3х найденных мной версий ASC нашел самый лучший (основным критерием явилось то, что программа не вылетает в MicroDOS c HDD при вводе команды 9, монтирования дискеты из HDD к определенной метке) и уже в коде наменял цветов, и кое чего еще. В целом, цель достигнута. Пытался собрать исходники из ваших, и дизассемблированных текстов лучшей версии ASC - но код таки местами сильно отличается, да и времени сейчас не очень много на это, по этому, остановился пока на исправлении того что мне мешало непосредственно в коде программы. А ваш код ASC адаптирован под версию MDOS c HDD? И почему он не отображает текст и псевдографику? Он компилился у вас в рабочюю программу?

Проверил, ваша версия программы, которая по ссылке доступна скомпилированная, она вываливается, когда дискету монтируешь командой, например "9 А:2"... Тем не менее, если по исходникам можете помочь, может у вас осталась копия рабочих исходников, поделитесь пожалуйста. Те которые по ссылке не работают как надо.

Improver
18.03.2020, 09:27
electroscat, а не пробовал разобрать ASCH.COM, который лежит тут среди прочего в архиве hdd_soft.rar (https://zx-pk.ru/threads/835-vektor-06ts-obshchie-voprosy/page9.html?p=158871&viewfull=1#post158871)? Как он работает с HDD и в чём его отличия от других версий?

electroscat
18.03.2020, 14:45
electroscat, а не пробовал разобрать ASCH.COM, который лежит тут среди прочего в архиве hdd_soft.rar (https://zx-pk.ru/threads/835-vektor-06ts-obshchie-voprosy/page9.html?p=158871&viewfull=1#post158871)? Как он работает с HDD и в чём его отличия от других версий?

Не, эта версия тоже вываливается в микроДОС когда вводишь команду 9 А:Х... Версия, которую я использовал - не вываливается в дос при перемонтировании дискеты, возвращается в ASC и показывает в соответствующей панели файлы уже перемонтированного диска. Я не помню если честно, от куда я ее откопал, но она для HDD единственная работоспособная. Взять ее можно из моего образа CF карты, тут: Образ СF карты 32 мб (https://yadi.sk/d/wrH30lL4UGK_3Q). Она там везде, а на 16H дискете образа она представлена в 6 цветовых гаммах. Исходники этой прораммы хотелось бы получить. Скомпилированная она занимает на килобайт больше чем то, что получается из имеющихся исходников.... В целом, думаю, со временем из дизасемблированных и доступных я их получу... Надеюсь будет время заниматься этим.

PPC
25.06.2021, 20:17
Программа ASC.COM - с зеленым интерфейсом прекрасно переносит перемонтирование диска - не вываливается, как многие другие, спасибо автору, жаль что он не известен.

Не уверен, но если у вас вот такая версия как в аттаче, то автор известен, это ISA (http://sensi.org/scalar/author/236/), и сделано это примерно в конце 1993, во времена когда мы писали BoldBIOS3 и разбирались с ВГ93 чтобы диски любых форматов поддерживать, не только 80/5/1024. У меня где-то должен быть и вариант для себя - бело-серо-зелёный на чёрном фоне. ЕМНИП оригинальный ASC правился нами на лету, отладчиком DBG для Вектора, поэтому исходников как бы нет, хотя может у меня какие-то куски где-то и остались для намёток.

KTSerg
12.04.2022, 21:03
Колдовство какое-то... :(
Был рабочий контроллер HDD, с переходником CF-IDE40, и CF-картой...
Сейчас ни какие загрузчики его не видят.
CF-карта на компе читается/пишется через картридер.
Переходник CF-IDE40 - это только переход между разъёмами CF и IDE, все контакты IDE звонятся на контактах CF.
Для тестирования контроллера, набросал простые тесты.
Запись в порты 5F, 58 и 50 - на разъёме IDE осциллографом всё вижу.
Тестом чтения портов 50 и 58 проверил, состояние пинов разъёма IDE читается.
Собираю всё вместе, программа чтения с HDD в цикле пытается читать CF-карту, но осциллогафом на шине данных, на разъёме IDE - полная тишина. Карта вообще на шину ни чего не выдаёт. Хотя на остальных сигналах управления что-то мелькает.
Уже и другую CF-карту пробовал, ни чего не изменилось.
Но такого ведь не бывает...

Improver
12.04.2022, 23:54
KTSerg, может причина в порту 5F? У меня при его использовании на тестах диск подвисал примерно с такими же симптомами.

KTSerg
13.04.2022, 05:27
KTSerg, может причина в порту 5F? У меня при его использовании на тестах диск подвисал примерно с такими же симптомами.
В смысле сигнал Reset ?
Уже сделал, как тут рекомендовали:

На разьеме IDE ... вывод 37 (выбор контроллера) с выводом 40 (общий) спаял перемычкой и вывод 1 (reset) убрал,
Но пока не помогло.
На переходнике горят индикаторы "card detect" и "power", индикатор "active" даже не промаргивает.
Перекинул перемычку "master/slave" на "slave", при обращении загрузчика к HDD, стал загораться и постоянно гореть "active", но CF так и не читается. До соединения выводов 37 и 40 эту перемычку тоже пробовал переключать, поведение было аналогичное, "active" горит, чтения нет.

Pyk
25.04.2022, 10:28
Подскажите, что из себя представляет образ жесткого диска Вектора? Какая там файловая система - что-то стандартное или специфическое именно для Вектора? Блок информации по геометрии по смещению 80h - опять таки специфичен для Вектора или это какой-то стандартный заголовок?

KTSerg
25.04.2022, 10:50
Подскажите, что из себя представляет образ жесткого диска Вектора? Какая там файловая система - что-то стандартное или специфическое именно для Вектора? Блок информации по геометрии по смещению 80h - опять таки специфичен для Вектора или это какой-то стандартный заголовок?
Вообще, образ HDD на Векторе, это сборка из образов дискет, от которых отрезали загрузочную область. Т.е. обазы дискеты начинаются сразу с каталога.
Только первая дискета целиком.
Про данные о геометрии, я не в курсе, может кто-то уже разбирался с образами HDD от других компов, и сможет что-то конкретное сказать.

ivagor
25.04.2022, 11:39
Немного разбирался с блоком геометрии, но оказывается все забыл. То, что по смещению 80-82h CHS - это очевидно, а вот про 83-85 не могу вспомнить, как-то связано с объемом или количеством образов дискет.

Pyk
25.04.2022, 11:46
Спасибо, стало примерно понятно, еще бы найти в таком случае формат дискеты. Хотел в картотеке поискать, но она опять не работает...
Вообще, я так понимаю, MicroDOS в Векторе и MicroDOS в БК - это разные системы? Диски друг друга они не видят. Или просто разная геометрия?

ivagor
25.04.2022, 12:14
Векторовский микродос - это потомок корветовского микродоса, форматы дискет одинаковые. Кстати образы дискет совпадают еще и с орионом, там, насколько помню, тоже от корвета отталкивались.

KTSerg
25.04.2022, 12:18
Векторовский микродос - это потомок корветовского микродоса, форматы дискет одинаковые. Кстати образы дискет совпадают еще и с орионом, там, насколько помню, тоже от корвета отталкивались.
Да вроде так и есть.
Только у Вектора загрузочная область 8 дорожек, к у этих вроде по 4 (возможно ошибаюсь).

KTSerg
05.05.2022, 20:42
Контроллер HDD замаял... Реально колдовство... И логером и осциллографом смотрю, тестовые проги написал для тестирования электроники... Всё ожидаемо, вроде есть всё, что должно быть... но загрузчик Вектора не видит HDD...
Собрал контроллер HDD на Альтере - практически сразу заработал... всё видит, всё грузит...
Придётся тупо поменять микросхемы на контроллере... а был ведь рабочий...

PS. Менять микросхемы не пришлось (пока). :)
Вычислил колдуна... выгорел один вход элемента ЛН1, который инвертирует сигнал "АА1". Он с разъёма ВУ инвертируется и идёт только на CF-карту, поэтому вся электроника контроллера нормально тестировалась, а карта не читалась. Перекинул проводки на свободный элемент микросхемы, моя бута каталоги дискет видит, программы запускает.
Загрузчик правда что-то загружает, но это не запускается, нужно разбираться, но это уже другая история...


Судя по всему, вместе с контроллером сгорел КвазиДиск и Вектор пострадал. :(
На КД выгорел тот-же разряд ШАВВ, что и на контроллере.
В магазине нет ЛА2/74*30. Погуглил... ла2 ~100руб за штуку, а 74*30 просят 700-900руб 8()
На али вроде адекватные цены, но не в курсе, как сейчас с оплатой/доставкой...
Похоже придётся колхозить аналог из подручных микросхем...

На Векторе с рабочим КД, запускаю тесты КД, все кроме одного работают и не показывают ошибок КД. Один тест http://sensi.org/scalar/ware/619/ запускается, появляется картинка и сразу гаснет... на этом тест заканчивается.
На этом-же Векторе с исправным КД не работает ни один (из проверенных) МикроДос... просто чёрный экран.
Переставляю рабочий КД на 02-ой Вектор, штатно работают без ошибок все тесты КД, включая указанный, и МикроДосы работают.

KTSerg
07.05.2022, 20:42
Пока ремонтировал контроллер HDD, столкнулся с ситуацией, когда нужно проверить контроллер с другой CF-картой. А она другой ёмкости, и не известно что записать в адреса 80 и 81 образа HDD. Если указать не соответствующие карте значения, то кина не будет.
А инициализацию карты можно сделать только утилитами inithdd из под МикроДоса, а его с утилитами нужно иметь на диске или дискете... а подключать контроллер дисковода лень, с образом КД и его загрузкой так-же заморочки...

В результате, дизасмил утилиту inithdd.com, вырезал из неё тест кол-ва секторов и головок. Состряпал программку (получилась 509 байт), которую можно через магнитофонный вход загрузить в чистый Вектор, и она на экране покажет какие значения нужно заносить в образ HDD для CF-карты вставленной в контроллер HDD.
Программка примитивная/минимальная, даже загрузочную сетку не стирает.
Значения выводит на экран монитора, ну и куда без этого... на экран LCD-дисплея ;)
Во вложении исходник и сама программка.
Вдруг кому-то ещё пригодится.

Napoleon1
19.09.2022, 13:03
Добрый день всем!
Делаю новый загрузчик для модификации Вектора и столкнулся с такой проблемой - при чтении CF-карт в режиме LBA 28 бит карты размером до 512Мб нормально читаются, но вот на 2Гб и больше зависают при чтении (при чтении сектора карта не заканчивает выдавать данные после 512 байт, хотя размер сектора именно такой), при этом читается совершенно не то, что туда было записано.
Попробовал работать в режиме LBA 48 бит - там вместо данных читаются нули, хотя в режиме 28 бит всё ОК.

b2m
19.09.2022, 18:02
Скорее всего нехватает каких-то команд инициализации. Например LBA для старых карт, по-умолчанию, это адрес, а для новых - номер сектора. Размер сектора у старых по-умолчанию 512 байт, у новых нужно запрашивать (какой именно поддерживается, да и поддерживаются ли вообще 512-байтные сектора). Короче нужно шерстить доку.

Napoleon1
19.09.2022, 18:22
В том то и дело, что я посматривал образы флешек - там всё правильно прописано (размер сектора 512 байт и вся служебная информация на правильных адресах), а при чтении контроллером Вектора ерунда получается. И перед первым обращением всегда выполняется ресет (порт 5F).
Я думал может у кого есть примеры работы с HDD/CF на низком уровне на каком-нибудь ассемблере.

KTSerg
19.09.2022, 18:45
...
Я думал может у кого есть примеры работы с HDD/CF на низком уровне на каком-нибудь ассемблере.
Есть вот такой asm - это вырезка из начального загрузчика подпрограмм для работы с HDD:



;
; Начальный загрузчик Вектор06Ц
; BOOTS
;
.ORG 100H
;--------------------------------------------------
; жесткий диск - проверка наличия HDD
;
MVI A,080H ; 0753
OUT 05FH ; 0755 системный сброс HDD
MVI B,00FH ; 0757
a0759H: DCR B ; 0759
RZ ; 075A
IN 057H ; 075B статус
ANI 0C0H ; 075D
CPI 040H ; 075F готов к работе
JNZ a0759H ; 0761 пока не готов
ORA A ; 0764
RET ; 0765
;
; Загрузка с HDD
;
a0766H:
MVI A,001H ; 076E
CALL a0792H ; 0770 Прочитать сектор
LDA 01404H ; 0773
CPI 0E5H ; 0776
JZ 00000H ; 0778 Перезапуск Загрузчика
CALL a07D5H ; 077B Проверить готовность
LDA 01404H ; 077E
CALL a0792H ; 0781 Прочитать сектор
LHLD 01400H ; 0784
LDA 01404H ; 0787
ADD A ; 078A
ADD A ; 078B
ADD H ; 078C
MOV D,A ; 078D
RET ; 0791
; чтение сектора
a0792H: INR A ; 0792
ADD A ; 0793
MOV C,A ; 0794
LXI D,01000H ; 0795
MVI H,000H ; 0798
a079AH: MVI L,000H ; 079A
a079CH: INR L ; 079C
MOV A,L ; 079D
OUT 053H ; 079E текущий номер сектора
MOV A,H ; 07A0
OUT 056H ; 07A1 устройство и головка
XRA A ; 07A3
OUT 054H ; 07A4 цилиндр ст.
OUT 055H ; 07A6 цилиндр мл.
INR A ; 07A8
OUT 052H ; 07A9 счетчик числа секторов
MVI A,020H ; 07AB команда - чтение
OUT 057H ; 07AD запись команды
PUSH H ; 07AF
MVI H,058H ; 07B0
CALL a07D7H ; 07B2 Ожидание готовности данных
POP H ; 07B5
MVI B,000H ; 07B6
a07B8H: IN 050H ; 07B8 чтение данных
CALL a07EFH ; 07BA сохранить
IN 058H ; 07BD чтение данных
CALL a07EFH ; 07BF сохранить
DCR B ; 07C2
JNZ a07B8H ; 07C3 пока считаны не 512 байт
DCR C ; 07C6
JZ a07D5H ; 07C7 (4 раза)
LDA 01080H ; 07CA
CMP L ; 07CD
JNZ a079CH ; 07CE
INR H ; 07D1
JMP a079AH ; 07D2
;
; Ожидание готовности чтения HDD
a07D5H: MVI H,050H ; 07D5
a07D7H: PUSH B ; 07D7
MVI B,020H ; 07D8
a07DAH: IN 057H ; 07DA чтение статуса
ANI 0D9H ; 07DC
CMP H ; 07DE
JZ a07EDH ; 07DF если готов
DCR L ; 07E2
JNZ a07DAH ; 07E3 пока не готов
DCX B ; 07E6
MOV A,B ; 07E7
ORA C ; 07E8
JNZ a07DAH ; 07E9 цикл ожидания готовности
RST 0 ; 07EC Перезапуск Загрузчика
;
a07EDH: POP B ; 07ED
RET ; 07EE
;
a07EFH: STAX D ; 07EF Сохранение считанных данных
INX D ; 07F0
MOV A,D ; 07F1
CPI 014H ; 07F2
RNZ ; 07F4
MOV A,E ; 07F5
CPI 080H ; 07F6
RNZ ; 07F8
PUSH H ; 07F9
LHLD 01400H ; 07FA
XCHG ; 07FD
POP H ; 07FE
RET ; 07FF
;
.END

Napoleon1
19.09.2022, 19:46
Я плохо сформулировал - имелось в виду пример работы в режиме LBA 48 бит. Но всё равно спасибо за помощь.

b2m
20.09.2022, 10:54
я посматривал образы флешек - там всё правильно прописано (размер сектора 512 байт
Насколько я понимаю, размер сектора файловой системы и размер сектора при обмене с флешкой - разные вещи.

Napoleon1
20.09.2022, 11:51
Насколько я понимаю, размер сектора файловой системы и размер сектора при обмене с флешкой - разные вещи.

Это как? Сектор он сектор и есть и его размер определён в MBR (на смещении 0Bh записано 200H байт на сектор). Во всяком случае в источниках, которые я читал, именно так написано.
Другое дело, что есть ещё понятие кластер, который состоит из нескольких подряд идущих секторов и является минимальной единицей места на диске для файлов. Но командами всё равно читаются сектора.

Improver
20.09.2022, 14:38
Сектор он сектор и есть и его размер определён в MBR (на смещении 0Bh записано 200H байт на сектор).Если инфа из MBR, то там, наверно, размер логического сектора, который по размеру может отличаться от физического. Характеристики флешки лучше глянуть какой-нибудь аидой, а не по содержимому MBR.

b2m
20.09.2022, 15:35
Это как?

Improver дело говорит. В стародавние времена почти все носители (ну кроме компакт-дисков) имели размер сектора 512 байт, соответственно для FAT так и устаканилось - размер логического сектора 512 байт. Но вот современные носители обмениваются блоками гораздо большего размера. То есть размер блока (физического сектора) может не совпадать с размером логического сектора. Этой проблемой обычно занимается драйвер физического устройства, кэшируя считанный блок и выдавая логические сектора (размером 512 байт) драйверу файловой системы, которому вобщем-то по барабану, какой там физический носитель.

Napoleon1
20.09.2022, 16:39
Improver дело говорит. В стародавние времена почти все носители (ну кроме компакт-дисков) имели размер сектора 512 байт, соответственно для FAT так и устаканилось - размер логического сектора 512 байт. Но вот современные носители обмениваются блоками гораздо большего размера. То есть размер блока (физического сектора) может не совпадать с размером логического сектора. Этой проблемой обычно занимается драйвер физического устройства, кэшируя считанный блок и выдавая логические сектора (размером 512 байт) драйверу файловой системы, которому вобщем-то по барабану, какой там физический носитель.

Действительно, есть такое дело. Посмотрел сейчас:
77808
Всё таки 512 байт.
Но меня больше напрягает что в LBA 48бит ерунда читается, а везде где я смотрел только общие слова, ни одного примера взаимодействия.

Improver
20.09.2022, 21:03
Но меня больше напрягает что в LBA 48бит ерунда читаетсяМожно сделать так: заполнить все сектора на флешке данными с их номером, чтобы точно определить, откуда читается эта ерунда, а потом делать выводы, где происходит сбой. :)

Napoleon1
20.09.2022, 21:34
Можно сделать так: заполнить все сектора на флешке данными с их номером, чтобы точно определить, откуда читается эта ерунда, а потом делать выводы, где происходит сбой. :)

Хорошая идея! Я попробую реализовать. Только наоборот - на Векторе буду записывать, а потом образ смотреть.