Векторовский микродос - это потомок корветовского микродоса, форматы дискет одинаковые. Кстати образы дискет совпадают еще и с орионом, там, насколько помню, тоже от корвета отталкивались.
Векторовский микродос - это потомок корветовского микродоса, форматы дискет одинаковые. Кстати образы дискет совпадают еще и с орионом, там, насколько помню, тоже от корвета отталкивались.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Контроллер 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 в 17:44.
Пока ремонтировал контроллер HDD, столкнулся с ситуацией, когда нужно проверить контроллер с другой CF-картой. А она другой ёмкости, и не известно что записать в адреса 80 и 81 образа HDD. Если указать не соответствующие карте значения, то кина не будет.
А инициализацию карты можно сделать только утилитами inithdd из под МикроДоса, а его с утилитами нужно иметь на диске или дискете... а подключать контроллер дисковода лень, с образом КД и его загрузкой так-же заморочки...
В результате, дизасмил утилиту inithdd.com, вырезал из неё тест кол-ва секторов и головок. Состряпал программку (получилась 509 байт), которую можно через магнитофонный вход загрузить в чистый Вектор, и она на экране покажет какие значения нужно заносить в образ HDD для CF-карты вставленной в контроллер HDD.
Программка примитивная/минимальная, даже загрузочную сетку не стирает.
Значения выводит на экран монитора, ну и куда без этого... на экран LCD-дисплея
Во вложении исходник и сама программка.
Вдруг кому-то ещё пригодится.
Добрый день всем!
Делаю новый загрузчик для модификации Вектора и столкнулся с такой проблемой - при чтении CF-карт в режиме LBA 28 бит карты размером до 512Мб нормально читаются, но вот на 2Гб и больше зависают при чтении (при чтении сектора карта не заканчивает выдавать данные после 512 байт, хотя размер сектора именно такой), при этом читается совершенно не то, что туда было записано.
Попробовал работать в режиме LBA 48 бит - там вместо данных читаются нули, хотя в режиме 28 бит всё ОК.
Скорее всего нехватает каких-то команд инициализации. Например LBA для старых карт, по-умолчанию, это адрес, а для новых - номер сектора. Размер сектора у старых по-умолчанию 512 байт, у новых нужно запрашивать (какой именно поддерживается, да и поддерживаются ли вообще 512-байтные сектора). Короче нужно шерстить доку.
В том то и дело, что я посматривал образы флешек - там всё правильно прописано (размер сектора 512 байт и вся служебная информация на правильных адресах), а при чтении контроллером Вектора ерунда получается. И перед первым обращением всегда выполняется ресет (порт 5F).
Я думал может у кого есть примеры работы с 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[свернуть]
Последний раз редактировалось KTSerg; 19.09.2022 в 19:03.
Napoleon1(19.09.2022)
Я плохо сформулировал - имелось в виду пример работы в режиме LBA 48 бит. Но всё равно спасибо за помощь.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)