Guarde la salida del comando en el archivo MS-DOS 1.x

27

Parece que [COMMAND]>[FILE]no funciona en las primeras versiones de MS-DOS. Estoy usando MS-DOS 1.25 y la expresión anterior da la declaración invalid argument.

Actualización : dado que es cierto que no funciona en DOS 1.x, entonces es posible obtener esa salida usando alguna funcionalidad de virtual box o, digamos, obteniendo la salida de algunos archivos de registro.

Blake
fuente
18
¿Por qué estás usando DOS 1.25?
Keltari
41
@Keltari: No hay notificaciones de actualización de Windows 10 molestas
Mark K Cowan
66
Si tiene alguna otra pregunta sobre su configuración que no esté en el tema aquí, pruebe Retrocomputing , otro sitio de SE dedicado a ese tipo de cosas. (
Divulgación
44
¡Esta pregunta me hace sentir joven otra vez!
Dmitry Grigoryev
99
MS-DOS 1.x es esencialmente un clon CP / M, donde Ctrl-P activó la copia de la salida de la consola a la impresora. Por lo tanto, también es posible un enfoque similar en MS-DOS.
Thorbjørn Ravn Andersen

Respuestas:

5

puede usar las instalaciones de depuración de su máquina virtual (o gdb / algo más) para leer la memoria directamente. ms-dos no tiene protección de memoria ni es un sistema de tareas múltiples, por lo que puede leer la memoria de la máquina virtual, puede leer la máquina virtual vga para la entrada.

la documentación dice que existe un comando

info vgatext -- print the contents of the VGA framebuffer formatted as standard text mode

la sintaxis correcta para obtener la salida es: ejecutar VirtualBox --debug --startvm msdos1.25, luego, en la consola del depurador: info vgatext

salida copiada y pegada:

The COMPAQ Personal Computer DOS                                                
Version 1.11                                                                    


(C) Copyright COMPAQ Computer Corp. 1982                                        
(C) Copyright Microsoft 1981, 82                                                


A>                                                                              











--------------------------------------------------------------------------------
VBoxDbg> 

Por lo tanto, puede escribir una secuencia de comandos del depurador que se enganche en un valor de memoria dentro de la memoria de su programa y volcar la pantalla vga cuando un programa genera / o puede escribir una secuencia de comandos que pause la CPU, guarde contenido de manera constante, si la salida cambia, guarda contenido actualizado, continúa cpu run

Algunas opciones para investigar son:

  • encuentre cómo escribir un script de depuración para volcar el contenido de la memoria de su aplicación

  • encuentre alguna solución de depuración del controlador vga / puerto serie / memoria para quemu / dosbox / virtualbox

  • encontrar algún programa de utilidad ANTIGUO de los años 80 que tal vez alguien escribió allí para este propósito

  • agregue la etiqueta de freedos aquí (o incluso mueva / repita su pregunta en gran stackoverflow, supongo que algunos gurús deberían saber algo sobre problemas como este

Actualizaré más tarde si encuentro algo interesante, pero ¿pueden revelar algunos detalles sobre por qué están utilizando 1.25? ¿Funciona este programa en las versiones más recientes de msdos? Apuesto a que puedes encontrar algún hacker de ensamblaje joven ansioso por parchear este programa a una versión más nueva (o agregar salida de archivo con asm) por una pequeña tarifa

extraño
fuente
¿Podría darnos información adicional sobre ese proceso, por favor?
Blake
@Blake actualizado, parece info vgatextobras Después de todo todo lo que tiene que hacer es escribir un guión correcto para depurador parece
strangeqargo
La información que diste es muy interesante. De hecho, puede ser absolutamente utilizable para mi situación. Estoy usando esto para una aplicación antigua que quiero entender cómo funciona dándole entrada y obteniendo salida automáticamente. Puede que no sea la mejor manera, pero quiero hacerlo así. Gracias por la respuesta, solo dame uno o dos días para leer este manual y escribir algún tipo de guión (espero que sea posible) y te daré información sobre si funciona. Muchas gracias.
Blake
1
Si aún no he marcado la respuesta, definitivamente marcaría esto. Gracias por toda su ayuda chicos.
Blake
1
Necesitaba obtener la salida de mi aplicación como texto. En la documentación se menciona cómo usar la consola de depuración en el terminal. Usando VBoxManaged debugvms <nombre de la VM ya iniciada en modo de depuración> info vgatext, te imprime la pantalla en modo terminal y las usa usando la redirección y algún tipo de análisis simple que logré obtener lo que necesitaba. Gracias.
Blake
40

Parece que [COMANDO]> [ARCHIVO] no funciona en las primeras versiones de MS-DOS.

Estoy usando MS-DOS 1.25 y la expresión anterior da el argumento argumento no válido

Eso es correcto. Lo que quieres hacer no es posible en v1.25.

La redirección de comandos (junto con muchas otras mejoras) se agregó en v2.0.

La versión 2.0 de MS-DOS (equivalente a PC-DOS 2.0) se lanzó por primera vez en marzo de 1983. Era, en retrospectiva, un nuevo sistema operativo (aunque se tuvo mucho cuidado para mantener la compatibilidad con la versión 1 de MS-DOS). Contenía muchas innovaciones significativas y características mejoradas, incluidas las enumeradas en la página siguiente.

  • Soporte para disquetes de mayor capacidad y discos duros.
  • Muchas características similares a UNIX / XENIX, incluida una estructura jerárquica de archivos, identificadores de archivos, redirección de E / S, canalizaciones y filtros
  • Impresión de fondo (cola de impresión)
  • Etiquetas de volumen, más atributos de archivo adicionales
  • Controladores de dispositivos instalables
  • Un archivo de configuración del sistema personalizable por el usuario que controla la carga de controladores de dispositivo adicionales, la cantidad de búferes de disco del sistema, etc.
  • Mantenimiento de bloques de entorno que podrían usarse para pasar información entre programas
  • Un controlador de pantalla ANSI opcional que permitía a los programas posicionar el cursor y controlar las características de la pantalla de manera independiente del hardware
  • Soporte para la asignación dinámica, modificación y liberación de memoria por parte de los programas de aplicación.
  • Soporte para intérpretes de comandos de usuario personalizados (shells)
  • Tablas del sistema para ayudar al software de aplicación a modificar sus formatos de moneda, hora y fecha (conocido como soporte internacional)

Fuente Programación avanzada de MS-DOS por Ray Duncan


¿Qué puedo hacer en su lugar?

Una posible solución sería capturar la pantalla (como texto) y analizar la salida.

Las respuestas a esta pregunta Captura de pantalla en DOS enumeran algunos programas TSR (Terminar pero permanecer residente) que son puntos de partida para que investigue.

DavidPostill
fuente
13
Buena respuesta. Solo los verdaderos Superusuarios se preocuparían por MS-DOS 1.0.
Digo reinstalar a Mónica el
Gracias por su respuesta, lo aprecio pero quiero encontrar una manera (digamos usando funciones de caja virtual) por eso no lo marcaré como respuesta por el momento.
Blake
@Blake Una posible solución sería capturar la pantalla (como texto) y analizar la salida. He actualizado la respuesta.
DavidPostill
Lamento de antemano el retraso de los resultados al intentar utilizar estos programas tsr. Tan pronto como tenga acceso a mi máquina, se lo haré saber. Es una gran alternativa y espero que funcione correctamente. ¿Es necesario instalar otros programas (que, por ejemplo, crean este entorno tsr)?
Blake
1
@Blake No es que lo recuerde, pero han pasado muchos años desde que usé DOS. No se preocupe por los retrasos en sus pruebas;)
DavidPostill
-3

Puede instalar C y escribir un programa para tomar los comandos dos, ejecutarlos en un shell y registrar los resultados. Le recomendaría que use Borland Turbo C 2.01. También puede escribir código en Quickbasic si está buscando escribir código ... ;-)

https://archive.org/details/msdos_borland_turbo_c_2.01

Personalmente, usaría DOS 5.5 o 6 dado que hay algunas cosas adicionales que obtendría.

Gandolf989
fuente
1
¿Funciona esto en v1.25?
Blake
Y si es así, ¿puede darme alguna ayuda adicional para instalar C y cómo registrar los resultados, muchas gracias.
Blake
1
@Blake no funciona en v1
edc65
Usar C para escribir un programa sería una respuesta útil si mencionara las API que usaría al escribir dicho programa. (Y, por supuesto, tomó en cuenta el requisito explícito en la pregunta de que el código sea compatible con DOS 1.x.) Esta respuesta tampoco. Simplemente envía un enlace a un compilador popular / paquete IDE, sin orientación sobre la relevancia de dicho conjunto de herramientas.
Cody Gray
El compilador de C tiene facilidades para stdin y stdout y puede ejecutar comandos de shell. No sé lo que el compilador funcionaría en DOS 1. Si están tan preocupados por el mantenimiento de la junta, una mejor pregunta sería ¿por qué escribir código a nadie para MS DOS ... 1
Gandolf989