Кажется, что [COMMAND]>[FILE]
не работает в ранних версиях MS-DOS. Я использую MS-DOS 1.25, и приведенное выше выражение дает утверждение invalid argument
.
Обновление : так как это правда, что он не работает в DOS 1.x, то возможно получить этот вывод, используя некоторые функциональные возможности виртуальной коробки или, скажем, получая вывод из некоторых файлов журнала.
Ответы:
вы можете использовать средства отладки вашей виртуальной машины (или GDB / что-то еще) для непосредственного чтения памяти. MS-DOS не имеет защиты памяти и не является многозадачной системой, поэтому вы можете читать память виртуальной машины, вы можете читать виртуальную машину VGA для ввода.
документация говорит, что существует команда
info vgatext -- print the contents of the VGA framebuffer formatted as standard text mode
правильный синтаксис для вывода: run
VirtualBox --debug --startvm msdos1.25
, затем в консоли отладчика:info vgatext
скопированный вывод:
Таким образом, вы можете написать сценарий отладчика, который перехватывает значение памяти в памяти вашей программы и выводит экран vga, когда программа выводит данные, или вы можете написать сценарий, который останавливает процессор, сохраняет содержимое последовательно, если выходные данные изменяются, сохраняет обновленное содержимое, продолжается процессор запустить
Некоторые варианты для расследования:
узнайте, как написать сценарий отладки для выгрузки содержимого памяти вашего приложения
найти решение для отладки vga драйвера / последовательного порта / памяти для quemu / dosbox / virtualbox
найти какую-нибудь старую утилиту 80-х годов, которую, возможно, кто-то написал для этой цели
добавьте сюда тег Freedos (или даже переместите / повторите ваш вопрос о большом стеке потока, я полагаю, некоторые гуру должны кое-что знать о таких проблемах)
Я обновлю позже, если найду что-нибудь интересное, но не могли бы вы рассказать подробнее о том, почему вы используете 1.25, работает ли эта программа на более новых версиях msdos? Могу поспорить, что вы можете найти какого-нибудь молодого сборочного хакера, желающего за небольшую плату залатать эту программу до новой версии (или добавить вывод файла с помощью asm)
источник
info vgatext
работает после всего, все, что вам нужно сделать, это написать правильный сценарий для отладчика, как кажетсяПохоже, что [COMMAND]> [FILE] не работает в ранних версиях MS-DOS.
Это правильно. То, что вы хотите сделать, не возможно в v1.25.
Перенаправление команд (наряду со многими другими улучшениями) было добавлено в v2.0.
Исходное расширенное программирование MS-DOS Рэй Дункан
Что я могу сделать вместо этого?
Возможный обходной путь - захват экрана (в виде текста) и анализ выходных данных.
Ответы на этот вопрос Снимок экрана в DOS содержит список некоторых программ TSR (Terminate but Stay Resident), которые являются отправной точкой для изучения.
источник
Вы можете установить C и написать программу, которая будет принимать команды dos, запускать их в оболочке и регистрировать результаты. Я бы порекомендовал вам использовать Borland Turbo C 2.01. Вы также можете написать код на Quickbasic, если вы хотите написать код ... ;-)
https://archive.org/details/msdos_borland_turbo_c_2.01
Лично я бы использовал DOS 5.5 или 6, учитывая, что есть несколько дополнительных вещей, которые вы получите.
источник