ZPilot, в Qt-версии не добавлял трассировку, сорри. Попробуйте Win32-версию под WINE.
Вид для печати
ZPilot, в Qt-версии не добавлял трассировку, сорри. Попробуйте Win32-версию под WINE.
Коллеги, не поможете с кодом под УКНЦ. Мне нужен код который можно набрать в отладке ПП, чтоб он поочередно, на максимальной скорости, опрашивал порты 177130 и 132, желательно, чтоб отлавливал, что порт подвис. Есть подозрение, что контроллер что-то упускает.
Я тут психанул и.. записал игрушки (которые зависают после загрузки) в память микроконтроллера, убрал запись и вообще оптимизировал код как только можно. А толку все равно 0. Виснут падлюки :). Все-таки это не связано со скоростью вывода информации, что-то я упускаю. Например, сигнал RDY у меня всегда =0, тк по идее его ни кто не использует.
вот небольшой пример загрузки/зависания: https://cloud.mail.ru/public/2KPU/AuvTJT8bm
Мда... Нужен комплексный тест для контроллера MZ и дискет в нем. Пробовать работоспособность контроллера запуском разных дисков - не вариант.
Я собрал новый контроллер (немного на "соплях" - но работает). Пока результат у меня тот же: системные диски RT или АДОС грузятся; диски ИТО грузятся до меню, но после выбора игры - виснут.
Очень нужна помощь в отладке контроллера КМД+дисковод!
Сначала - суть проблемы. Про зависание дисков ИТО уже писали. Дальше - интересней. Вот на этом диске есть файл MULTIC.DOC Если вывести его на экран TY - он зависнет на надписи MULTI C в самом начале. Я попробовал удалить перед ним файл на 3кб и сделать "сборку мусора" - файл стал выводить еще 3кб текста. Т.е. проблема в считывании какого-то мусора начиная с какого-то места на диске? Я провел эксперимент: сделал 8 текстовых файлов по 100кб и вывел их последовательно на экран. Все файлы вывелись без зависаний (если был ошибки считывания - я мог и не заметить). Значит проблема проявляется как-то иначе...
Вот теперь о том, что нужно. Нужна программа проверяющая считываемые данные с диска. Как я это вижу: программа должна "вынуждать" виртуальный дисковод шевелить "головками" и сравнивать полученные данные с эталонными. Для этого нужно сформировать образ заполненный некими данными. Программа должна давать дисководу команду считать данные последовательными блоками, случайными блоками, группами блоков размером в 1 сектор, группами блоков размером чуть больше 1 сектор, читать данные из одного сектора, а потом из предыдущего к нему. Все считанные блоки должны сравниваться с эталонным (которым заполнен образ) и если есть расхождения - сообщать об этом. Так можно будет понять на каких действиях контроллер "подавится" и прикинуть причину (не хватает быстродействия или неправильная работа).
Как зависает? В смысле, на чем? Остановить и посмотреть можно? То есть, подозреваю, что ЦП ждет окончания чтения с диска, а ПП ждет непонятно чего... Или зависло намертво?
Зависло в ПП с запретом прерываний. Либо драйвер дисковода ждёт установки бита готовности в регистре 0177130. Либо произошёл TRAP4.
Есть подозрение на глюки старого программируемого таймера, который в 1515ХМ1-031, здесь поможет увеличение времени шага, в ячейку ПП 023260 записать значение 012024, это для нулевого и первого приводов.