на асме
А я тут пытаюсь древнее оборудование из местного университета починить (или хотя бы понять причину проблемы), приходится сидеть и дебажить DOS-приложение. Как раз хотел узнать, какой инструментарий для этого лучше всего использовать. Я вчера обплевался, пока пользовался debug-версией DOSBox'а, он работает поразительно плохо. Сейчас перекатился на Turbo Debugger в том же DOSBox'е, но есть у меня подозрение, что есть варианты и получше. То есть я сейчас сижу в IDA 5.0 Freeware и изучаю/размечаю инструкции, а в TD собственно дебажу. Но вангую, что есть какой-то более современный подход, о котором я не знаю.
Знал бы я, что мне надо. У меня есть проприетарный бинарник под DOS, мне хочется видеть, как он исполняется: ставить брейкпоинты (на чтение/изменение памяти, на исполнение кода), видеть стек в удобочитаемом виде, etc. Сейчас для меня это выглядит так:
А что случилось то? Приложение работало-работало и вдруг перестало? Или вышел из строя старый-старый компьютер, а на более новом приложение не запускается?
у него двоякий вопрос и не совсем понятно что ему надо. с одной стороны он хочет "поченить древнее оборудование". а с другой он дебажит какой то код, который не связан никак с "древним оборудованием"
Есть компьютер пользователя с прикладным ПО, который запускается на Windows 98. Компьютер пользователя подключен по RS-232 к специализированному индустриальному компьютеру на x86 с ISA-картами, которые в свою очередь подключены к магическому научному оборудованию (см. https://www.horiba.com/fileadmin/uploads/Scientific/Downloads/UserArea/Fluorescence/Legacy/Complete_FluoroLog3_Manual.pdf). Этот индустриальный компьютер внутри себя не имеет никаких энергонезависимых хранителей, система грузится исключительно с дискеты. На дискете выдранный из Windows 98 MS-DOS, в котором запускается одна-единственная программа, которая рулит всем оборудованием через ISA и получает команды по RS-232. Сейчас, когда прикладное ПО пытается по RS-232 отправить команду «специализированному» проинициализировать оборудование, «специализированный» отвечает ему с ошибкой (код 11). Ошибка эта в мануале по научному оборудованию не отражается, поэтому я пытаюсь понять, в каком конкретно случае эта ошибка №11 возвращается по коду программы, запускаемой в MS-DOS на «специализированном» компьютере. Оборудование само по себе списано из другой лаборатории, от него остался только один письменный мануал и сам набор железа с кабелями. В каком оно состоянии — хз, почему оно не работает — хз. Вот пытаюсь разобраться.
А промышленный компьютер имеет органы управления (монитор, клавиатура)?
интересный квест, с лазерами, IT технологиями и подобное
Начнём с простого. система когда-нибудь работала на том месте где она сейчас находится? Когда она перестала работать? Что произошло или что изменилось примерно в то же самое время когда она перестала работать? Как выглядит загрузка индустриального компьютера? Всё ли в порядке или Ошибки уже появляются там?
В таких ситуациях только так. А то потом окажется что комп из розетки уборщица вырвала😂
Да. Это обычный PC времён 2001 года, просто грузится с дискеты. Софт на клавиатуру никак не реагирует, а так картинку по VGA на мониторчик показывает, в текстовом режиме буковки пишет от софта. Там ещё настройки BIOS'а слетели (батарейка была впаяна внутрь, пришлось по инструкциям в интернетах подпаивать новую снаружи), и я думаю, что это повлияло. Учитывая, что я избалованный мальчик без опыта установки всех интерраптов вручную, я не совсем представляю, что там могло пойти совсем не так, но думаю, что могло. Собственно, для этого я и пытаюсь разузнать, почему управляющая программа выдаёт ошибку (при попытке что именно сделать).
Могу предложить поставить следующие два (в одном) эксперимента. 1) Образ дискеты попытаться запустить на виртуальной машине. 2) Захватить трафик хитрой программы через RS232. Виртуализация в этом может помочь.
Нет, на месте, где вся система сейчас, — оно никогда не работало. Судя по мануалу по сборке у нас вроде как всё собрано верно и правильно, но человек, который пользовался когда-то этим устройством говорил, что был какой-то второй управляющий компьютер (возможно бэкапный), который пропал во время переезда лаборатории. Одна из возможных причин, как я писал выше, — сброшенный BIOS на промышленном компьютере. Либо что-то там в железках совсем сломалось механическо-электрическое, и тогда маловероятно, что я когда-нибудь это починю. Загрузка выглядит как загрузка обычного ПК, там есть доступ в Setup, бутменю, etc.
Уже всё сделано, я почему по-вашему прошу подсказать необходимые утилиты? :) Я уже загружаюсь с образа дискеты, уже запускаю в виртуалке, уже засниффал трафик ("трафик"), уже соединил виртуальным ком-портом программу с putty, уже заставил в виртуалке пытаться инциализировать оборудование по ком-порту отправив ему управляющую команду…
Вот идея с биосм очень хороша. Если в мануале про порты ничего нет то попробуйте методом тыка ставить диапазон портов и их номера . Еще вариант на идустриальном компе прервать загрузку по ctrl-c или F8, выйти в командную строку и сделать copy autoexec.bat con Возмржно параметры запуска спец программы чтото подскажут
Вот, по поводу взаимодействия индустриального ПК с оборудованием: там у самого оборудования есть какие-то мозги, которые уже управляют сервоприводами, щелями и прочими умными штуками. И вот когда я отправляю сам ручками команду по COM-порту «инициализируйся», то что-то таки начинает происходить (калиброваться): там внутри крутятся штуки, пытаются что-то сделать, но такое чувство, что взаимодействие происходит одностороннее и индустриальный комп какую-то информацию не получает и соответственно фейлится при инициализации с некой ошибкой, смысл которой я и хочу понять, изучив сам .exe-шник.
@echo off path a:\ prompt $p$g rem lh mwloadi /com2 /irq3 :re_run spectraq goto re_run А в мануале настройки биоса нет, к сожалению, это да.
Че за rem? Почему закоменчено? Что будет если откоментитьб?
Что в биосе с настройкой? Есть ли com2 и висит ли он на irq3?
Загрузит в верхнюю память (upper memory) вроде
Не-а, COM2 даже физически нет
На плате полюбе должен быть физически, просто не выведен на внешнюю часть корпуса.
Рекомендую проверить железо старой-доброй программой: http://old-dos.ru/index.php?page=files&mode=files&do=show&id=617
Это lh. А что за mwloadi?
так там еще каккой то spectraq в бесконечном цикле крутится автоекзек дальше не пойдет ведь? или это типа вечный перезапуск этой программы
Обсуждают сегодня